Search
ホーム > 記事サポート > 2008年 > 09月号 別冊付録「マルチテスタの製作」 > FAQ008:マルチテスタのプログラムをROMライタ機能を使って書き込んだが動かない
 

FAQ008:マルチテスタのプログラムをROMライタ機能を使って書き込んだが動かない

8月号のサンプル・プログラムや9月号のマルチテスタ用プログラムは,トラ技BIOS上で動作するように作られています.このようなプログラムをROMライタ機能(WriteEZ3)を使って書き込むと,正常に動作しません.またROMライタ機能を使うと,プログラムの書き込み前にフラッシュ・メモリの内容がすべて消去されるため,あらかじめ書き込んであったトラ技BIOSも消去されていまいます.

プログラムを正常に動作させるには,FAQ009の内容に従ってトラ技BIOSの復旧作業を行い,トラ技BIOS上からflashコマンドを使って,再度プログラムの書き込みを行ってください.

プログラムが動作しない原因

トラ技BIOS上で動作するように作られたプログラムは,通常はスタートアップ・ルーチンを含んでいません.また,ベクタ・テーブルや割り込み処理に,トラ技BIOS内のルーチンを使用します.このようなプログラムをトラ技BIOSのflashコマンドを使用して書き込んだ場合,メモリ・マップが図1のようになります.マイコンのリセット後,0000H番地から始まるスタートアップ・ルーチンやトラ技BIOSの処理ルーチンが実行され,プログラムが正しく動作します.また,ユーザ・プログラムからトラ技BIOS内のルーチンをコールすることもできます.

図1 トラ技BIOSでユーザ・プログラムを書き込んだときのメモリ・マップ

ROMライタ機能を使用した場合,プログラムの書き込み前にフラッシュ・メモリの内容が消去されるため,スタートアップ・ルーチンやトラ技BIOSの処理ルーチンがなくなります.メモリ・マップは図2のようになり,プログラムが正しく動作しません.

図2 トラ技BIOS上で動作するユーザ・プログラムをROMライタで書き込むとスタートアップ・ルーチンやトラ技BIOSがなくなる

ROMライタ機能はトラ技BIOSに頼らないプログラムを書き込むためのもの

トラ技BIOSには,使用可能なROM/RAMの制限や割り込み遅延,一部の命令が使用できないなどの制約があります.スタートアップ・ルーチンやベクタ・テーブルなどを含み,トラ技BIOSに頼らないプログラムを作成すれば制約を受けませんが,このようなプログラムをトラ技BIOSを使って書き込むことはできません.トラ技BIOSは,自身を含む領域を書き換えられないため,スタートアップ・ルーチンやベクタ・テーブルが書き込めないからです.

トラ技BIOSに頼らないプログラムを書き込むためには,書き込み手段もトラ技BIOSに頼らない必要があります.そのために用意したものがROMライタ機能です.

ROMライタ機能で,スタートアップ・ルーチンやベクタ・テーブルを含んだユーザ・プログラムを書き込むと,メモリ・マップは図3のようになります.トラ技BIOSに頼らないプログラムなら,内蔵高速RAMや16Kバイトの全ROM領域,CALLT命令など,トラ技BIOSが使用していたCPUリソースのすべてを使用できます.

図3 スタートアップ・ルーチンやベクタ・テーブルを含んだユーザ・プログラムをROMライタ機能を使って書き込んだときのメモリ・マップ

<高橋 泰雄>

2008/9/17 公開

セミナ案内/イベント情報

特設ページ

基本電子部品大事典

トランジスタ技術SPECIAL

MOTORエレクトロニクス

特設ページ「お手本! トランジスタ&定番IC 回路見本市」へのリンク

オンライン・サービス

メール・マガジン「トラ技便り」配信登録 オンライン・サポート・サイト CQ connect

雑誌/書籍のご購入

CQ出版WebShop 定期刊行物の年間予約購読