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 公開