開発のヒント

CPU

フォルトが起こったら。

フォルトにも色々あります。メモリ管理フォルト、バス管理フォルト、用法フォルト、ハードフォルト、デバッグフォルトです。各々のフォルトはレジスタを持っており、原因に関連するフラグがあります。フォルトが起きたら、まずこれらフラグをチェックしてください。そして、マニュアルの説明にしたがってフォルトの原因を調べてください。それでも原因が判らない場合は、フォルトの起きる前にCPU が何を行っていたかを調べます。

フォルトハンドラ(サービスルーチン)の中でブレークをかけて、その時のスタックの中身を見ます。するとLR の値がスタックされているはずです。LR はサブルーチンコールの戻り値を指します。LR のアドレスの前からサブルーチンコールされてフォルトが起こっています。

     

逆アセンブラでLR のアドレスにジャンプすると、そこがフォルト原因の可能性が高いので、そこから遡って命令をチェックしてください。

       

過去にあった主なフォルトの原因は、不当命令の実行(Flash のWS を間違っていた)、不定値を使って計算しようとした(実装されていないメモリ、レジスタ領域をアクセスした)、サブルーチン内でスタックを壊した(プログラムの作成ミス)、不当なサブルーチンを実行した(プログラムの作成ミス)等があります。

       

原因を見つけるコツは、実際のプログラムはかなり複雑なので、用心深く、しつこく探求することです。

過去の開発のヒントはこちら