|
 |
redboot(使用編) |
 |
■redbootを書き込んでおくとカーネルをネットワークから、あるいはRS232C(遅いですが・・・)から転送して起動することができるので開発・実験に便利です。内蔵フラッシュは書き込み寿命がありますのでredbootを一度書き込んでおけば、フラッシュの書き換えをせずに済みます。
◆redbootの書き込み手順
- 付属CDに入っているH8WriteTurboをインストールします。\h8writeturbo\setup.exeがインストーラです。
インストールするとスタートメニュー・デスクトップにショートカットが作成されます。
詳しい説明はオンラインヘルプをご覧ください。操作する内容としては、CPUに3069Fを選択すること,H8MAXが接続されているCOMポートを設定することぐらいです。
- H8MAXとパソコンを接続します。ジャンパー設定の項をご覧になり、書き込みモードにセットします。この状態で電源を入れます。
- 付属CDに\pkg\redboot.motが入っていますので、このファイルを書き込んでください。書き込みの方法はこのファイルをH8WriteTurboのダイアログ(ウィンドウ)にドラッグ&ドロップするだけです。自動的に書き込みが開始されます。
- 書き込みが終了しましたら、電源を一度切り、ジャンパー設定を動作モードにします。
- H8WriteTurboを終了させ(ウィンドウを閉じます)、TeraTermなどのRS232Cターミナルソフトを起動します。起動パラメータは次の通りです。
- データ長:8bit
- 通信スピード(ボーレート):38400bps
- パリティ:なし
- ストップビット:1bit
- COMポート:H8MAXが接続されているCOMポート(COM1〜COM4)
※TeraTermはCOM1〜COM4までの範囲しか選択できないので注意
- H8MAXの電源を入れます。次のようなメッセージが出れば正しく動作しています。
+DP83902A - eeprom ESA: XX:XX:XX:XX:XX:XX
Ethernet eth0: MAC address 00:02:cb:01:6d:37
Can't get BOOTP info for device!
RedBoot(tm) bootstrap and debug environment [ROM]
Non-certified release, version UNKNOWN - built 18:10:18, Apr 3 2003
Platform: H8MAX (H8/300H)
Copyright (C) 2000, 2001, 2002, Red Hat, Inc.
RAM: 0x00400000-0x005f4000, 0x00400000-0x005f4000 available
RedBoot>
|
※XX:XX:XX:XX:XX:XXの部分がH8MAXのMACアドレスです。この16進数はH8MAXの製品1つ1つに違う番号がつけられています。
◎次のDHCPクライアントの設定で使いますので、この16進数を控えておいてください。
この画面でhelp[Enter]と入力するとヘルプが出ます。
◆H8MAXをDHCPクライアントとして使う。
- DHCPサーバの設定
H8MAXをDHCPクライアントとして使うためには、DHCPサーバが必要です。動作の確認が取れているのはdhcpdです。
最新版はこちら[ http://www.isc.org/products/DHCP/ ]から拾えますが、普通のLinuxのディストリビューションなら入っているはずです。
それ以外のDHCPサーバ(WindowsのDHCPサーバ等)でも動作可能なものがあると思いますが、こちらでは確認が取れておりません。
- /etc/dhcpd.confを作成(あるいは修正)します。例えば次のような感じになります。
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.30 192.168.0.100;
}
host h8max {
hardware ethernet 00:02:cb:01:6c:5a;
fixed-address 192.168.0.199;
}
|
上記の黄色の部分に前述のredbootを実行したしたときに表示されたMACアドレスを記入します。
赤字の部分はH8MAXに設定するIPアドレスです。ここでは192.168.0.199を設定しています。
緑の部分("h8max")はホスト名ですの自由につけてください。
上記を参考に自分の環境に合わせてMACアドレスやIPアドレスを決定してください。
- dhcpdを再起動します。redhat系から次のような操作になります。
$ su
# /etc/rc.d/init.d/dhpcd restart # 再起動
- もう一度H8MAXを起動してみてください。
するとDHCPサーバからIPアドレスを取得して次のようなメッセージに変わるはずです。
+DP83902A - eeprom ESA: 00:02:cb:01:6d:37
Ethernet eth0: MAC address 00:02:cb:01:6d:37
IP: 192.168.0.199/255.255.255.0, Gateway: 0.0.0.0
Default server: 192.168.0.9, DNS server IP: 0.0.0.0
RedBoot(tm) bootstrap and debug environment [ROM]
Non-certified release, version UNKNOWN - built 18:10:18, Apr 3 2003
Platform: H8MAX (H8/300H)
Copyright (C) 2000, 2001, 2002, Red Hat, Inc.
RAM: 0x00400000-0x005f4000, 0x00400000-0x005f4000 available
RedBoot>
|
うまくいかない場合は次の点を確認してください
- dhcpd.confの書き方が間違っていませんか?
文の行末にはセミコロンを必ず書きます。ログを参照してうまくconfファイルを読み込んでいるか、起動しているか確認してください。
- 違うマシン・ルータなどのdhcpdが稼働していないか?
ほかの機械のdhcpdが応答してしまっているかもしれません。
- ネットワークケーブルがつながっていますが、ハブへ接続されていますか?
初歩的ですが忘れていることがあります(汗)
- 実はIPアドレスを手動で設定することも可能です。
RedBoot> ip_address -l 192.168.0.33 -h 192.168.0.9
IP: 192.168.0.33/255.255.255.0, Gateway: 0.0.0.0
Default server: 192.168.0.9, DNS server IP: 0.0.0.0
RedBoot>
|
上記のように入力すればローカルIPとサーバIPを設定できます。
◆tftpの設定
カーネルを転送するためにはtftpサーバが必要です。通常ディストリビューションに入っているin.tftpdを使います。
通常tftpdはtcpwrapperから起動するようになっていますので、xinetdの設定が必要です。
/etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
# protocol. The tftp protocol is often used to boot diskless \
# workstations, download configuration files to network-aware printers, \
# and to start the installation process for some operating systems.
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
|
NFSの設定を次のような感じに入れます。H8MAXが192.168.0.123の場合
$ cat /etc/exports
/tftpboot/192.168.0.123 192.168.0.123(rw,no_root_squash)
|
xinetdを再起動します。
$ su
# /etc/rc.d/init.d/xinetd restart
|
上記ファイルに設定したディレクトリ(/tftpboot)にカーネルを置きます。linux.binなど
H8MAXを起動して次のように入力します。
+DP83902A - eeprom ESA: XX:XX:XX:XX:XX:XX
Ethernet eth0: MAC address XX:XX:XX:XX:XX:XX
IP: 192.168.0.199/255.255.255.0, Gateway: 0.0.0.0
Default server: 192.168.0.9, DNS server IP: 0.0.0.0
RedBoot(tm) bootstrap and debug environment [ROM]
Non-certified release, version UNKNOWN - built 18:10:18, Apr 3 2003
Platform: H8MAX (H8/300H)
Copyright (C) 2000, 2001, 2002, Red Hat, Inc.
RAM: 0x00400000-0x005f4000, 0x00400000-0x005f4000 available
RedBoot> load -r -b 0x400000 h8max-20030802.bin
Raw file loaded 0x00400000-0x00516ef7, assumed entry at 0x00400000
|
ここではカーネルのファイル名をh8max-20030802.binと仮定しています。お手元の環境のファイルを指定してください。
0x400000は物理アドレスです。この0x400000からDRAMの空間になっています。
ENTERを押すとネットワークのTX,RXが点滅し、ファイルを転送しているのがわかると思います。
数秒で転送が終わり、プロンプトに戻ります。
あとは実行するだけです。
RedBoot> exec -c console=ttySC1,38400
Now booting linux kernel:
Entry Address 0x00400000
Cmdline : console=ttySC1,38400
Linux version 2.4.21-uc0 (ochiai@office) (gcc バージョン 3.3) #10 2003年 7月 31日 木曜日 23:29:48 JST
uClinux H8/300H
Target Hardware: H8MAX
<以下省略>
|
-cの後はカーネルのコマンドラインです。上記ではコンソールをttySC1、つまりH8のRXD1,TXD1から出るように設定しているものです。これがないと次の起動メッセージがRXD0,TXD0から出るのでターミナルに何も出なくなります。
複数のパラメータがある場合は
-c "console=ttySC1,38400 root=...."
のように"で囲ってください。
|
 |
