固件架构
ECU A、B、C 和 D 共享一种通用架构,但 ECU A 还启用了 USB 功能。在本页中,我们将详细介绍每个 ECU 的固件架构,首先从较为简单的 ECU B、C 和 D 开始。
ECU B、C 和 D
ECU B、C 和 D 的固件包含六个任务:
- CAN 接收任务,通过由 CAN-FD 外设中断服务例程 (ISR) 填充的 流缓冲区接收并处理 CAN 消息。
- 诊断 RX 任务,通过由 CAN 接收任务填充的 流缓冲区接收并处理完整的(重构的)诊断消息。
- 主周期任务,以指定的时间间隔定期执行(通常为 10ms)。该任务负责更新固件中的各个模块。周期性的 CAN 消息传输即由该任务请求。
- Diag TX 任务,负责对诊断应答进行分片并发送,同时应用指定的流量控制设置。
- CAN 发送任务,负责发送通过 流缓冲区请求的 CAN 消息。任何需要通过 CAN 进行通信的任务均可请求发送消息。
- 错误处理任务,在需要处理和报告错误时被唤醒。
ECU B、C 和 D 固件的架构
ECU A
ECU A 的固件与 ECU B、C 和 D 完全相同,但额外增加了两项任务:
- USB 接收任务,用于接收 USB 命令并进行处理;
- USB 发送任务,该任务通过 USB 发送请求的数据(同样,通过 流缓冲区 )。
对于 ECU A,诊断命令也可以通过 USB 而非 CAN 发送。
ECU A 固件的架构
附加任务
在最新版本中,新增了一些任务,以方便用户轻松实现自定义任务。ECU A 可(可选地)使用这些任务来实现 gs_usb(candlelight)设备。