Armadillo-640 製品マニュアル
12.4. SDブートの実行
では、一度、SDブートディスクを起動して、
=> setenv bootcmd ext4load mmc 1:2 \${loadaddr} /boot/uImage\; ext4load mmc 1:2 0x83000000 /boot/a640.dtb\; bootm \${loadaddr} - 0x83000000\; => setenv bootargs root=/dev/mmcblk1p2 rootwait => saveenv
のようにコンソールからSDブート用の環境変数を設定しています。
(saveenvをすることにより、次回起動以降は上記の設定は不要になります。)
上記のSDブート用の環境変数の設定は、予めブートローダーに設定しておくことも可能です。
ここでは、SDブート用の環境変数を予めブートローダーに設定しておくことで、
初回起動時のコンソールからの環境変数の設定を省くことができるSDブートディスクを作成します。
以下、
ブートローダーソースファイル:u-boot-a600-v2018.03-at1.tar.gz
の場合で説明します。
(ソースファイルのバージョンが違う場合は、ファイル名を読み替える必要があります。)
1.SDブートの変更
ブートローダーソースファイルを解凍します。
atmark@atde7:~$ tar xf u-boot-a600-v2018.03-at1.tar.gz
gedit等のエディタで、armadillo-640.hとarmadillo-640_defconfigを下記のように変更します。
u-boot-a600-v2018.03-at1/include/configs/armadillo-640.h
#define CONFIG_BOOTCOMMAND \ "ext4load mmc 0:2 ${loadaddr} /boot/uImage; ext4load mmc 0:2 0x83000000 /boot/a640.dtb; bootm ${loadaddr} - 0x83000000;"
の箇所を下記のように変更します。
#define CONFIG_BOOTCOMMAND \ "ext4load mmc 1:2 ${loadaddr} /boot/uImage; ext4load mmc 1:2 0x83000000 /boot/a640.dtb; bootm ${loadaddr} - 0x83000000;"
u-boot-a600-v2018.03-at1/configs/armadillo-640_defconfig
CONFIG_BOOTARGS="root=/dev/mmcblk0p2 rootwait"
の箇所を下記のように変更します。
CONFIG_BOOTARGS="root=/dev/mmcblk1p2 rootwait"
ブートローダーをビルドします。
atmark@atde7:~/u-boot-a600-v2018.03-at1$ make ARCH=arm armadillo-640_defconfig atmark@atde7:~/u-boot-a600-v2018.03-at1$ make CROSS_COMPILE=arm-linux-gnueabihf-
上記ビルドで生成された
u-boot-a600-v2018.03-at1/u-boot.imx
を下記のSDブートディスクのブートローダーとして使用します。
2.SDブートディスクの作成
Armadillo-640 製品マニュアル
12.1.1. 手順:ブートディスクの作成例
の手順で、SDカードに2つのプライマリパーティションを作成します。
この手順の最後でSDカードにブートローダーを書き込んでいますが、ここで書き込むブートローダーのファイル名は、
上記でビルドしたu-boot.imxです。
atmark@atde7:~/u-boot-a600-v2018.03-at1$ sudo dd if=u-boot.imx of=/dev/sdb bs=1k seek=1 conv=fsync
ルートファイルシステム、カーネルイメージ、DTBは、
Armadillo-640 製品マニュアル
12.2. ルートファイルシステムの構築
12.3. LinuxカーネルイメージとDTBの配置
の手順で、SDカードに書き込みます。
3.動作確認
上記までの手順で作成したSDカードをArmadillo-640に挿入して、JP1とJP2の両方共ショートの状態で起動すると、
初回起動時でも、
Armadillo-640 製品マニュアル
12.4. SDブートの実行
内の
=> setenv bootcmd ext4load mmc 1:2 \${loadaddr} /boot/uImage\; ext4load mmc 1:2 0x83000000 /boot/a640.dtb\; bootm \${loadaddr} - 0x83000000\; => setenv bootargs root=/dev/mmcblk1p2 rootwait => saveenv
の設定不要で、SDブートディスクで起動します。