カーネル段階での U-Boot 環境変数の読み取りと変更の手順

1. fw_printenv ツールをコンパイルします。

uboot ソースパス下で実行し、tools/env 配下に fw_printenv の実行ファイルを生成します。

。 /opt/fsl-imx-x1​​1/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabimake env

2. fw_env.config ファイルを構成する

mtd パーティション、UBOOT 環境変数の場所とサイズなどに従って、uboot ソース ディレクトリの tools/env にある fw_env.config ファイルを変更します。fw_env.config ファイルと /tools/env/README の手順を参照してください。特定の変更を行うためのファイル。

このうち、デバイス オフセット、環境サイズ、およびフラッシュ セクター サイズは、U-Boot ソース コード ディレクトリの include/configs/xxxx.h ファイル内の 3 つのマクロ定義 CONFIG_ENV_OFFSET、CONFIG_ENV_SIZE、および CONFIG_ENV_SECT_SIZE にそれぞれ対応する必要があります。

vi include/configs/mx6ul_14x14_evk.h

例としてテスト 256nand を取り上げます。

カーネル段階での U-Boot 環境変数の読み取りと変更の手順

CONFIG_ENV_OFFSET = 0x600000

ONFIG_ENV_SECT_SIZE = 0x20000

カーネル段階での U-Boot 環境変数の読み取りと変更の手順

tools/env/fw_env.config を開き、次の図に示すように変更します。

カーネル段階での U-Boot 環境変数の読み取りと変更の手順

例としてテスト 1gnand を取り上げます。

カーネル段階での U-Boot 環境変数の読み取りと変更の手順

CONFIG_ENV_OFFSET = 0x1000000

ONFIG_ENV_SECT_SIZE = 0x20000

カーネル段階での U-Boot 環境変数の読み取りと変更の手順

nand型番MT29F8G08ABACA

カーネル段階での U-Boot 環境変数の読み取りと変更の手順

マニュアルを参照して ENV_SECT_SIZE 値を 256K に変更してください。

カーネル段階での U-Boot 環境変数の読み取りと変更の手順

tools/env/fw_env.config を開き、次の図に示すように変更します。

カーネル段階での U-Boot 環境変数の読み取りと変更の手順

nand型番MT29F8G08ABABA

カーネル段階での U-Boot 環境変数の読み取りと変更の手順

マニュアルを参照してENV_SECT_SIZE値を512Kに変更してください。

カーネル段階での U-Boot 環境変数の読み取りと変更の手順

tools/env/fw_env.config を開き、次の図に示すように変更します。

3. ファイルをコピーします

tools/env/fw_env.config を開発ボードの /etc パスにコピーします。

tools/env/fw_printenv を、パス /usr/bin の下の開発ボードのルート ファイル システムにコピーします。 

そして、 fw_setenv ln -s /usr/bin/fw_printenv /usr/bin/fw_setenv へのソフトリンクを作成します。

4. 環境変数の読み書きテスト

読み取り環境:

環境変数を書き込みます:

uboot フェーズは同期的に変更されました。

5. 問題点と解決策

問題: make env が uboot ソース コードのエラーを報告する

解決策: 最上位 Makefile 内の CC をコメントアウトし、CC 内の環境変数を使用します。

元は www.forlinx.net で公開されています。

www.forlinx.net