开始使用

PXA DEVELOPER GUIDE

环境与源码准备

获取工作区、系统依赖和主机工具,建立可重复的开发环境。

中文指南 · 4 分钟阅读 · 开发版

获取工作区与系统仓库

工作区与系统核心分别维护。工作区中的 deps/pxa-system 是独立 checkout;如果该目录已经存在,不要覆盖它。

git clone https://github.com/SmartArduino/pxa-workspace.git
cd pxa-workspace
git clone --recurse-submodules https://github.com/SmartArduino/pxa-system.git deps/pxa-system
git -C deps/pxa-system submodule update --init --recursive

已有环境先记录两个仓库的提交号。WAMR 版本以 deps/pxa-system/config/wamr.json 为准,避免单独升级运行时导致 AOT ABI 不匹配。

主机依赖

准备 Git、Bash、Python 3.11+、CMake、C/C++ 编译器、支持 WebAssembly 的 Clang 与 OpenSSL。桌面构建需要 OpenSSL、LZ4、SDL2、libpng 开发库;使用 WASI libc 的应用还需要匹配的 WASI SDK。

Ubuntu / Debian 的常用基础依赖示例:

sudo apt-get install git build-essential cmake ninja-build python3-venv \
  clang lld openssl libssl-dev liblz4-dev libsdl2-dev libpng-dev
python3 -m venv .venv
. .venv/bin/activate
python -m pip install -e tools/pxadb
pxadb --help

发行版的 Clang 包不一定包含完整 WASI sysroot。出现缺少标准头文件或链接器错误时,检查 WASI_SDK_DIR 与应用的 CMake 配置;只设置一个不存在的目录不会安装工具链。首次 AOT 打包可能还需下载或构建匹配的 WAMR 编译器。

检查系统构建

cmake -S deps/pxa-system -B build/pxa-system
cmake --build build/pxa-system
ctest --test-dir build/pxa-system --output-on-failure

桌面模拟器默认获取固定 LVGL 版本。离线构建可提供 -DPXSYS_LVGL_SOURCE_DIR=/path/to/lvgl。这一步验证主机侧核心和依赖,不代表真实板子已经适配。

ESP 固件环境

只做桌面 App 开发可暂时跳过 ESP-IDF。编译固件前,先安装板子需要的 ESP-IDF 及目标工具链,并在当前终端执行其 export.sh,确认 idf.py --version 正常。

工作区公共 manifest 当前声明 IDF >=5.5.4;ESP32-S31 等目标还需要支持该芯片的 IDF / 工具链版本。应同时检查对应板子的 README、board.cmake 与依赖锁文件,而不是把最低版本当作所有板子的推荐版本。

目录约定

目录 用途
deps/pxa-system 系统核心、SDK、示例与打包器
firmware/boards 每块板子的配置和驱动
local/apps.toml 本机源码 catalog,让开发命令省去 --source-root
local/my-apps 本教程的个人 App 源码
local/app-output 打包产物
local/dev-logs 开发循环日志
local/simulator 模拟器持久状态

下一步:构建并运行第一个应用。

完成第一个 App 后,建议设置 local/apps.toml,再选择合适的模拟器 Profile。

获取开源应用集合(可选)

想直接运行商城、天气或游戏示例,可在工作区根目录添加第三个独立仓库;已有该目录时不要覆盖:

git clone https://github.com/SmartArduino/pxa-apps.git local/pxa-apps

这份仓库由工具自动发现,通常不需要逐个登记源码路径。完整说明见开源应用仓库 pxa-apps。

参考实现与资料master/README.zh-CN.md ↗main/README.zh-CN.md ↗main/idf_component.yml ↗

输入关键词,搜索全部教程。