先明确适配层级
已有 ESP-IDF 产品优先使用工作区的 board port 与 integration 层。新的操作系统或 MCU 平台则需要实现系统 Platform SPI、选择 renderer 与运行时,并验证其依赖能在目标平台运行。
产品应用 / 系统角色 / 产品服务
↓
PXA System 公共合约
↓
Platform SPI Renderer SPI Runtime SPI
↓
操作系统与板级驱动
1. 平台最小能力
准备分配器、单调时钟与墙上时钟、跨线程唤醒、日志、持久配置、随机数和签名校验。文件、网络、音频、传感器和显示电源按产品需要注册 provider。
先运行核心和 headless 测试,验证生命周期、事件分发与资源释放;不要一开始就把硬件 UI、网络和全量应用全部接进来。
2. 运行时与 renderer
Native runtime 与 PXA runtime 通过系统合约接入;PXA Host Core 在 libpxa,WAMR 是可选引擎适配。使用 AOT 时,编译器目标、ABI 与运行时配置必须成对验证。
Renderer 负责 surface 生命周期、UI 事务、Canvas、输入、主题快照和诊断。现有参考后端包括 headless 与 LVGL。平台公开接口避免暴露 ESP 驱动类型或 LVGL 私有对象。
3. 创建产品组合
pxsys_standard_system_create() 创建 registry、runtime、任务管理、角色、主题、renderer host、服务 registry 与事件 broker。产品随后绑定 renderer、应用、角色候选、服务与策略,再启动常驻角色和 Home。
Home、Settings、状态栏、导航栏、锁屏与权限提示等都由系统角色组织。产品通过被授权的候选覆盖角色,不必修改核心 dispatch。
4. 服务与权限策略
标准接口使用 system.*;产品扩展使用自己的反向域名与语义版本。为 provider 明确权限、并发、取消、版本和清理规则。平台资源句柄留在实现内部,避免跨边界传递驱动对象。
产品 Profile 选择可信发布者、服务访问策略、默认主题、预装应用和恢复策略。商城目录签名与应用发布者签名各有用途,应分别配置和验证。
5. 适配验收
- 核心在缺少可选 provider 时仍可编译,并明确返回能力不可用。
- Native 与 PXA 绑定呈现一致的身份、权限和生命周期行为。
- 应用退出或异常后,surface、异步任务和资源可以回收。
- 内存不足、签名失败、权限拒绝和安装中断都有可观察错误路径。
- headless、桌面与目标硬件各自通过相应测试。
当前系统合约仍在演进。新平台不能仅凭编译通过就宣称已兼容全部 PXA 应用。ESP 路径继续阅读ESP 板子构建。