開発のヒント
CPU
フォルトが起こったら。
フォルトにも色々あります。メモリ管理フォルト、バス管理フォルト、用法フォルト、ハードフォルト、デバッグフォルトです。各々のフォルトはレジスタを持っており、原因に関連するフラグがあります。フォルトが起きたら、まずこれらフラグをチェックしてください。そして、マニュアルの説明にしたがってフォルトの原因を調べてください。それでも原因が判らない場合は、フォルトの起きる前にCPU が何を行っていたかを調べます。
フォルトハンドラ(サービスルーチン)の中でブレークをかけて、その時のスタックの中身を見ます。するとLR の値がスタックされているはずです。LR はサブルーチンコールの戻り値を指します。LR のアドレスの前からサブルーチンコールされてフォルトが起こっています。
逆アセンブラでLR のアドレスにジャンプすると、そこがフォルト原因の可能性が高いので、そこから遡って命令をチェックしてください。
過去にあった主なフォルトの原因は、不当命令の実行(Flash のWS を間違っていた)、不定値を使って計算しようとした(実装されていないメモリ、レジスタ領域をアクセスした)、サブルーチン内でスタックを壊した(プログラムの作成ミス)、不当なサブルーチンを実行した(プログラムの作成ミス)等があります。
原因を見つけるコツは、実際のプログラムはかなり複雑なので、用心深く、しつこく探求することです。
過去の開発のヒントはこちら