本章では、ブートローダーの起動シーケンスや機能について説明します。
Armadillo-EVA 1500 のブートローダーは、IPL(1st ブートローダー)と Hermit-At(2nd ブートローダー)から構成されます。工場出荷状態では、各ブートローダーイメージは SPI フラッシュメモリに配置されています。
IPL は Hermit-At を起動する機能のみを持ちます。Hermit-At は Linuxカーネルの起動や、Linuxカーネル起動オプションを設定する機能などを持ちます。
ここでは、工場出荷状態の Armadillo-EVA 1500 で Hermit-At が起動するまでの流れについて説明します。
Armadillo-EVA 1500 へ電源を投入すると、プロセッサ(R8A77430HA01BG)の機能により SPI フラッシュメモリの ipl パーティション(16kByte) が Secure RAM にコピーされ、先頭にジャンプします。
スタックポインタなどの最低限の初期化をおこなった後、IPL 自身が Hermit-At の起動処理部を Inter Connect RAM0 にリロケートします。これは、Secure RAM 全体を bootloader パーティションのコピー領域として開放するためです。
IPL は SPI フラッシュメモリの bootloader パーティション(256kByte) を Secure RAM にコピーして先頭にジャンプします。
| |
---|
SW1.7、SW1.8を OFF に設定した場合は IPL を起動することができません。これは、プロセッサが SPI フラッシュメモリ から Secure RAM にコピーするサイズが 4kByte になるためです。IPL のプログラムサイズは約 12kByte です。
|
IPL が持つ機能によって、2ndブートローダーイメージを読み出すデバイスを選択することができます。
電源投入時の SW2.7 の設定により SPI フラッシュメモリと SDカードのどちらを使用するかを選択することができます。SW2.7 が ON であれば SPI フラッシュメモリの bootloader パーティションに書き込まれているブートローダーが起動し、OFF であれば SDカードの第1パーティションのブートローダー(/sdboot.bin)が起動します。
また SW2.7 が OFF の場合は SW9 の状態により、2つある SD インターフェースのどちらを使用するかを選択することができます。SW9 を押下した状態で電源を投入した場合は CON4 が、押下しない状態で電源を投入した場合は CON6 が選択されます。
表8.1 スイッチと 2nd ブートローダーの対応
SW2.7 | SW9 | 2nd ブートローダー |
---|
ON | - | SPI フラッシュメモリの bootloader パーティション |
OFF | 押下する | CON4 に接続した SDカードの第1パーティションの/sdboot.bin |
押下しない | CON6 に接続した SDカードの第1パーティションの/sdboot.bin |
Hermit-At が起動すると SW2.8 の設定により2つある起動モードのどちらかに遷移します。
表8.2 Hermit-At起動モード
起動モード | SW2.8 | 説明 |
---|
保守モード | ON | 各種設定が可能なHermit-Atコマンドプロンプトが起動します。 |
OS自動起動モード | OFF | 電源投入後、自動的にLinuxカーネルを起動させます。 |
Hermit-Atの保守モードでは、Linuxカーネルの起動オプションの設定や SPI フラッシュメモリの書き換えなどを行うことできます。
保守モードで利用できるコマンドを、表8.3「Hermit-Atの保守モードコマンド一覧」に示します。
表8.3 Hermit-Atの保守モードコマンド一覧
コマンド | 説明 |
---|
tftpdl erase program download | SPIフラッシュメモリを書き換える場合に使用します |
memmap | SPIフラッシュメモリのメモリマップを表示します |
setbootdevice setenv clearenv | OSの起動設定を変更する場合に使用します |
boot tftpboot | OSを起動する場合に使用します |
frob | 簡易的にメモリアクセスする場合に使用します |
md5sum | SPIフラッシュメモリ空間のMD5チェックサム値を表示する場合に使用します |
info | ハードウェアの情報を表示します |
version | ブートローダーのバージョンを表示します |
各コマンドのヘルプを表示するには図8.1「hermitコマンドのヘルプを表示」のようにします。
| |
---|
tftpdlおよびtftpbootは、TFTPプロトコルを使用してTFTPサーバーからイメージファイルをダウンロードします。デフォルトのデータブロックサイズが512Byteであるため、イメージファイルの最大サイズがブロック番号の桁溢れが発生しない33554431Byte(32MByte - 1Byte)に制限されます。これよりもサイズの大きいイメージファイルをダウンロードする場合は、"--blksize"オプションを利用してデータブロックサイズを増やす必要があります。
"--blksize"オプションには、IPフラグメンテーションが起きないデータブロックサイズを指定する必要があります。
|
ブートローダーおよびLinuxカーネルのコンソールを指定するには、後述するLinuxカーネル起動オプションを設定する場合のsetenvコマンドで行います。Linuxカーネル起動オプションのconsoleパラメータは、ブートローダーのコンソールにも影響する仕組みとなっています。
コンソール指定子とそれに対応するログ表示先/保守モードプロンプト出力先を表8.4「コンソール指定子とログ出力先」に示します。
表8.4 コンソール指定子とログ出力先
コンソール指定子 | OS自動起動モード時のログ出力先 | 保守モードプロンプト出力先[] |
---|
ttySC3 | CON14 | CON14 |
ttySC2 | CON16 | CON16 |
none | なし | CON14 |
その他(tty1等) | 指定するコンソール[] | CON14 |
8.4.2. Linuxカーネルイメージの指定方法
Hermit-AtがOSを起動させる際、eMMC と SDカードのどちらに保存されているLinuxカーネルイメージを使用するかを指定することができます。
Linuxカーネルイメージを指定するには、"setbootdevice"コマンドを使用します。表8.5「Linuxカーネルイメージ指定子」に示す指定子を設定することができます。
表8.5 Linuxカーネルイメージ指定子
指定子 | Linuxカーネルイメージの配置場所 |
---|
mmcblk0p1[] | eMMCのパーティション1に保存されているLinuxカーネルイメージ |
mmcblk1p2[] | CON6に接続されたSDカードのパーティション2に保存されているLinuxカーネルイメージ |
mmcblk2p2[] | CON4に接続されたSDカードのパーティション2に保存されているLinuxカーネルイメージ |
tftp | TFTPサーバー上に保存されているLinuxカーネルイメージ |
Linuxカーネルイメージ指定子として"tftp"を指定する場合は、Linuxカーネルイメージ指定子の他にTFTPサーバーのIPアドレスなどを指定する必要があります。次の例では、ArmadilloのIPアドレスを 192.168.10.10 に設定し、IP アドレスが 192.168.10.1 のTFTPサーバー上にあるlinux.bin
を Linuxカーネルイメージとして指定します。
8.4.3. Linuxカーネル起動オプションの指定方法
Linuxカーネルには様々な起動オプションがあります。詳しくは、Linuxの解説書や、Linuxカーネルのソースコードに含まれているドキュメント(Documentation/kernel-parameters.txt)を参照してください。
ここではArmadillo-EVA 1500で使用することができる、代表的な起動オプションを表8.6「Linuxカーネルの起動オプションの一例」に紹介します。
表8.6 Linuxカーネルの起動オプションの一例
オプション指定子 | 説明 |
---|
console= |
起動ログなどが出力されるイニシャルコンソールを指定します。
次の例では、コンソールにttySC3(CON14)を、ボーレートに115200を指定しています。
|
root= |
ルートファイルシステムが構築されているデバイスを指定します。
デバイスにはLinuxカーネルが認識した場合のデバイスを指定します。
次の例では、デバイスに eMMC の第2パーティションを指定しています。
|
rootwait |
"root="で指定したデバイスが利用可能になるまでルートファイルシステムのマウントを遅らせます。
|
noinitrd |
initrdを利用しないことを明示します。
|
mem |
Linuxカーネルが利用可能なメモリの量を指定します[]。
|