redboot(開発編) |
 |
■redbootはecosの1つのパッケージです。ecosからredbootを構築します。
詳しくはhttp://sourceforge.jp/projects/ecos-h8/document/aki3068net.html/ja/2/aki3068net.htmlを参考に構築します。
あらかじめクロス開発ツールはインストールしておいてください。
ダウンロードセンターからecosをダウンロードします。
$ pwd
/home/ochiai/redboot
$ wget http://ip-sol.jp/h8max/down/ecos-2.0.i386linux.tar.bz2
$ tar jxvf ecos-2.0.i386linux.tar.bz2
|
構築には環境の変数変数の設定が必要です。~/.bashrcなどに次の項目を追加してください。
- export PATH=$PATH:/home/ochiai/redboot/ecos-2.0/tools/bin
- export ECOS_REPOSITOTY=/home/ochiai/redboot/ecos-2.0/packages
青部分はご自分のecosを解凍したディレクトリ(前記 pwdを参照)を指定します。
$ ecosconfig new h8max redboot
U CYGSEM_HAL_ROM_MONITOR, new inferred value 1
$ ecosconfig add CYGPKG_IO_ETH_DRIVERS
$ ecosconfig add CYGPKG_DEVS_ETH_NS_DP83902A
$ ecosconfig tree
| あとはmakeします。install/binにelfファイルができます。これをMOTファイルに変換してH8MAX内蔵フラッシュに書き込みます。$ make
$ cd install/bin
$ ll
合計 764
-rwxrwxr-x 1 ochiai ochiai 777755 8月 23 14:11 redboot.elf
$ h8300-elf-objcopy -O srec redboot.elf redboot.elf.mot
|
| |