| 
      
      
        
          
            
            
  
    
        | 
       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
                  
                  
  |  
 
 
  |    |