VDC集成—控制器故障
背景:算法模型集成导致控制器死机的主要原因
1. 资源类原因
a. CPU过载
- 新集成的算法模型计算量巨大,导致任务执行时间超过预设的周期
- 最终触发看门狗超时,导致控制器复位
b. 内存不足
- RAM不足或Flash不足
c. 总线负载过高
- 当总线负载率超过一定阈值(如CAN总线通常建议低于70%)
- 可能导致高优先级报文延迟,低优先级报文无法发送(“饿死”)
- 进而导致基于这些报文的功能超时或故障,连锁反应引发死机
2. 软件与集成类原因
a. 时序与并发问题
b. 通信协议或配置错误
- 报文丢失或超时处理不当
- 信号处理错误
c. 算法模型缺陷
- 数值不稳定产生非法数值
- 数组越界
d. 工具链与编译问题
- 例如高优化等级可能对新代码产生错误的优化
3. 硬件与底层软件原因
a. 外设驱动冲突
b. ECU硬件限制
- 例如新增算法计算强度极高,可能导致芯片温度过高,触发过热保护
概念:复位和卡死
1. 复位
a. 定义
控制器重启了。它从程序的起点(通常是main()函数的开头)重新开始执行。
b. 外部状态
- 指示灯:会先熄灭再重新点亮
- 通信:CAN/LIN等通信会短暂断开后又重新连接(能看到重新上线报文)
- 执行器:可能会听到继电器、电磁阀等"咔哒"一声的重新上电动作
c. 可能原因
- 看门狗超时
- 软件主动调用复位函数
- 硬件故障复位
- 电源波动/低压
2. 卡死
a. 定义
控制器"僵住了",程序停止在某个地方,不再继续执行任何代码,但电源依然接通,没有重启。
3. 区别
程序卡死是导致看门狗被触发的原因之一,复位是看门狗被触发后产生的结果。
概念:看门狗
1. 定义
看门狗是一个监督程序运行的定时器机制,程序需要定期报告"一切正常",如果监督者没收到报告,就认定程序已崩溃,并强制重启。
概念:导致复位的常见原因
微控制器(MCU)通常都有一个复位状态寄存器。里面用不同的位(Flags)标记了上次复位究竟是由谁造成的,常见的复位源有:
| 复位类型 | 可能原因 |
|---|---|
| 看门狗复位 | 软件未及时响应导致的,可能原因:CPU负载、死循环、死锁(软件逻辑) |
| 欠压复位 | 电源供电不稳定导致的,可能原因:硬件电源电路 |
| 硬件错误复位 | 软件有致命内存错误,可能原因:指针、数组越界、除零 |
概念:指针、数组越界、除零
1. 指针错误
- 描述:程序试图访问一个它没有权限访问的内存地址。
- 为什么会导致复位:现代MCU(如ARM Cortex-M系列)都有一个叫做内存保护单元(MPU) 或内存管理单元(MMU) 的硬件模块,当CPU尝试访问非法内存地址时,MPU/MMU硬件保护模块启动拦截并向CPU报告硬件错误。
2. 数组越界
- 描述:访问了数组定义范围之外的元素
- 为什么会导致复位:
- 访问到非法地址,同理MPU/MMU硬件保护模块启动拦截并向CPU报告硬件错误
- 或者越界访问到了一个合法的、但属于其他变量的地址,导致连锁反应
3. 除零
- 描述:在代码中执行了除以0的操作
- 为什么会导致复位:在硬件层面,CPU的算术逻辑单元无法执行除以0的操作。当它遇到这个指令时,会立即产生一个"除零异常"
1320

被折叠的 条评论
为什么被折叠?



