CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

モニタ完成

モニタコマンド分岐先の処理の実体をコーディング完了しました。

L(Load)、E(Exec)、D(Dump)とも引数無し、SRAMが存在する0xFFE00000番地が暗黙で指定されます。DumpコマンドなどはLoadコマンドが正常に動作しているかを確認するだけのデバッグ用ルーチンに過ぎず、開始番地もサイズも固定ですが用は足りています。

f:id:O3I:20201222123014j:plain

ここで最初にやったメモリチェックプログラムを再度実行させてみます。スタート番地を0から0xFFE00000にリロケートさせるのと、プログラム自身がSRAM上にあるので先頭番地からは当然チェックできません。(自分自身を上書きして壊してしまうので。)

チェック領域を0xFFE10000~0xFFFFFFFFとして繰返しやってもエラー無し。最初データバスが浮いている状態で完走してしまうほうがおかしかったのですが。

あとこのチェックではアドレスの重複はわからない(変なアドレスに書いて読んでもOKになる)ので別のチェックプログラムを作成し0xFFE10000にデータ0xE10xFFE200000xE2・・・・0xFFFF00000xFFと予めユニークな値を書いておいてからまとめてベリファイすることで、「そのアドレスが存在している」確認も行い、OKとなりました。

これでSRAMが1Mbitのニセモノでなくちゃんと4Mbitあることがわかりほっとしました。

 

L(Load)、E(Exec)コマンドさえあれば、統合環境cmpldrvへの追加もできるのでこれで一気にデバッグ作業も楽になります。

f:id:O3I:20201222123034j:plain