因此、我的理解是、内核复位仅复位 Cortex M4内核、而系统复位则复位整个 TM4C。
除了在 CCS 中进行调试之外、是否还有其他会导致内核复位而不是系统复位的情况?
我之所以提出这一问题、是因为在内核复位后、处理器状态似乎严重混乱。 值得注意的是、堆栈指针 SP 是一些疯狂的值、通常约为0xFFFFFFFC 或0xFFFFFFFE 或其他值。 程序中的第一条指令是一个推入指令、它尝试写入不存在的存储器、这会立即使执行混乱得非常严重。 我猜它甚至不能分支到具有这种混乱状态的故障处理程序。
这是 LaunchPad 板上的 TM4C129ENCPDT。 我使用的是 CCSv7、它使用 GCC (gcc-arm-none-eabi-4_9-2015q3)和自定义链接器脚本进行编译、并启动将入口点设置为 ResetISR()、后者调用 C 库的_start()、后者调用 main()。 程序启动并运行正常,SP 整齐地设置为0x20040000 --如果并且仅当它从系统复位启动时。 由于 SP 中的神秘值(可能还有其他混乱的处理器状态)、从内核复位开始基本上是不可能的。
这种现象是否让任何人都熟悉? 我应该担心这个问题、还是它只影响调试而不影响其他方面?
***编辑***
它不仅仅是堆栈指针。 它也是程序计数器和链接指针。 在某种程度上、当发生内核复位时、处理器就会被响应。 我觉得这不应该发生。 请参阅屏幕截图--这是内核复位后或开始调试会话(我假设编程后执行内核复位)后的确切状态: