H8のシミュレータ環境
H8ボードが電圧の高い電源アダプタのせいで壊れてしまった。秋月電子が交換のものを送ってくらたのだが
2日程かかるので、その間にシミュレータ環境を構築してみることにした。
シミュレータ環境は、gdbのCPUエミュレーション機能を使う。
やり方は、kozosのページに書いてある。http://kozos.jp/kozos/h8_sim_01.html
を参考にして、gdb-7.2.tar.gzをダウンロードしてきて、H8ボード用のパッチをあてる。
以下のページがシミュレータ環境について書かれているページだ。
- 「移植編その5:シミュレータで動作させる」(第1回〜第6回)
(シミュレータ編第1回)とりあえず動かしてみた
(シミュレータ編第2回)シリアル対応をした
(シミュレータ編第3回)シリアル対応の続きの説明
(シミュレータ編第4回)OSを直接起動する
(シミュレータ編第5回)タイマを実装する
(シミュレータ編第6回)ネットワーク対応だ!
- (H8移植編その2(第9回と第14回と第15回)
(H8移植編その2第9回)シミュレータのsleep対応
(H8移植編その2第14回)シミュレータのLinux対応
(H8移植編その2第15回)シミュレータの送信割り込み対応
パッチをまとめて、githubに挙げてみた。
以下の3つのパッチを当てる。
以下の2つのファイルを「gdb/sim/h8300/」以下にコピーする
- device.c
- serial.c
シミュレータ環境で動かす場合、kozosのビルド時にmakefileに
CFLAGS += -DSIMULATOR
を追加するのを忘れないこと。
kozosの最新のソースコードがわかりづらかったので、最新ポイものをgithubに挙げてみた。
ここでは、シミュレータ環境について書いているが、最新ソースを実機で動作させる場合、以下の問題がある。
bootloadから起動して、OSイメージをXMODEMで転送しようとするとうまくいかない。
XMODEMの待ち合わせ処理がシミュレータ環境を想定して、少ない時間に修正されているためだ。
「bootload/xmodem.c」に以下の修正を入れる。
#ifdef SIMULATOR if (++cnt >= 50000) { #else if (++cnt >= 2000000) { #endif
これで、無事XMODEMでOSイメージを転送できるようになった。
※待ち合わせのタイミングは環境によって調整する必要がある。
シミュレータ環境でネットワークを使えるようにLinux上でTapインターフェイスを構築しようとしたが
時間切れとなってしまった。Tapインターフェイスは、kvmやopenvpnで使用されているらしいので、今度調査したいと思う。