付録A Hermit-At ブートローダー

Hermit-At は、アットマークテクノ製品に採用されている高機能ダウンローダー兼ブートローダーです。Armadillo を保守モードで起動すると、Hermit-At ブートローダーのプロンプトが表示されます。プロンプトからコマンドを入力することにより、フラッシュメモリの書き換えや、Linux カーネルパラメーターの設定等 Hermit-At ブートローダーの様々な機能を使用することができます。ここでは、代表的な機能について説明します。

[ティップ]Hermit-ATのモード

Hermit-ATには、2つのモードがあります。コマンドプロンプトを表示して対話的に動作する「対話モード」と、Hermit-ATダウンローダと通信するための「バッチモード」です。バッチモードではコマンドプロンプトの表示や入力した文字の表示を行いませんが、コマンドの実行は可能です。

起動直後のHermit-ATは必ず対話モードになっています。対話モードからバッチモードに移行するにはチルダ「~」を、バッチモードから対話モードに移行するにはエクスクラメーションマーク「!」を入力します。

Hermit-ATダウンローダと通信を行った場合は、バッチモードに移行します。これは通信を確立するためにHermit-ATダウンローダがチルダを送信するためです。

対話モードからバッチモードに移行したり、バッチモード中に入力したコマンドが成功した場合などは以下のように表示されます。

+OK

A.1. version

バージョン情報を表示するコマンドです。

構文:version

図A.1 version 構文


A.1.1. version 使用例

hermit> version
Hermit-At v2.0.0 (armadillo4x0) compiled at 23:03:08, Mar 08 2010

図A.2 version の使用例


A.2. info

ボード情報を表示するコマンドです。

構文:info

図A.3 info 構文


A.2.1. info 使用例

hermit> info
 Board Type: 0x00000440
Hardware ID: 0x00000300
    DRAM ID: 0x00000002
     Jumper: 0x00000001
    Tact-SW: 0x00000000

図A.4 info の使用例


A.3. memmap

フラッシュメモリと DRAM のメモリマップを表示するコマンドです。

構文:memmap

図A.5 memmap 構文


A.3.1. memmap 使用例

hermit> memmap
0xa0000000:0xa1ffffff FLA all bf:8K bl:4x32K/l,255x128K/l
0xa0000000:0xa001ffff FLA bootloader bf:8K bl:4x32K/l
0xa0020000:0xa021ffff FLA kernel bf:8K bl:16x128K
0xa0220000:0xa1fdffff FLA userland bf:8K bl:238x128K
0xa1fe0000:0xa1ffffff FLA config bf:8K bl:1x128K
0x80000000:0x87ffffff RAM dram-1

図A.6 memmap の使用例


A.4. mac

MAC アドレスを表示するコマンドです。

構文:mac

図A.7 mac 構文


A.4.1. mac 使用例

hermit> mac
00:11:0c:00:00:00

図A.8 mac の使用例


A.5. md5sum

メモリのある区間の md5sum 値を計算して表示するコマンドです。

構文:md5sum <開始アドレス> <サイズ>

図A.9 md5sum 構文


A.5.1. md5sum 使用例

bootloader リージョンの先頭から 1024 Bytes の区間の md5sum 値を計算して表示するには、図A.10「md5sum の使用例」のようにコマンドを実行します。

hermit> memmap
0xa0000000:0xa1ffffff FLA all bf:8K bl:4x32K/l,255x128K/l
0xa0000000:0xa001ffff FLA bootloader bf:8K bl:4x32K/l
0xa0020000:0xa021ffff FLA kernel bf:8K bl:16x128K
0xa0220000:0xa1fdffff FLA userland bf:8K bl:238x128K
0xa1fe0000:0xa1ffffff FLA config bf:8K bl:1x128K
0x80000000:0x87ffffff RAM dram-1
hermit> md5sum 0xa0000000 1024
fd44ce938f65726dc59669f537154429

図A.10 md5sum の使用例


A.6. erase

フラッシュメモリの消去を行うコマンドです。

構文:erase [アドレス]

図A.11 erase 構文


A.6.1. erase 使用例

hermit> erase 0xa0fe0000

図A.12 erase の使用例


A.7. setenv と clearenv

Linux カーネルパラメーターを設定するコマンドです。setenv で設定されたパラメータは、Linux カーネルブート時にカーネルに渡されます。clearenv を実行すると、設定がクリアされます。このパラメータは、フラッシュメモリに保存され再起動後も設定は有効となります。

構文:setenv [カーネルパラメーター]...
説明:カーネルパラメーターを設定します。オプションを指定せずに実行すると、現在の設定を表示します。

構文:clearenv
説明:設定されているオプションをクリアします。

図A.13 setenv/clearenv 構文


A.7.1. setenv/clearenv 使用例

