2. TRAVEO双核架构与网关任务划分
TRAVEO T2G系列微控制器在车载网关设计中广泛采用Cortex-M4与Cortex-M0+构成的双核架构。理解这两个内核的定位差异,是进行网关任务划分、核间通信设计和实时性保障的前提。Cortex-M4是主运算核,通常运行在80MHz至350MHz(视具体型号如CYT4系列而定),带有FPU、DSP指令和较高的中断响应能力,适合承担协议栈解析、路由查表、报文转发、诊断处理等计算密集且实时性敏感的任务。Cortex-M0+则是低功耗、低门数的辅助核,主频通常在40MHz至100MHz之间,指令集精简,适合承担系统监控、安全状态机、低功耗管理、传感器采集、看门狗喂狗以及部分低速外设的轮询处理。
双核并非对称多处理(SMP),而是典型的主从异构架构。两个内核拥有各自独立的NVIC、SysTick和部分外设访问权限,通过共享SRAM、IPC中断和硬件信号量实现协作。这种结构带来的核心价值在于:把安全关键或低功耗相关的任务从主核卸载出去,使主核能够专注于高吞吐的通信转发,同时通过硬件隔离降低故障传播风险。
核间通信(IPC)机制
双核协作的关键在于IPC。TRAVEO T2G提供了多种IPC手段,实际工程中通常组合使用:
- IPC中断通道:每个内核可以向对方触发专用中断(如M4通过IPC_STRUCT向M0+发送事件,M0+通过NVIC响应)。这是最直接的“通知”机制,适合命令下发和事件上报。
- 共享SRAM:两个内核可访问同一块SRAM区域,用于传递较大的数据块,如CAN报文缓冲区、诊断请求/响应数据。需要配合软件信号量或硬件自旋锁避免竞争。
- 硬件信号量:TRAVEO提供硬件信号量单元,用于对共享资源的互斥访问,避免两个内核同时写同一缓冲区导致数据损坏。
- 消息队列:在共享SRAM上实现环形缓冲区,M4写入、M0+读取(或反之),通过IPC中断通知对方有新消息。这种方式适合高频、小数据量的状态同步。
一个典型的IPC交互示例:M4在CAN总线上收到一帧需要安全校验的报文,将报文ID和数据写入共享SRAM的发送缓冲区,然后触发IPC中断通知M0+。M0+在中断服务程序中读取缓冲区,执行安全校验或状态判断,将结果写回接收缓冲区,再触发IPC中断通知M4。M4在中断中读取结果,决定是否转发该报文。整个过程在微秒级完成,不影响网关的实时转发性能。
网关协议栈任务分配
网关协议栈的任务分配需要遵循“主核处理通信、从核处理安全与监控”的原则。具体来说:
| 任务类别 | 分配内核 | 理由 |
|---|---|---|
| CAN/CAN FD 报文收发与过滤 | Cortex-M4 | 需要高吞吐和低延迟中断响应 |
| 路由表查找与报文转发 | Cortex-M4 | 计算密集,依赖M4的DSP和缓存 |
| UDS诊断会话管理 | Cortex-M4 | 协议栈复杂,需要较大代码空间 |
| SecOC 安全校验 | Cortex-M4(可配合HSM) | 加密运算需要M4的运算能力 |
| 系统电压/温度监控 | Cortex-M0+ | 低速、周期性,适合从核轮询 |
| 安全状态机与故障降级 | Cortex-M0+ | 独立于主核,确保故障时仍能响应 |
| 低功耗模式管理 | Cortex-M0+ | 从核功耗低,适合常驻运行 |
| 看门狗与心跳监测 | Cortex-M0+ | 独立监控主核运行状态 |
这种分配方式的核心逻辑是:把“必须持续运行、不能因主核故障而失效”的功能放在M0+上,把“需要高性能计算、可以容忍短暂中断”的功能放在M4上。例如,当M4因为软件缺陷或高负载而卡死时,M0+仍然可以检测到心跳丢失,触发安全状态机,将网关输出切换到安全默认值,并记录故障码。
实时性与安全隔离设计
实时性方面,M4侧的中断优先级需要精心配置。CAN接收中断应设置为较高优先级,确保报文不会因为其他任务而丢失。路由转发任务通常放在中断服务程序或高优先级RTOS任务中,转发延迟目标一般控制在100微秒以内(具体取决于总线负载和报文优先级)。M0+侧的任务周期可以放宽到毫秒级,因为监控和低功耗管理对实时性要求相对较低。
安全隔离方面,TRAVEO T2G提供了内存保护单元(MPU),可以为两个内核分别配置访问权限。M0+的代码和数据区域应设置为M4不可写,防止主核故障时意外篡改安全监控逻辑。同样,M4的关键路由表和安全配置区域也应设置为M0+只读或不可访问。这种硬件级隔离是功能安全(ISO 26262)设计的重要组成部分。
总结来说,TRAVEO双核架构为车载网关提供了一个天然的任务隔离平台。M4负责“快”和“多”,M0+负责“稳”和“省”。通过合理的IPC设计、任务分配和MPU隔离,可以在满足实时转发需求的同时,实现功能安全和低功耗管理的双重目标。