汽车电子诊断:DEM 触发 DTC 到底存不存 NVM?怎么存?

汽车电子诊断:DEM 触发 DTC 到底存不存 NVM?怎么存?

在汽车嵌入式软件开发(特别是 AUTOSAR 架构体系)中,很多刚接触诊断模块(DEM)的同学都会有一个直观的误解:“只要 Monitor 报了 FAILED,DTC 不就应该立刻存入 NVM(非易失性存储器)吗?”
答案是:完全不是!
如果真这么干,Flash 芯片可能会在短时间内因为频繁擦写而报废。为了兼顾 Flash 寿命下电安全内存资源限制,AUTOSAR DEM 内部设计了一套极其严密的存储与置换机制。今天我们就来深度扒一扒 DEM 到 NVM 的底层逻辑与核心配置。
一、 拨云见日:Failed 故障的“两步走”生命周期
当底层的 Diagnostic Monitor 调用 Dem_ReportErrorStatus() 汇报了一个 DEM_EVENT_STATUS_FAILED 时,数据并不会瞬移到 NVM 里,而是要经历两个阶段:
1. RAM 阶段(开辟坑位)
故障汇报后,首先通过 DEM 内部的去抖机制(Debounce)。确认滤完波、真正达到 Failed 条件时,UDS 状态位的 Bit 0 (testFailed) 置 1。此时,DEM 会在 RAM 的事件内存(Event Memory) 中为该 DTC 分配空间,并抓取当前的冻结帧(Freeze Frame)和扩展数据(Extended Data)。
2. NVM 阶段(同步存盘)
RAM 里的数据何时同步到 NVM,取决于具体的存储策略。除了少数涉及安全(如气囊)或排放(OBD)的核心故障会配置为立即存盘(Immediate Storage)外,绝大多数普通故障平时都只躺在 RAM 里,只有当车子熄火、ECU 走下电流程调用 Dem_Shutdown() 时,才会通过 NvM_WriteAll 集中下电存盘
二、 核心配置:掌控存储时机的四大“开关”
在 DaVinci Configurator 或 EB Tresos 等工具中,以下配置直接决定了 DTC 的存储命运:
1. 决定何时写 NVM

  • DemImmediateNvStorage (Boolean)
    • True:一旦触发存储条件,立刻异步调用 NvM_WriteBlock 写入 Flash(防猝死掉电)。
    • False:平时只住 RAM,下电时统一进 NVM(保护 Flash 寿命)。


  • DemEventMemoryEntryStorageTrigger (Enumeration)
    • DEM_STORAGE_ON_FAILED:只要 Bit 0 置 1,立马触发存储流程。
    • DEM_STORAGE_ON_CONFIRMED:必须等故障确认为历史故障(Bit 3 置 1)时才触发存储。


2. 决定空间与通道

  • DemMaxNumberEventEntryPrimary:主内存能存多少个 DTC。配小了,新故障就挤不进来。
  • DemNvRamBlockIdRef:DEM 与 NvM 模块的通道绑定。这里的 Block 长度必须与 DEM 的数据量完美匹配,否则写入直接报错。

三、 内存满了怎么办?深度解析 DEM_DISPLACEMENT_FULL
如果车子开久了,RAM 里的事件内存被存满了,此时又来了一个新的 DTC 申请要空间,该怎么办?DEM 启动了“末位淘汰制”——事件置换策略(Displacement Strategy)
在几种置换策略中,DEM_DISPLACEMENT_FULL 是最智能、考虑维度最完整的“冷酷裁判”。它会通过三道过滤器来决定淘汰谁:



为什么选 FULL 而不是 PRIO_OCC

  • DEM_DISPLACEMENT_PRIO_OCC:只看优先级和时间。哪怕一个低优先级的故障此时此刻正在发生(Active),只要它时间足够老,也会被无情踢掉,这在工程上存在漏报当前故障的风险。
  • DEM_DISPLACEMENT_FULL:引入了状态保护。它会死保当前正在发生(Active)的故障,优先去捏软柿子——踢掉那些虽然优先级一样、但此刻已经好了的(Passive)历史故障。

四、 工程师避坑指南(Debug 检查清单)
在实际项目中,如果你遇到“明明报了故障,但在 NVM 里死活找不到”的 Bug,可以按照以下清单对号入座排查:

  1. 直接拔电源测试:测试时如果没有走标准的下电流程(没触发 Dem_Shutdown),而 DTC 又是 DemImmediateNvStorage = False,那么 RAM 里的数据直接烟消云散,重新上电当然找不到。
  2. 踢到了硬骨头:内存满了,但里面全是 Priority 1 的核心安全故障,你新报的是个 Priority 3 的娱乐系统故障。根据 FULL 策略的第一关,新故障直接被 Displacement Failed 抛弃。
  3. OBD 的免死金牌:如果 ECU 支持 OBD,某些涉及排放法律法规的 DTC 拥有最高豁免权,无论内存怎么满,置换机制都绝对碰不得它们。

总结: DEM 的存储不是一拍脑门的即时行为,而是 RAM 缓冲、NVM 异步、状态机控频、置换策略兜底的组合拳。摸透了这几个参数,诊断开发和测试就能游刃有余。

编辑于 2026-07-03 · 著作权归作者所有
相关文章
既想要家用舒适又要长途自驾靠谱,怎么判断一辆车到底值不值得买?小米用户称天冷前轮转向会发出「咯噔」声,官方称是正常现象,车企口中的「阿克曼角」现象到底是怎么回事?雷军提出车内空间不该固定,小米澎程主打「空间自定义」,这有必要吗?会不会重新定义未来家用车的设计逻辑?技术推陈出新,豪华车的「安全」上限该如何突破?技术推陈出新,豪华车的「安全」上限该如何突破?领克语音助手夜间误关大灯引发撞车,这是怎么回事?车企该怎样解决语音控制系统的安全问题?如何看待大象主观说车锁单新一代SU7?一文理清全主动智能底盘,主动悬架800V和48V之争的真相雷军提出车内空间不该固定,小米澎程主打「空间自定义」,这有必要吗?会不会重新定义未来家用车的设计逻辑?以前没有手机导航的时候,是怎么在开车????如何看待新一代小米su7减配成1个128线激光雷达+1个毫米波雷达,而尚界Z7搭载896线激光雷达?让油车车主羡慕的电车功能是什么?汽车上全电控装置越来越多,你认为哪些应该电控,哪些纯机械体验更佳?小米用户称天冷前轮转向会发出「咯噔」声,官方称是正常现象,车企口中的「阿克曼角」现象到底是怎么回事?小米的车祸似乎很难看到行车记录仪的视频,这是什么原因?雷军提出车内空间不该固定,小米澎程主打「空间自定义」,这有必要吗?会不会重新定义未来家用车的设计逻辑?200元内哪款家用智能摄像头真正称得上带娃看护 “科技神器”?鸿蒙智选海雀智能摄像头5 4K版,让我这个上班族宝妈彻底告别看娃焦虑!技术推陈出新,豪华车的「安全」上限该如何突破?汽车上全电控装置越来越多,你认为哪些应该电控,哪些纯机械体验更佳?汽车上全电控装置越来越多,你认为哪些应该电控,哪些纯机械体验更佳?