メディア
連載
» 2019年02月27日 11時00分 公開

Q&Aで学ぶマイコン講座(44):フォールト(Fault)って何? 〜 種類と解析方法 (4/4)

[STマイクロエレクトロニクス,EDN Japan]
前のページへ 1|2|3|4       

フォールトの解析方法

 ユーザーからの問い合わせで、フォールト関係のものは、ほとんどが「解析方法を教えてください」という内容です。「製品の開発中に、マイコンが止まってしまい、原因不明である。どうもフォールトが引き起こされたようだが、どのように原因追及をすればよいのか分からない」という問い合わせが多いです。そこで、フォールトの解析方法を簡単に解説します。


図4:フォールトの解析例 (クリックで拡大)

【1】
 まずは、プラグラムを実行し、フォールトが引き起こされたと考えられる時にプログラムを中断します。
 フォールトのハンドラの中にブレークポイントを置いておくと、確実にフォールトを検出することができます。

【2】
 プログラムが中断された時のカーソルがフォールトのハンドラの中にあれば、フォールトが発生したと判断できます。この時、図2に示すベクタのどの位置にいるかで、フォールトの種類が判別できます。

図2:Arm Cortex-M3/M4の例外ベクタテーブル (クリックで拡大) 【再掲】

【3】
 ハードフォールト呼び出し前の状態がスタックポインタの中身にストアされています。

【4】
 図4の場合、PCは0x00000100からプログラムが実行されようとしています。

【5】
 一方、LRはサブルーチンコールの戻り値を指します。この例の場合、0x080001a9の前からサブルーチンコールされています。

【6】
 逆アセンブラで0x080001a9をチェックすると、その直前に不正なサブルーチンコールがあるのが分かります。

 以上から、0x0800019eの不正なサブルーチンコールがフォールトの原因であることが分かります。

Q&Aで学ぶマイコン講座:過去の質問一覧はこちら

前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

公式SNS

EDN 海外ネットワーク

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.