欢迎光临
我们一直在努力

源码级剖析:CanNm_MainFunction里的状态机跳转为何总比预期慢了50ms?

如果你正被AUTOSAR网络管理中的莫名延迟折磨,明明配置表里写的是10ms周期,状态跳转却总是慢吞吞地多拖上几十毫秒——那么这篇文章就是为你准备的。我们从一个真实的生产故障开始,一把剥开CanNm的层层封装,直到MCU中断的硬件寄存器。

一、问题现场:一个“不可能”的唤醒延迟

故障现象

我们有一套基于NXP S32K344的中央网关,跑着AUTOSAR Classic Platform R24-11规范,网络管理栈由Vector MICROSAR Classic 12.0提供。在一次整车网络睡眠唤醒测试中,我们监测到:从CAN总线上第一帧网络管理报文出现,到CanNm模块向ComM上报“网络已唤醒”事件,链路总耗时始终比设计值多出50ms左右。

按需求规范,CanNm_MainFunction每10ms被OS调度一次,理论状态机跳转延迟不会超过10ms。但实际抓取的时间戳显示,连续20次唤醒事件中,最小延迟62ms,最大74ms,中位数为68ms。对于需要100ms内完成第一帧应用报文上线的系统而言,这50ms的多余开销直接导致了一次SOP(Start of Production)评审中的严重偏差。

我们要搞清楚:这多出来的50ms到底消耗在哪里?

二、先看表面:CanNm_MainFunction的周期性逻辑

对于熟悉AUTOSAR Classic的工程师来说,CanNm_MainFunct

赞(0)
未经允许不得转载:171主机测评 » 源码级剖析:CanNm_MainFunction里的状态机跳转为何总比预期慢了50ms?
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址