You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MK24FN1M0VDC12处理器LDR指令未执行引发Hard Fault问题排查求助

MK24FN1M0VDC12 USB BusFault 排查求助

最近因为芯片短缺把项目处理器换成了MK24FN1M0VDC12,同时把USB从HS模式切到了FS模式,结果碰到了个折腾我40多小时的持续性BusFault问题——直到昨晚终于观测到了具体的故障表现,跟大家梳理下细节,求大佬们给点排查思路!

故障基础信息

  • 故障仅发生在USB中断处理函数中,芯片其他外设工作完全正常
  • IDE故障面板显示,触发BusFault的地址为 0x00400008
  • 调试主窗口调用栈显示,触发故障的指令位于地址 0x9340(反汇编窗口红线标记位置)

诡异的寄存器与指令执行异常

我盯着调试数据看了好久,发现个完全不合逻辑的点:

  • 故障发生时R2寄存器的值是 0x00400000,加上偏移量8后正好和BFAR中的地址一致,这看起来是故障的直接诱因
  • 但往前看一条指令(地址0x933E)是从R7存储的地址(偏移量0)加载值到R2的LDR指令
  • 内存视图已经验证,R7对应的内存地址值是 0x2000FF48——按道理R2应该加载这个值才对,但实际却是0x00400000
  • 更奇怪的是,在正常工作的实例中单步调试时,0x00400000其实是上方ANDS R3, R2指令的执行结果,这感觉就像那条LDR指令根本没被执行一样!

当前已尝试的解决进展

  • 按照Kinetis勘误表,禁用了指令/数据缓存与预取功能后,该代码区域的HardFault不再出现
  • 把核心时钟从120MHz降到96MHz后,故障似乎完全停止了
  • 我会持续更新后续的排查进展

求大佬支招

有没有人遇到过这种看起来像指令“跳步”执行的异常?或者和时钟、缓存相关的BusFault问题?哪怕是听起来非常规的排查思路都欢迎分享!

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 14:32:35