このエントリーをはてなブックマークに追加

Armadillo-640:SDブート用の環境変数を設定済みのSDブートディスクの作成方法

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ブートディスクで起動します。

製品: 

  • Armadillo-640

タグ: 

  • Armadillo-600
  • U-Boot