前回、XMODEMでプログラムを転送するところまで成功しました。

 

今回はブートローダをインストールしてブートローダでRAM上に転送したプログラムを動かしてみます。

 

KOZOSのサイトでは、

(H8移植編第4回)ブートローダでプログラムをロードしてみる

http://kozos.jp/kozos/h8_04.html

になります。

 

kzloadとosというフォルダを作り、こちらからそれぞれのプログラムをダウンロードして保存します。

http://kozos.jp/kozos/h8/h8_04/

 

h8_04 -┬- kzload

          └- os

 

USBメモリーに保存し、FreeBSDの/usr/tmp/h8write/フォルダにコピーします。

 

# mount /mnt

# cd /mnt

# cp -R h8_04 /usr/tmp/h8write/

# cd /usr/tmp/h8write/h8_04/kzload

# ./make.sh clean

# ./make.sh

# ./make.sh image

H8マイコンのディップスイッチをON,ON,OFF,ONにして電源ON

# ./make.sh write

gmake: ../../h8write/h8write: Command not found

階層が1つ深くなったのでh8writeの相対指定が違うようです。

# vi Makefile

../../h8write/h8write -3069 -f20 $(TARGET).mot

の頭に../を追加してもう一度実行

書き込めました。

 

osフォルダに移動

# cd /usr/tmp/h8write/h8_04/os

# ./make.sh clean

# ./make.sh

# ./make.sh image

ここでは、hello.elfとhello.uuというファイルが出来ました。

 

H8マイコンのディップスイッチをON,OFF,ON,OFFに戻して

# cu -s 9600 -l /dev/cuad0

 

H8マイコンのリセットを押す

Hello World!

> load

~CLocal command? lsx hello.elf

Timeoutしてしまう

 

uuencode形式で送ってみる

# cd /usr/tmp/h8write/h8_04/kzload

# vi xmodem.c

/* #define USE_UUENCODE */ を

#define USE_UUENCOD に変更

# ./make.sh clean

# ./make.sh

# ./make.sh image

H8のディップスイッチをROM書き込み用に変更してリセット

# ./make.sh write

H8のディップスイッチを実行用に戻して

osフォルダに移動

# cd /usr/tmp/h8write/h8_04/os

H8と接続

# cu -s 9600 -l /dev/cuad0

H8リセット

Hello World!

> load

~CLocal command? lsx hello.uu

今度は送れました。

 

> run

starting from entry point.boot success!

os> run

run

 

runが走らずにrunの文字列が表示されることで、ブートローダで転送されたプログラムが動いていることがわかる。

 

os> ~ ctrl+D でcuを抜ける

 

上のhello.elfが転送できなかった件、lsx hello.elfではなくlsx helloで転送出来ました。 汗

> run

run error! あれ?xmodem.cを変更したから?

 

もう一度、hello.uuだときちんと動きました。

 

【おまけ】

H8マイコンのディップスイッチの切り換えですが、1番はそのままで2番~4番を逆の方に切り替えると覚えると楽です。

 

XMODEMでファイル転送

H8マイコンをLANに繋ぐ

MENUに戻る