ユーザーからの問い合わせで、フォールト関係のものは、ほとんどが「解析方法を教えてください」という内容です。「製品の開発中に、マイコンが止まってしまい、原因不明である。どうもフォールトが引き起こされたようだが、どのように原因追及をすればよいのか分からない」という問い合わせが多いです。そこで、フォールトの解析方法を簡単に解説します。
【1】
まずは、プラグラムを実行し、フォールトが引き起こされたと考えられる時にプログラムを中断します。
フォールトのハンドラの中にブレークポイントを置いておくと、確実にフォールトを検出することができます。
【3】
ハードフォールト呼び出し前の状態がスタックポインタの中身にストアされています。
【4】
図4の場合、PCは0x00000100からプログラムが実行されようとしています。
【5】
一方、LRはサブルーチンコールの戻り値を指します。この例の場合、0x080001a9の前からサブルーチンコールされています。
【6】
逆アセンブラで0x080001a9をチェックすると、その直前に不正なサブルーチンコールがあるのが分かります。
以上から、0x0800019eの不正なサブルーチンコールがフォールトの原因であることが分かります。
(次の記事を読む)
Copyright © ITmedia, Inc. All Rights Reserved.