Arm LPC11xx Cortex-M0 FreeRTOS硬故障

Arm LPC11xx Cortex-M0 FreeRTOS硬故障,arm,memset,Arm,Memset,我一直在从事NXP LPC11XX设备和FreeRTOS的项目。问题是,这个演示项目使用了一些基于Eclipse的IDE,我没有这些。我把它转换成在linux下编译,我可以毫无问题地编程。我看到的问题是,当演示项目到达memset()时,CPU中会产生硬故障。这不是我的代码,但我感觉它与我所做的事情有关。我使用的是codesourcery“gcc版本4.4.1(Sourcery G++Lite 2010q1-188)”编译器(我在Cortex-M3设备上使用过,没有问题)。我看到了在一条该死的“

我一直在从事NXP LPC11XX设备和FreeRTOS的项目。问题是,这个演示项目使用了一些基于Eclipse的IDE,我没有这些。我把它转换成在linux下编译,我可以毫无问题地编程。我看到的问题是,当演示项目到达memset()时,CPU中会产生硬故障。这不是我的代码,但我感觉它与我所做的事情有关。我使用的是codesourcery“gcc版本4.4.1(Sourcery G++Lite 2010q1-188)”编译器(我在Cortex-M3设备上使用过,没有问题)。我看到了在一条该死的“lsls”指令上生成的硬错误,它没有触及内存中的任何内容,看到了GDB输出的这个庞大的粘贴库:(我不知道像这样的大文本块的常见做法是什么。)


有什么想法吗?谢谢你的帮助

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


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

为什么不使用官方的FreeRTOS支持论坛呢?这似乎是一个更深入的ARM问题,介于memset()、gcc和我的makefile之间。据我所知,这与freeRTOS内核无关。编译器肯定指定了-mthumb,但你说得很对,我没有捕捉到缺失的部分。当我晚些时候回家时,我会检查一下。谢谢你的意见!