ブートのシーケンスは以下の資料に記載してあります。
参照資料: (p.179)
ユーザーズ・マニュアル「uPD77111ファミリ アーキテクチャ編」
ブートROMではこのシーケンスに従ったデータ転送によって転送されたデータを、命令領域に書き込みます。
以下にシーケンスを示します。
それぞれの転送(HOST→DSP)は 下位8ビット→上位8ビット のように、8ビット2回分の転送で行われます。
ホスト・ブート
(HOST→DSP)ダミー・データの転送
(DSP内部) HDTからデータを引き取る
(HOST→DSP)ブート命令数の転送
(DSP内部) HDTからデータを引き取る(ここでは命令数をnとする)
(HOST→DSP)HST設定値の転送
(DSP内部) HDTからデータを引き取り、HSTに書き込み
HOSTからのHST設定値に関わらず、HAWEビットは1に設定される
ここからはホスト・リブートと共通
リブートの場合は、ブート命令数(ここではn)とHST(HAWEビットを1)の設定はあらかじめ行っておく必要があります。
(HOST→DSP)1番目の命令コード(下位16ビット)の転送
(DSP内部) HDTからデータ(命令コード)を引き取り、命令領域に転送
(HOST→DSP)1番目の命令コード(上位16ビット)の転送
(DSP内部) HDTからデータ(命令コード)を引き取り、命令領域に転送
(HOST→DSP)2番目の命令コード(下位16ビット)の転送
(DSP内部) HDTからデータ(命令コード)を引き取り、命令領域に転送
(HOST→DSP)2番目の命令コード(上位16ビット)の転送
(DSP内部) HDTからデータ(命令コード)を引き取り、命令領域に転送
:
(HOST→DSP)n番目の命令コード(下位16ビット)の転送
(DSP内部) HDTからデータ(命令コード)を引き取り、命令領域に転送
(HOST→DSP)n番目の命令コード(上位16ビット)の転送
(DSP内部) HDTからデータ(命令コード)を引き取り、命令領域に転送
:
ブート・ルーチンの終了
ホスト・ブート:0x200番地に分岐
ホスト・リブート:リブート・ルーチン・コールの次の命令に分岐
DSP内部では、HDTに16ビット分のデータが入力されない限りウエイト状態にあります。
この状態ではDSPは別の処理をすることなく、ひたすらホストからのデータ入力を待っている状態です。
外部(ホスト、DMAコントローラ)から見た場合、DSPが次のデータを引き取れる状態であるかを示すものに、
HWE端子とHWEF(HSTの中のフラグ)があります。
外部からはこの端子の状態を見るか、あるいは HSTレジスタをポーリングしながら、
転送を行えばよろしいかと思います。
ブートおよびリブートでサポートされているのは命令コードの転送のみです。
データRAM領域の初期化が必要な場合は、ブートされたプログラムの中で、
外部からのデータの転送を行っていただく必要があります。