hermit> setenv console=ttymxc1,115200
hermit> setenv
1: console=ttymxc1,115200
hermit> clearenv
hermit> setenv
hermit>

図A.14 setenv と clearenv の使用例


A.7.2. Linux カーネルパラメーター

Linux カーネルパラメーターの例を、表A.1「よく使用されるLinuxカーネルパラメーター」に示します。この他のオプションについては、linux-2.6/Documentation/kernel-parameters.txtを参照してください。

表A.1 よく使用されるLinuxカーネルパラメーター

オプション説明
consoleカーネルコンソールとして使用するデバイスを指示します。
rootルートファイルシステム関連の設定を指示します。
rootdelayルートファイルシステムをマウントする前に指定秒間待機します。
rootwaitルートファイルシステムがアクセス可能になるまで待機します。
noinitrdカーネルが起動した後に initrd データがどうなるのかを指示します。
nfsrootNFSを使用する場合に、ルートファイルシステムの場所やNFSオプションを指示します。

[警告]

console オプションに ttymxc1,2,4 を指定すると、次回起動時から Hermit-At が使用するシリアルインターフェースも変更されます。

A.8. setbootdevice

Linux カーネルを格納しているブートデバイスを指定するコマンドです。この設定はフラッシュメモリに保存され、再起動後も設定は有効となります。

構文:setbootdevice flash
説明:フラッシュメモリの kernel リージョンに格納されたカーネルイメージを RAM に展開してブートします

構文:setbootdevice tftp <クライアントIPアドレス> <サーバーIPアドレス> [--kernel=<path>] [--userland=<path>]
説明:TFTP サーバーに置かれたカーネルまたは/およびユーザーランドイメージを取得し、RAM に展開してブートします

構文:setbootdevice mmcblk0pN
説明:MMC/SDカードのパーティションN/boot/ ディレクトリに置かれたカーネルイメージを RAM に展開してブートします

図A.15 setbootdevice 構文


A.8.1. setbootdevice の使用例

フラッシュメモリに格納されたカーネルイメージでブートするには、図A.16「ブートデバイスにフラッシュメモリを指定する」のようにコマンドを実行します。

hermit> setbootdevice flash

図A.16 ブートデバイスにフラッシュメモリを指定する


TFTP サーバー(IP アドレス: 192.168.10.1)に置かれた linux.bin.gz というファイル名のカーネルイメージを取得してブートするには、図A.17「ブートデバイスに TFTP サーバーを指定する」のようにコマンドを実行します。

hermit> setbootdevice tftp 192.168.10.10 192.168.10.1 --kernel=linux.bin.gz

図A.17 ブートデバイスに TFTP サーバーを指定する


[警告]

クライアントIPアドレスは、TFTPサーバと通信を行う際一時的に使用するIPアドレスです。同一ネットワーク内で重複しないIPアドレスを指定してください。

SD/MMC カードのパーティション 1 に格納されたカーネルイメージでブートするには、図A.18「ブートデバイスにSD/MMC カードを指定する」のようにコマンドを実行します。

hermit> setbootdevice mmcblk0p1

図A.18 ブートデバイスにSD/MMC カードを指定する


A.9. frob

指定したアドレスのデータを読み込む、または、変更することができるモードに移行するコマンドです。

表A.2 frob コマンド

frobコマンド説明
peek [addr]指定されたアドレスから32bitのデータを読み出します。
peek16 [addr]指定されたアドレスから16bitのデータを読み出します。
peek8 [addr]指定されたアドレスから8bitのデータを読み出します。
poke [addr] [value]指定されたアドレスに32bitのデータを書き込みます。
poke16 [addr] [value]指定されたアドレスに16bitのデータを書き込みます。
poke8 [addr] [value]指定されたアドレスに8bitのデータを書き込みます。

A.10. tftpdl

TFTP プロトコルを使用して TFTP サーバーからファイルをダウンロードし、フラッシュメモリの書き換えを行うコマンドです。

構文:tftpdl <クライアントIPアドレス> <サーバーIPアドレス> <オプション> [オプション]...
説明:自 IP アドレスをクライアント IP アドレスに設定し、サーバー IP アドレスで指定された TFTP サーバーに置かれたイメージをダウンロードし、フラッシュメモリに書き込みます。

図A.19 tftpdl 構文


表A.3 tftpdl オプション

オプション説明
--bootloader=filepathbootloader リージョンに書き込むファイルを filepath で指定します。
--kernel=filepathkernel リージョンに書き込むファイルを filepath で指定します。
--userland=filepathuserland リージョンに書き込むファイルを filepath で指定します。
--fakeファイルのダウンロードだけを行い、フラッシュメモリには書き込まないよう指定します。

A.10.1. tdtpdl の使用例

hermit> tftpdl 192.168.10.10 192.168.10.1 --kernel=linux.bin.gz

