前回たった8バイトのCPU内蔵の実行用メモリ(IBUFF)でメモリの1バイトの情報をシリアルデータとして取り出すことができました。この仕組みを何度も繰り返すようにプログラミングすることで、メモリダンプもできるはずです。
Pythonでメモリダンプ
試行錯誤をしながら、Python3でメモリダンププログラムを書いてみました。Pythonは初心者なのですが、Pyserialがあるのでシリアル通信が簡単に扱えるだろうと考えました。ソースプログラムは整理してからGitHubにあげようと思います。
実行結果は以下のようになりました。ブートローダーのマイクロコードのアドレス付近にはプログラムが書かれていて、いろんな値が見えるだろうとダンプしてみました。
フラッシュメモリが接続されているはずの$00000000のあたりをダンプしてみると、$FFが並んでいましたが、$00も見えました。念のため続けて2度実行しましたが同じ値が取れています。
しかし、本当にメモリの内容が正しく表示できているのか今一つ自信がありません。
連続したNOP命令を発見
もう少し広い範囲をダンプしてみたところ、次のような連続したデータがありました。
4E 71は68000 CPUにおけるNOP (No Operation) 命令です。このような意味のあるデータが確認できたので正常にメモリの内容を読み出せていることが確認できました。
これで道具が揃いました
このダンププログラムでメモリの確認ができるようになりました。メモリの書き込みや実行はBレコードをブートローダーに読み込ませればよいので、最低限の道具はそろったことになります。
フラッシュメモリへの書き込みは手順があるようなので、DragonOneのページをみながら書き込みプログラムをアセンブラで作ってみようと思います。
コメント