保持驱动所有权
已有产品不必迁移全部板级实现。把 adapter 放在原 BSP 旁边,让它包装公开 Board、显示和控制 API。通用 integration 和系统核心不包含产品私有类。
参考模板
查看 templates/legacy-board-adapter/legacy_board_adapter.cc.example。模板的 Display() 默认返回空指针,必须改成真实显示对象;legacy_* 或示意调用不代表现成接口。
实施顺序:
- 确认原固件已完成 LCD、LVGL 与输入初始化。
- adapter 的
initialize复用已初始化资源,避免重复创建总线或显示任务。 display返回有效显示,display_profile描述真实逻辑尺寸和安全区。- 注册
pxa_board_port_t,检查注册结果。 - 在显示准备好后调用
pxa_integration_start()。 - 确认旧 UI 与 PXA 对 Home、输入和渲染资源的所有权安排。
引入系统组件
可把系统仓库作为 component 或加入 EXTRA_COMPONENT_DIRS。LVGL renderer、WAMR、产品 provider 和 UI 由产品显式选择;不要以引入核心仓库代替完整产品组合。
公共依赖与原固件若使用不同 LVGL 主版本,需要先处理兼容性。板级数据分区和应用信任策略也必须显式配置。
常见冲突
| 冲突 | 处理方向 |
|---|---|
| 两个显示初始化入口 | 由原 BSP 保持唯一初始化,adapter 只引用 |
| 旧 UI 抢占触控 | 明确输入路由和应用切换所有权 |
| LVGL 锁与任务冲突 | 保持原产品的线程与锁约定 |
| 退出 App 后黑屏 | 检查系统角色恢复与显示资源回收 |
| 通用模块引用产品头文件 | 将映射移回 adapter |
完成接入后使用 Hello、PXADB 截图与重复启动测试验证,再逐步替换系统角色或增加产品服务。