目录

问题现象:​​

​​调试过程与发现:​​

​​关于 Call Depth Underflow (CDU) Trap 的解释 :​​


问题现象:​

在基于英飞凌 TC3XX 系列芯片的系统中调用接口对外部 Flash 芯片执行数据存储操作时,系统发生持续复位。然而,如不调用该存储接口,系统则运行正常,不会发生复位。

​调试过程与发现:​

  1. 复位原因追踪:调用存储接口后,系统触发 Trap(硬件异常),进而激活看门狗(Watchdog)导致芯片不断复位。

  2. Trap 类型识别:触发的 Trap 类型为 ​​Class 3 TIN3 (Call Depth Underflow - 调用深度下溢)​​。

  3. ​表层原因分析:​​ MCU 通过 SPI 接口从 Flash 芯片读取数据时,访问地址​​超出​​了 Flash 的有效地址范围,该非法访问直接触发了 Trap。

  4. ​根本原因锁定:​​ ​​地址错误​​导致计算得出的待读取​​数据长度异常增大​​。该过程执行时,从 Flash 读取的大量数据​​覆盖​​了栈空间中的其他关键数据(例如函数返回地址或上下文信息),破坏了程序正常运行所需的栈结构。

关于 Call Depth Underflow (CDU) Trap 的解释 :​

TC3XX 系列芯片的 CDU Trap (TIN3) 主要关联于​​调用堆栈(Call Stack)​​ 操作的异常。这通常表示硬件检测到​​从调用返回的次数超过了预期的调用深度​​(例如,试图从比实际调用层级更深的位置“返回”)。

在基于 AUTOSAR OS 等复杂调度机制的环境中,潜在的诱因包括:

  • ​上下文切换或任务调度错误:​​ 若操作系统在任务抢占或中断处理后未能准确恢复调用深度信息(常因​​堆栈帧损坏​​所致),则可能触发 CDU。

  • ​保护机制副作用:​​ 内存保护单元(MPU)等机制触发异常后,如果系统未能彻底回滚或修复相关的调用深度状态,也可能导致后续 CDU Trap 的发生。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