ブログ

Armadilll-IoT G3(M1モデル): Linux動作中に(eMMCに書かれた)U-Bootのパラメータを確認、変更する方法

at_ito
2019年5月5日 13時17分

U-Bootのパラメータは、保守モードで起動した後にprintenvや、setenv等のコマンドで確認できますが、標準の状態ではLinuxが起動している状態でU-Bootのパラメータを確認、変更できません。そのため、ここでは新しくパッケージを入れることで、Linux上でU-Bootのパラメータを確認、変更する方法を紹介します。

本ブログでは、Armadillo-IoT G3(M1モデル)用の内容になります。Armadillo-X1, Armadillo-IoT G3/G3Lをご使用の方はLinux動作中に(SPIフラッシュに書かれた)U-Bootのパラメータを確認、変更する方法を参照してください。

1. 環境の確認

このブログでは以下の環境で確認を行っています。環境が異なる場合は、一部設定の変更が必要になる場合がありますので、適宜読み替えてください。

  • 製品: Armadillo-IoT G3
  • U-Bootの配置場所: eMMC(/dev/mtdblk2boot0)
  • U-Bootのバージョン: U-Boot 2016.07-at15

2. u-boot-toolsパッケージのインストール

U-Bootのパラメータを確認、変更するためのコマンド(fw_printenv, fw_setenv)が含まれるu-boot-toolsパッケージをインストールします。

以下のコマンドを実行してパッケージをインストールしてください。

[armadillo ~]# apt-get install u-boot-tools

3. u-boot-toolsの設定

u-boot-toolsは/etc/fw_env.configでパラメータがどこに配置されているかを設定する必要があります。

Armadilloでは、/etc/fw_env.configを以下のように設定してください。

# Configuration file for fw_(printenv/saveenv) utility.
# Up to two entries are valid, in this case the redundant
# environment sector is assumed present.
#
# XXX this configuration might miss a fifth parameter for the "Number of
# sectors"

# MTD device name   Device offset   Env. size   Flash sector size
/dev/mmcblk2boot0           0xe0000         0x2000

※: 上記設定ファイルは、Deivce offsetはU-BootソースコードのCONFIG_ENV_OFFSET、Env. sizeはU-BootソースコードのCONFIG_ENV_SIZE、Flash sector sizeは"cat /proc/mtd"の出力結果から設定しています。

4. パラメータの確認

Linux上で以下のように、fw_printenvを実行することでSPIフラッシュに設定されているU-Bootパラメータが確認できます。

[armadillo ~]# fw_printenv

5. パラメータの設定

以下のようにfw_setenvコマンドを実行することで、U-Bootのパラメータを変更することができます。

[armadillo ~]# echo 0 > /sys/block/mmcblk2boot0/force_ro
[armadillo ~]# fw_setenv [variable name] [variable value]
[armadillo ~]# echo 1 > /sys/block/mmcblk2boot0/force_ro