2014.5.21

前へ
次へ
ホームページトップへ戻る

CPLD+SIMMを使ってUSBプロトコルの解析を!
VHDLを速習! XC95144XL+16MB・SIMMを使ってUSBプロトコルアナライザを作ってしまいました!
主目的は差し迫った事情からUSBプロトコルの解析をすることだったのですが、その手段として選んだのがコレ!


[第54回]


●ハードウェアによるウォームブート(5)

前回からの続きです。
前回はLegacy8080の起動の仕組みについてざっと説明をいたしました。
Legacy8080はROMを搭載せずRAMだけの構成なのでCPU(Z8S180)が起動するよりも前にRAMにIPL(イニシャルプログラムローダー)を書き込んでおく必要があります。
Legzcy8080ではパワーオンリセットまたはシステムリセットによってまずPIC16F886が起動します。
16F886はZ8S180にリセット信号を出力してCPUが起動しないようにしておいて、RAMの00000〜0007FにIPLを書き込みます。
その後でCPUのリセットを解除します。

そのような仕組みで出来上がっているシステムにおいてZ8S180のみにリセットをかけてCP/Mをウォームブートするにはどうしたらよいでしょうか?

Z8S180はリセット後はRAMの00000番地のプログラムを読みにいきます。
今までの説明には出てきませんでしたが、CP/MモードではRAMの0000番地にはBIOSのウォームブート処理プログラムへのジャンプ命令が書かれています。
CP/MモードでCTRL+C([Ctrl]を押しながら[C]を押す)を入力すると、RAMの0000番地にジャンプするようになっていて、その結果ウォームブートが実行されます。

それならちょうど都合がよいではないか?
いえいえ。そんなに都合はよくないのです。
前回説明しましたLegacy8080のメモリマップをもう一度見てください。
こちらがCP/Mモードのときのメモリマップです。

このときZ8S180がアクセスするアドレス0000には確かにウォームブートプログラムへのジャンプ命令が書かれているのですが…。
しかしそれはRAMの00000番地ではなくて10000番地なのです。
そしてZ8S180がリセットされると、MMUによってRAMの00000が先頭アドレスとしてセットされるために、CP/Mモードのときに0000〜7FFFであったメモリは、10000〜なので、下図のように後ろに隠れてしまいます。


ということはZ8S180のみがリセットされると、BASICモードでの0000番地に書かれている命令が実行されることになります。
そこには最初はIPLが書かれているのですが、BASICシステムプログラムがロードされる過程で、BASICシステムへのジャンプ命令に書き換えられます。
それは普通にBASICモードでのスタートポイントですからウォームブートではありません。
どうしてそれがウォームブートではないのかと疑問に思われるかも知れませんが、そこを説明するのはちょっと難しいことですので、そういうことなのだと理解しておいてください。
とにかくそれではだめなのです。
駄目なことはもっともっと根本的なところにあります。

Legacy8080では、CP/MモードもBASICモードもWindowsパソコンとUSB接続をして、パソコンのキーボードから入力し、そしてパソコンの画面に表示するように働きます。
この仕組みはLegacy8080に搭載されたもうひとつのPIC IC、PIC18F14K50が担っています。
PIC18F14K50はWindowsパソコンとUSB通信を行ないます。
WindowsパソコンではDOSプロンプトでLegacy8080のためのシステムプログラムが実行されていて、キー入力をUSBを介して送信し、またUSBを介して受け取ったデータを画面に表示します。
Z8S180はPIC18F14K50とデータのやり取りをすることで、結果としてパソコン上のプログラムとつながっています。

そういう仕組みのなかでZ8S180をいきなりリセットすると、どうなるでしょうか?
Z8S180がリセットされたときは、ちょうどPIC18F14K50からデータを受け取っているときかもしれません。
あるいはPIC18F14K50にデータを送出しているときかもしれません。
それが突然中断されてしまい、Z8S180はそんなことはお構い無しにごく普通に0000番地からリスタートしてごく普通にBASICモードにエントリしてしまうことになります。

通信もプログラムも突然かみ合わなくなりますから、Z8S180もPIC18F14K50もWindows側のプログラムも全てがハングアップしてしまいます。
出口なしです。
でもなんとか出口をさがさなくてはなりません。

CPLD+SIMMを使ってUSBプロトコルの解析を![第54回]
2014.5.21upload

前へ
次へ
ホームページトップへ戻る