第10章 ブートローダー仕様

本章では、ブートローダーの起動モードや利用することができる機能について説明します。

10.1. ブートローダーイメージの選択

電源投入時の"SDBOOT_EN"ピンの状態によりブートローダーイメージを選択することができます。"SDBOOT_EN"ピンの状態がLowであればフラッシュメモリのbootloaderパーティションに書き込まれているブートローダーが起動し、"SDBOOT_EN"ピンの状態がHighであればSDカードの第1パーティションのブートローダーイメージ(/sdboot.bin)が起動します。Armadillo-840のデフォルト状態では、"SDBOOT_EN"ピンはLow(GNDに10kΩプルダウン)となっており、フラッシュメモリに書き込まれているブートローダーが起動します。

表10.1 SDBOOT_ENピンとブートローダーイメージの対応

SDBOOT_ENブートローダーイメージ
Low(0V)フラッシュメモリのbootloaderパーティション
High(3.3V)SDカードの第1パーティションの/sdboot.bin

"SDBOOT_EN"ピンはArmadillo-840のJP2に接続されており、ジャンパーのオープン/ショートによりブートローダーイメージを選択することができます。

表10.2 Armadillo-840のJP2によるブートローダーイメージの選択

JP2ブートローダーイメージ
オープンフラッシュメモリのbootloaderパーティション
ショートSDカードの第1パーティションの/sdboot.bin

10.2. ブートローダー起動モード

ブートローダーが起動すると"HERMIT_EN_N"ピンの状態により2つのモードのどちらかに遷移します。

表10.3 ブートローダー起動モード

起動モードの種別HERMIT_EN_N説明
OS自動起動モードHigh(3.3V)電源投入後、自動的にLinuxカーネルを起動させます。
保守モードLow(0V)各種設定が可能なHermit-Atコマンドプロンプトが起動します。

"HERMIT_EN_N"ピンはArmadillo-840のJP1と開発用USBシリアル変換アダプタに接続されています。JP1をオープンすると"HERMIT_EN_N"ピンの状態はHigh、ショートとすると"HERMIT_EN_N"ピンの状態はLowとなります。開発用USBシリアル変換アダプタではスライドスイッチに接続されており、基板内側にスライドさせると"HERMIT_EN_N"ピンの状態はHigh、外側にスライドさせると"HERMIT_EN_N"ピンの状態はLowとなります。

JP1と開発用USBシリアル変換アダプタのスライドスイッチの組み合わせにより、どの起動モードとなるかを表10.4「ブートローダー起動モードスイッチ」に示します。

表10.4 ブートローダー起動モードスイッチ

Armadillo-840

JP1

開発用USBシリアル変換アダプタ

スライドスイッチ

起動モード
オープン内側OS自動起動モード
オープン外側保守モード
ショート内側保守モード
ショート外側保守モード

10.3. ブートローダーの機能

Hermit-Atの保守モードでは、Linuxカーネルの起動オプションの設定やフラッシュメモリの書き換えなどを行うことできます。

保守モードで利用できるコマンドは、表10.5「保守モードコマンド一覧」に示します。

表10.5 保守モードコマンド一覧

コマンド説明

tftpdl

erase

program

download

フラッシュメモリを書き換える場合に使用します
memmapフラッシュメモリのメモリマップを表示します

setbootdevice

setenv

clearenv

OSの起動設定をする場合に使用します

boot

tftpboot

OSを起動する場合に使用します
macMACアドレスを表示します
frob簡易的にメモリアクセスする場合に使用します
md5sumメモリ空間のMD5サム値を表示する場合に使用します
infoハードウェアの情報を表示します
versionブートローダーのバージョンを表示します

各コマンドのヘルプを表示するには図10.1「hermitコマンドのヘルプを表示」のようにします。

hermit> help [コマンド]

図10.1 hermitコマンドのヘルプを表示


[ティップ]

tftpdlおよびtftpbootは、TFTPプロトコルを使用してTFTPサーバーからイメージファイルをダウンロードします。デフォルトのデータブロックサイズが512Byteであるため、イメージファイルの最大サイズがブロック番号の桁溢れが発生しない33554431Byte(32MByte - 1Byte)に制限されます。これよりもサイズの大きいイメージファイルをダウンロードする場合は、"--blksize"オプションを利用してデータブロックサイズを増やす必要があります。

"--blksize"オプションには、IPフラグメンテーションが起きないデータブロックサイズを指定する必要があります。

10.3.1. コンソールの指定方法

ブートローダーおよびLinuxカーネルのコンソールを指定するには、後述するLinuxカーネル起動オプションを設定する場合のsetenvコマンドで行います。Linuxカーネル起動オプションのconsoleパラメータは、ブートローダーのコンソールにも影響する仕組みとなっています。

コンソール指定子とそれに対応するログ表示先/保守モードプロンプト出力先を表10.6「コンソール指定子とログ出力先」に示します。

表10.6 コンソール指定子とログ出力先

コンソール指定子OS自動起動モード時のログ出力先保守モードプロンプト出力先[a]
ttySC2Armadillo-840: CON4Armadillo-840: CON4
noneなしArmadillo-840: CON4
その他(tty1等)指定するコンソール[b]Armadillo-840: CON3

[a] ブートローダーの再起動後に反映されます

[b] ブートローダーのログは出力されません


10.3.2. Linuxカーネルイメージの指定方法

ブートローダーがOSを起動させる場合、フラッシュメモリに書き込まれたLinuxカーネルイメージか、SDカード内に保存されているイメージファイルを指定することができます。

Linuxカーネルイメージを指定するには、"setbootdevice"コマンドを使用します。表10.7「Linuxカーネルイメージ指定子」に示す指定子を設定することができます。

表10.7 Linuxカーネルイメージ指定子

指定子Linuxカーネルイメージの配置場所
flashフラッシュメモリのkernelパーティションに書き込まれたイメージ
mmcblk0p1

SDカードのパーティション1に保存されている/boot/linux.bin.gzファイル

"p1"はパーティションを示しており、"p2"とするとパーティション2のファイルを指定可能


10.3.3. Linuxカーネル起動オプションの指定方法

Linuxカーネルには様々な起動オプションがあります。詳しくは、Linuxの解説書や、Linuxカーネルのソースコードに含まれているドキュメント(Documentation/kernel-parameters.txt)を参照してください。

ここではArmadillo-840で使用することができる、代表的な起動オプションを表10.8「Linuxカーネルの起動オプションの一例」に紹介します。

表10.8 Linuxカーネルの起動オプションの一例

オプション指定子説明
console=

起動ログなどが出力されるイニシャルコンソールを指定します。

次の例では、コンソールにttySC2を、ボーレートに115200を指定しています。

console=ttySC2,115200
root=

ルートファイルシステムが構築されているデバイスを指定します。

デバイスにはLinuxカーネルが認識した場合のデバイスを指定します。

次の例では、デバイスにSDカードの第2パーティションを指定しています。

root=/dev/mmcblk0p2
rootwait

"root="で指定したデバイスが利用可能になるまでルートファイルシステムのマウントを遅らせます。

noinitrd

initrdを利用しないことを明示します。

mem

Linuxカーネルが利用可能なメモリの量を指定します。RAMの一部を専用メモリとして利用したい場合などに設定します。通常は設定する必要はありません。