LPC11xx Cortex-M0 FreeRTOS Hardfault

时间:2012-02-13 03:27:39

标签: arm memset

我一直在使用恩智浦LPC11XX设备和FreeRTOS上的项目。问题是这个演示项目使用了一些基于Eclipse的IDE,我不会有任何这个。我把它转换为在linux中编译,我可以编程没有任何问题。我看到的问题是当演示项目到达memset()时,CPU中会产生硬故障。这不是我的代码,但我觉得这与我所做的事情有关。我正在使用代码源“gcc版本4.4.1(Sourcery G ++ Lite 2010q1-188)”编译器(我在Cortex-M3设备上使用时没有问题)。我看到在一个该死的“lsls”指令上生成的硬错误,它在内存中没有任何内容,看到这个GDB输出的大量粘贴器:http://pastebin.com/3pg0puSe(我不知道这样的大块文本的常见做法是什么。 )

任何想法,有人吗?谢谢你的帮助!

1 个答案:

答案 0 :(得分:5)

很难看,但最后一条指令是blx r3。 看起来R3没有设置其最后一位(对于Thumb模式),其值为0x481c。 这将导致IIRC导致非法指令异常。在这种情况下,您的调试器会欺骗您,因为blx加载到PC中的值可能无效。

您可能只是忘记了设置指令模式/ CPU模型(以及要使用的lib集)的链接器选项 - 因此它链接到ARM模式库。