マイコン&FPGA開発の流れと開発ツール ―― 組み込みシステム開発の基礎知識(後編)
tag: 組み込み 半導体 ディジタル・デザイン
技術解説 2010年4月26日
7.ROM化とマイコン開発ツール
ROM化の工程では,コンパイラとリンカが変換した機械語のコードを,ターゲット・ボードのROMに書き込みます.
最近は,フラッシュ・メモリを内蔵するマイコンが増えています.フラッシュ・メモリに,機械語のコードを書き込むためには,各マイコン専用のROMライタ(プログラマ)を使います.オンチップ・エミュレータの機能を利用して,統合開発環境からフラッシュ・メモリへの書き込みができるマイコンもあります.
マイコンにフラッシュ・メモリが内蔵されていない場合は,写真5のようなROMライタを使用して外付けの書き換え可能なROMに機械語のコードを書き込みます.外付けROMの場合や,統合開発環境を使わずにフラッシュ・メモリへ書き込みをする場合には,機械語のコードをROMライタが読み込むことができる「Intel HEXフォーマット」や「Motorola Sレコード・フォーマット」という呼ばれる形式に変換する必要があります.
写真5 ROMライタの例
外付けのROMに,機械語のコードを書き込むために使用する.
Intel HEXフォーマットやMotorola Sレコード・フォーマットは,バイナリ形式の機械語のコードをテキスト形式のASCIIコード2けたの16進数で表現するフォーマットです(リスト4).この変換のための専用のツールもありますが,リンカや統合開発環境に含まれる場合がほとんどです.
リスト4 インテルHEXフォーマットのデータの例
●ROM化の注意点
ROM化では,ソフトウェア本体(機械語のコード)のROMの領域への配置(アドレス設定)とグローバル変数の初期化に注意が必要です.
シミュレータを使用している場合は当然ですが,エミュレータを使用していても,デバッグ/テストで使用する環境は,ターゲット・ボードの動作環境とまったく同じではありません.また,エミュレータや評価ボードなどの制約で,外付けのROMやRAMがターゲット・ボードとは異なる配置になっている場合もあります.その結果,ROM化する際に分岐先がおかしくなることや,データの初期化などが漏れていても正常に動作してしまうことがあります.
C言語などの高級言語を使用した上で,グローバル変数を極力使用しない設計をすることにより,このようなトラブルが発生する可能性を低くすることはできますが,回避できないトラブルもあります.アセンブリ言語で開発した場合は,特に注意が必要です.
ROM化した後にトラブルが発生すると,原因の調査が難しくなります.設計,コーディング時のレビューや,コーディングのチェック・ツールの活用も大切です.可能ならば,ROM化した後の環境に近い環境で動作確認ができるエミュレータを利用して検証します.