Client: 192.168.10.10
Server: 192.168.10.1
Region(kernel): linux.bin.gz

initializing net-device...OK
Filename : linux.bin.gz
.................................................................................
.................................................................................
....................
Filesize : 1841551

programing: kernel
###############

completed!!

図A.20 tftpdl の使用例


[警告]

クライアントIPアドレスは、TFTPサーバと通信を行う際一時的に使用するIPアドレスです。同一ネットワーク内で重複しないIPアドレスを指定してください。

A.11. tftpboot

TFTP プロトコルを使用して TFTP サーバーからファイルをダウンロードし、RAM に展開してカーネルをブートするコマンドです。tftpdl と異なり、フラッシュメモリの書き換えを行いません。また、setbootdevice で tftp を指定したときと異なり、設定は保存されません。

構文:tftpboot <クライアント IP アドレス> <サーバー IP アドレス> <オプション> [オプション]...
説明:自 IP アドレスをクライアント IP アドレスに設定し、サーバー IP アドレスで指定された TFTP サーバーに置かれたイメージをダウンロードし、RAM に展開したあとブートします。

図A.21 tftpboot 構文


オプションには、表A.3「tftpdl オプション」と同じものを指定することができます。--fake オプションを指定したときは、ファイルのダウンロードだけを行い、カーネルのブートを行いません。

A.11.1. tdtpboot の使用例

hermit> tftpboot 192.168.10.10 192.168.10.1 --kernel=linux.bin.gz

Client: 192.168.10.10
Server: 192.168.10.1
Region(kernel): linux.bin.gz

initializing net-device...OK
Filename : linux.bin.gz
.................................................................................
.................................................................................
....................
Filesize : 1841551

Uncompressing  kernel:net........................................................
.................................................done.
Uncompressing ramdisk............................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
............................................done.                             1
Linux version 2.6.26-at6 (2.6.26) (atmark@sv-build) (gcc version 4.3.2 (Debian 
4.3.2-1.1) ) #6 PREEMPT Wed Mar 10 19:19:13 JST 2010                          2
    :
    :

図A.22 tftpboot の使用例


1

カーネルおよびユーザーランドのイメージ RAM 上に展開しています。

2

カーネルがブートされ、カーネルの起動ログが表示されます。

[警告]

クライアントIPアドレスは、TFTPサーバと通信を行う際一時的に使用するIPアドレスです。同一ネットワーク内で重複しないIPアドレスを指定してください。

A.12. boot

setbootdevice で指定されたブートデバイスから Linux カーネルをブートするコマンドです。

構文:boot

図A.23 boot 構文


A.12.1. boot 使用例

hermit> boot
Uncompressing  kernel............................................................
.............................................done.
Uncompressing ramdisk............................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
............................................done.                             1
Doing console=ttymxc1                                                         2
Linux version 2.6.26-at6 (2.6.26) (atmark@sv-build) (gcc version 4.3.2 (Debian 
4.3.2-1.1) ) #6 PREEMPT Wed Mar 10 19:19:13 JST 2010                          3
CPU: ARM926EJ-S [41069264] revision 4 (ARMv5TEJ), cr=00053177
Machine: Armadillo-440
Memory policy: ECC disabled, Data cache writeback
CPU0: D VIVT write-back cache
CPU0: I cache: 16384 bytes, associativity 4, 32 byte lines, 128 sets
CPU0: D cache: 16384 bytes, associativity 4, 32 byte lines, 128 sets
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32512
Kernel command line: console=ttymxc1,115200
MXC IRQ initialized
    :
    :

図A.24 boot の使用例


1

カーネルおよびユーザーランドのイメージ RAM 上に展開しています。

2

setenv でカーネルパラメーターを設定している場合、ここで表示されます。ここまでは Hermit-At が表示しています。

3

カーネルがブートされ、カーネルの起動ログが表示されます。

A.13. バージョンに関する注意

Armadillo-440 の基板リビジョン Rev.C1 以降 (S/N 100201-2195以降) に hermit-at v2.0.0 をベースに生成したブートローダーイメージ(loader-armadillo4x0-v2.0.0.bin等)及び linux-2.6.26-at7 をベースに生成したカーネルイメージ(linux-a400-1.00.bin.gz) を書き込むと、カーネルが起動しない不具合があります。この問題は、Rev.C1以降の基板、hermit-at v2.0.0 及び linux-2.6.26-at7 という組み合わせのみで発生し、それ以外の組み合わせでは発生しません。

Armadillo-440 の基板リビジョン Rev.C1 以降 (S/N 100201-2195以降) には、hermit-at v2.0.1 以降をベースに生成したブートローダーイメージ(loader-armadillo4x0-v2.0.1.bin以降)を使用してください。[53]



[53] Armadillo-440 Rev.C1 以降は、出荷状態でloader-armadillo4x0-v2.0.1.bin以降が書き込まれています。