无法追踪 Cortex M0 上的硬故障

Hardfault on Cortex M0 cannot be tracked down

我很难找到随机发生在我的 nrf51822 板上的硬故障。

我可以在硬故障处理程序上固定断点,但堆栈信息用处不大。 我可以围绕导致硬故障的指令进行单步调试,绝对没有任何东西可以触发此类故障。在下面的示例中,PRstrcpy 只是两个绝对合法地址之间的副本。 其他症状:

对调试有什么想法吗?

下面是堆栈跟踪:

Thread #1 <main> (Suspended : Breakpoint)   
    HardFault_Handler() at 0x34976  
    <signal handler called>() at 0xfffffff9 
    PRstrcpy() at kcs_stdlibs.c:94 0x1aa66  
    PrintConfigInfo() at Startup.c:36 0x15256   
    0xfffffffe  

我在我的案例中发现了问题,这是不同的并且难以调试。 我周围有一些闪存写入指令,它们会覆盖上层闪存区域。只有在使用低优化值时,这些闪存区域才能托管合法指令。 所以我的代码是即时修改的,而 运行.