目录

面向车辆工程的 openvela Cortex-M7 智能诊断终端

项目简介

本项目面向车辆工程监测终端的状态检查和交互需求,在飞凌 OK8MP 的 i.MX8M Plus Cortex-M7 实时核上完成 openvela 路径 A 平台移植。系统由 M7 独立启动,直接访问语音、以太网和 CAN 外设;网络可用时可通过安全 HTTPS 链路接入云端模型,由 AI Agent 调用本地 Tool 完成状态检查和硬件控制。

应用场景

系统适用于网络条件不稳定、又需要快速现场响应的车辆工程监测终端。离线语音、uORB 事件传递和声光反馈保留在 M7 本地执行;网络连通时,可进一步完成网卡、安全通信和 ECU 状态的综合检查。

主要功能

  • 完成 OK8MP Cortex-M7 的启动、DDR 链接、时钟、IOMUX、串口、GPIO、定时器、I2C、以太网和构建配置。
  • 提供 I2C 离线语音模块驱动,注册 /dev/voicesensor0,支持识别结果、RGB 指示灯和蜂鸣器控制。
  • 通过 uORB 主题 sensor_voice_command 向上层发布语音事件。
  • 在 M7 上直接驱动 ENET1/FEC 和 YT8521 PHY,完成 TCP/IP、DNS、TLS 1.2、X.509 和 HTTPS 通信。
  • 接入 FlexCAN1,注册 /dev/can0,完成 can_service、can_monitor、ISO-TP、UDS、OBD-II、DTC 和 ESP32-S3 模拟 ECU 台架验证。
  • 在 M7 实机运行 openvela AI Agent,提供语音、网络及 CAN 相关的 C Tool,并提供两个平台专用 Markdown Skill。

系统环境与依赖

  • 硬件:飞凌 OK8MP 开发板、以太网、离线语音模块、ESP32-S3 模拟 ECU、CAN 收发器与双绞线。
  • 软件:openvela/NuttX、GNU Arm Embedded Toolchain、GNU Make、U-Boot、Minicom 或等效串口终端。
  • 网络功能需要可访问互联网的以太网环境;LLM 交互需要在运行时配置有效的后端地址和 API Key。仓库不保存任何密钥。

目录结构

路径 内容
src/source/ 实际构建使用的 NuttX、apps、packages 与 OK8MP BSP 源码。
src/contributions/ 项目贡献审阅副本;实际构建以 src/source/ 为准。
src/scripts/ 构建、校验及主机兼容脚本。
src/tools/esp32-can-ecu/ ESP32-S3 模拟 ECU 台架源码。
docs/ 技术文档及决赛 PDF 提交材料。
tests/ XTS、语音、网络、CAN 与 Agent 实测材料。
demo/ 主固件、配置、校验和及部署验收说明。
presentation/ 决赛答辩 PPT 与演示视频。
作品原创承诺书.pdf 已填写的作品原创承诺书,保留原始签署内容。

项目说明与演示材料

构建方法

  1. 按 编译与上板指南 配置交叉编译环境。
  2. 在仓库根目录执行 sh src/scripts/build.sh competition。该脚本载入 nsh-agent 配置,再应用完整的 demo/firmware/runtime.config。构建必须使用工程指定的 GNU Make 和 arm-none-eabi- 工具链。
  3. 使用 sha256sum 或 shasum -a 256 校验生成的镜像。CAN 实测镜像及校验值见 tests/can/firmware/;XTS 测试镜像及校验值见 tests/xts/firmware/。

决赛主镜像为 demo/firmware/nuttx.bin,SHA-256 为 3e865de99fad8a6d2c51460b4ac059b9256fc37ec24e237574711e7cb8c6b8f0。 该镜像在原有语音、网络和 AI Agent 功能基础上集成了 FlexCAN1、CAN 服务、ISO-TP、UDS、OBD-II 以及 Agent 实时在线诊断功能;其与 CAN 实测目录中的 v4 镜像字节一致。

安装与运行

可直接部署的材料和验收命令见 demo 部署与验收说明。

  1. 将镜像先上传为启动分区中的 nuttx.bin.new,校验完成后再以同一文件系统内的 mv 原子替换为 nuttx.bin。

  2. 在 U-Boot 中执行:

    mmc dev 2
    fatload mmc 2:1 0x80000000 nuttx.bin
    md.l 0x80000000 2
    bootaux 0x80000000
  3. 进入 NSH 后,按需要启动语音、网络、CAN 服务或 ai_agent。完整命令见相应测试目录和技术文档。

XTS 测试时自动进入 NuttX

XTS 测试采用以下 U-Boot 自动启动配置,重启后自动加载 M7 镜像并进入 NuttX/NSH。设置前确认 nuttx.bin 已位于 mmc 2:1,并保存 printenv bootcmd 和 printenv bootdelay 的输出,以便恢复原启动方式。操作命令如下:

printenv bootcmd
printenv bootdelay
setenv m7boot 'mmc dev 2; fatload mmc 2:1 0x80000000 nuttx.bin; bootaux 0x80000000'
setenv bootcmd 'run m7boot'
setenv bootdelay 0
saveenv
reset

m7boot 保存镜像加载与 M7 启动命令,bootcmd 调用该命令,bootdelay 0 将自动启动等待时间设为 0。保存配置并执行 reset 后,在 M7 串口查看 NSH 输出。该配置用于 M7 独立启动;需要恢复 A53 Linux 启动时,将 bootcmd 和 bootdelay 恢复为此前保存的原值,再执行 saveenv。环境变量含义见 U-Boot 环境变量说明。

测试方法

  • 基础系统测试:tests/xts/。
  • 语音模块:tests/voice/README.md。
  • M7 原生安全网络:tests/network/README.md。
  • CAN、ISO-TP、UDS、OBD-II 与 Agent 在线诊断:tests/can/README.md。
  • 已完成的 Agent CAN Tool 调用:tests/agent/README.md。
  • CAN 源码、镜像与实测证据核查:设计核查记录。
  • 开发故障、修复记录与人为异常注入:故障档案。

已知限制

  • A53 Linux 与 M7 会竞争部分外设和内存资源;本项目的运行方式以 M7 独立启动为准。
  • CAN 台架使用 ESP32-S3 模拟 ECU,诊断数据用于验证协议和软件链路,不代表真实车辆 ECU 的数据覆盖范围。
  • AI Agent 的云端分析依赖网络和运行时配置;网络不可用时,本地语音、状态检查和声光反馈仍可运行。
关于
776.1 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号