SuperAPI AI 工具集

firmware-review

编程与开发

查看项目

更新于 10-15 21:36

技能介绍

用途:该技能用于对 BVR 四轮差速驱动底盘的 Rust 固件做代码审查,关注安全关键系统、实时控制与 CAN 总线通信。固件运行于 Jetson Orin NX,通过 SocketCAN(can0,500kHz)经 CAN 总线控制 VESC 电机控制器。

主要审查方向:一是看门狗实现,确认超时默认 500ms、每条有效命令调用 feed()、主循环检查 is_timed_out() 并触发 Event::CommandTimeout 进入安全状态;二是急停状态机,Mode 含 Disabled、Idle、Teleop、Autonomous、EStop、Fault,任意模式可进 EStop,但只有 Event::EStopRelease 才能回到 Idle;三是速率限制与加速度控制,审查最大加速 50.0 m/s²、最大减速 15.0 m/s²、最大线速度 5.0 m/s、角速度 2.5 rad/s 及方向变化检测;四是状态转换合法性,is_driving() 只允许 Teleop 与 Autonomous,is_safe() 只允许 Disabled、Idle、EStop 下改配置。

CAN 协议方面:审查 VESC 通信,ID 0-3 对应 FL、FR、RL、RR,扩展帧 ID 为 (command_id << 8) | vesc_id,数据大端序,duty 缩放至 ±100,000,状态帧需边界检查(data.len() >= 8)与心跳超时(默认 100ms)。LED 外设使用 0x0B00-0x0BFF 扩展 ID,由 StateLinked 模式自动按模式显示颜色。还审查 CAN 错误处理、Result 类型与 Mock CAN 支持。

代码规范方面:库 crate 用 thiserror、二进制 crate 用 anyhow,错误日志用 ?e;异步采用多线程 Tokio,使用 mpsc/watch 通道与 tokio::spawn,避免异步中阻塞操作;模块文档使用 //! 与 ///;共享依赖使用 version.workspace = true。

限制:本技能针对特定 BVR 固件与其架构(18 个 crate,主守护进程 bvrd)。具体安装命令、调用方式、是否收费及可用平台暂未提供。