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

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

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
hermit> setenv
1: console=ttymxc1
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.10)に置かれた linux.bin.gz というファイル名のカーネルイメージを取得してブートするには、図A.17「ブートデバイスに TFTP サーバーを指定する」のようにコマンドを実行します。

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

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


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 の使用例


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

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

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
MXC IRQ initialized
    :
    :

図A.24 boot の使用例


1

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

2

setenv でカーネル起動オプションを設定している場合、ここで表示されます。ここまでは Hermit-At が表示しています。

3

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

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

Armadilllo-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 という組み合わせのみで発生し、それ以外の組み合わせでは発生しません。

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



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