获取 ESP32-P4 参考工程。应用和板级适配开源;SDK 核心通过匹配的头文件与静态库交付。
先选择一条接入路径
| 路径 | 适合什么项目 | 需要你实现什么 |
|---|---|---|
| 仓库根工程 | JC1060P470C_I_W_Y、JD9165 1024×600 屏、P4+C6;需要主业务、BLE 通知、视频、地图和镜像 | 指定板型已接无线和显示;写入本机授权,量产时替换模拟车况和执行器 |
examples/managed-terminal |
移植 Wi-Fi 主业务、主题、控车、HUD 与导航视频;单独使用时不能完成当前 App 首次添加 | main/board_driver.c 中的 BSP 与显示/车辆驱动 |
两者是独立固件,不要把根工程的 main/terminal.c 塞进 Managed 工程。自 revision 24 起,Managed 可通过启动前的 moto_terminal_set_mirror / moto_terminal_set_audio 接入独立镜像和 Wi-Fi 音频,见投屏与音频。BLE 辅助实例、底图存储和同 owner 的连接接管仍采用 Core。感应解锁还需接好采样、校准存储和真实解锁。
核对版本并导入 SDK
先阅读所选仓库版本的 docs/VALIDATION.md 和 SDK 包的 BUILD_INFO.json,核对 CPU、ESP-IDF、FreeRTOS ABI 与构建配置。标注 ABI 7 的参考工程版本不能与 ABI 8 头文件/静态库混用;从接入团队取得配套版本。仅运行导入脚本不会自动完成源码迁移。
要使用本文的道路矢量功能,所选提交还须包含 main/route_vector_store.c、main/route_vector_view.c,并声明要求 r25;旧图片地图示例须先升级。若公开默认分支尚无配套版本,向接入团队取得完整工程与二进制包后再继续。
本网站当前接口说明以 SDK 1.0.0 / revision 27 / ABI 8 为基线;公开工程按其所选提交声明的包版本接入,不把 SDK 新增接口视为模板已经完成的功能。
以下命令使用 ESP-IDF 5.5.4,实际工具链以配套工程为准。将原始 ZIP 导入完整工程;不要先进入包内 examples/customer,那是另一套待实现 BSP 的模板。在自己的板上移植托管入口时,再按准备 SDK编译模板。
git clone https://github.com/oounet/moto-esp32p4-example.git
cd moto-esp32p4-example
# 先切换到与交付包配套的仓库版本,再导入。
python3 tools/import_sdk.py /path/to/sdk-package.zip
. /path/to/esp-idf-v5.5.4/export.sh
导入器校验包并写入 vendor/moto-sdk。它不签发设备授权;按设备配置读取硬件标识、配置可信公钥、写入本设备 .motolic,再按下面的 BLE 首次添加与 Wi-Fi 引导步骤连接。APP 和后台材料先按准备清单拿齐。
根工程:完整仪表应用
在仓库根目录执行:
python3 tools/fetch_lvgl.py
idf.py build
| 要看什么 | 仓库根目录下的文件 |
|---|---|
| Wi-Fi、BLE 与镜像实例的创建及事件分流 | main/terminal.c |
| 授权读取与出厂配置 | main/factory_license.c、main/factory_usb.c |
| 控车和车况 | main/terminal_board.c |
| HUD、视频解码与显示 | main/hud_view.c、main/terminal_video.c |
| 底图接收和显示 | main/route_map_*.c、main/route_vector_*.c;见离线地图 |
| Android 通知、iOS ANCS | main/notice_view.c、main/ancs_adapter.c |
移植时先确认屏幕、无线协处理器、引脚和分区,再替换相应驱动;不要把这些板型配置当成所有 P4 开发板的默认配置。
指定板型按以下顺序验证:
- 编译、按设备配置烧录并写入授权。
- App 登录并打开蓝牙,搜索车辆、确认 PIN 与云端绑定。
- 按提示加入车辆 Wi-Fi,确认主业务认证并切换主题。
- 重启开发板,核验绑定保留和自动重连。
根工程已有 BLE/ANCS、视频和地图接线;按功能清单继续启用和核验,无需从零拼出第二个 SDK 任务。移植前先读线程与实例架构。
Managed 工程:主业务最小接入
从仓库根目录执行:
cd examples/managed-terminal
idf.py build
该目录的 main/main.c 负责启动与取事件;main/board_driver.c 是你要实现的 BSP。它默认不读取真实授权、不启动实际无线或解码器,因此构建成功后仍需要硬件适配。它没有当前 App 首次添加所需的独立 BLE 实例;验证完整手机接入请使用 Core 根工程。
调用示例(相对于本工程 snippets/) |
用途 |
|---|---|
quick_start.c、api.c |
托管网络启动、事件与停止释放 |
vehicle.c、faults.c |
控车完成、完整状态和故障上报 |
video.c |
视频准备、重组与呈现回执 |
optional_features.c |
路线/位置、音乐和仪表选择 |
advertising.c、ad_receipts.c、bulk.c |
媒体广告、持久回执和独立数据传输 |
ota.c |
OTA 端口调用,安装仍需板级实现 |
bluetooth.c |
高级外部传输示例;不可与 config.network 同用 |
产品移植边界
- 示例车况为演示数据,量产接真实 CAN/UART 控制器。
- P4+C6 示例未接通 HFP;通话音频需要相应硬件与驱动。
- 广告需要播放器、安全空闲判定和持久回执;回执模板的 64 条容量只是示例上限。
- OTA 示例演示接收和校验,不写 Flash、不重启;真实升级另接签名、分区、掉电恢复与回滚。
烧录前确认板型与分区。应用及第三方依赖许可见仓库 LICENSE、THIRD_PARTY.md。
