2012-02-13 80 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