2012-02-13 71 views
2

我一直在恩智浦LPC11XX器件和FreeRTOS上进行项目工作。问题是这个演示项目使用了一些基于Eclipse的IDE,我不会有这些。我把它转换成了在Linux下编译,我可以编程没有任何问题。我看到的问题是演示项目到达memset()时CPU中产生硬故障。这不是我的代码,但我有一种感觉,它与我所做的事有关。我正在使用codesourcery“gcc version 4.4.1(Sourcery G ++ Lite 2010q1-188)”编译器(我在Cortex-M3设备上没有问题地使用过)。我看这倒是没有在内存上一个该死的“LSLS”指令产生的hardfault,看到GDB输出的这个庞大引擎收录:http://pastebin.com/3pg0puSe(我不知道常见的做法是这里像大段的文字内容。)LPC11xx Cortex-M0 FreeRTOS Hardfault

任何想法,任何人?谢谢您的帮助!

+0

为什么不使用官方FreeRTOS支持论坛? – 2012-02-13 10:45:32

+0

这似乎是一个更深入的ARM问题,介于memset(),gcc和可能的我的makefile之间。据我所知,这与freeRTOS内核无关。 – 2012-02-13 15:30:28

回答

5

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

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

+0

编译器肯定是指定-mthumb,但你说得很对,我没有捕获到这个缺失的位。当我以后回家时,我会检查一下。感谢您的输入! – 2012-02-13 21:46:46