2012-02-13 6 views
2

私は、NXP LPC11XXデバイスとFreeRTOSのプロジェクトで作業しています。問題は、このためのデモプロジェクトはEclipseベースのIDEを使用しており、私はそれを持っていないということです。私はそれをlinuxでコンパイルするように変換しました。私は問題なくプログラムできます。私が見ている問題は、デモプロジェクトがCPUにハードフォールトが生成されたmemset()に到達したときです。これは私のコードではありませんが、私はそれが私が何かに関連していると感じています。私はcodesourcery "gcc version 4.4.1(Sourcery G ++ Lite 2010q1-188)"コンパイラを使用しています(これはCortex-M3デバイスで問題なく使用しています)。メモリに何も触れていない "lsls"命令で生成されたハードフォールトを参照してください.GDB出力のこの大量のペーストビン:http://pastebin.com/3pg0puSeを参照してください(このようなテキストの大きなブロックについては何が一般的な習慣であるのかわかりません)。LPC11xx Cortex-M0 FreeRTOS Hardfault

何か考え、誰ですか?助けてくれてありがとう!

+0

なぜ公式FreeRTOSサポートフォーラムを使用しないのですか? –

+0

これは、memset()、gcc、おそらく私のmakefileの間のどこかで、より深いARMの問題のようです。これは私が知る限り、freeRTOSカーネルとは何の関係もありません。 –

答えて

5

見えにくいですが、最後の指示はblx r3でした。 R3に最後のビットが設定されていない(Thumbモードの場合)ように見えます。その値は0x481cです。 これは、IIRCによって不正な命令例外が発生します。 blxでPCにロードされた値がおそらく無効だったため、この場合はデバッガがあなたを欺くでしょう。

命令モード/ CPUモデル(および使用するlibsのセット)を設定するリンカオプションを忘れている可能性があります。そのため、ARMモードライブラリにリンクしています。

+0

コンパイラは確実に-mthumbを指定していますが、あなたは非常に正しいです、私はその欠けているビットをキャッチしませんでした。私が家に帰ると、私はそれをチェックします。入力いただきありがとうございます! –

関連する問題