2

私はNXPLPC11XXデバイスとFreeRTOSのプロジェクトに取り組んできました。問題は、このためのデモプロジェクトがEclipseベースのIDEを使用していることであり、私はそれを持っていません。Linuxでコンパイルできるように変換しましたが、問題なくプログラミングできます。私が見ている問題は、デモプロジェクトがmemset()に到達すると、CPUでハードフォールトが生成されることです。これは私のコードではありませんが、私が行ったことに関連していると感じています。コードソースの「gccバージョン4.4.1(Sourcery G ++ Lite 2010q1-188)」コンパイラー(Cortex-M3デバイスで問題なく使用しています)を使用しています。メモリ内の何にも触れない、いまいましい「lsls」命令で生成されたハードフォールトが表示されます。GDB出力のこの巨大なペーストビンを参照してください:http://pastebin.com/3pg0puSe(そのようなテキストの大きなブロックに対して、ここで一般的な方法が何であるかはわかりません。)

何か考えはありますか?助けてくれてありがとう!

4

1 に答える 1

5

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

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

于 2012-02-13T20:30:12.803 に答える