2014年9月18日 星期四

uEnv.txt

uEnv.txt 是 u-boot 環境變數 bootenv 預設的額外環境變數設定檔。u-boot 環境變數除了可以透過指令 setenv 設定外,也可以用指令 env import 載入。

大致流程如下:
開機預設執行 bootcmd → 執行 mmcboot → 執行 loadbootenv → 執行 importbootenv 載入環境變數 → 執行 uenvcmd (如果有的話)。

開機執行的 bootcmd 會去執行 mmcboot:
bootcmd=run findfdt; run mmcboot;setenv mmcdev 1; setenv bootpart 1:2; run mmcboot;run nandboot;

mmcboot 執行 loadbootenv 成功的話,執行 importbootenv 載入環境變數。如果 uEnv.txt 有 uenvcmd,就執行它。

mmcboot=mmc dev ${mmcdev};
if mmc rescan; then
    echo SD/MMC found on device ${mmcdev};
    if run loadbootenv; then
        echo Loaded environment from ${bootenv};
        run importbootenv;
    fi;
    if test -n $uenvcmd; then
        echo Running uenvcmd ...;
        run uenvcmd;
    fi;
    if run loadimage; then
        run mmcloados;
    fi;
fi;


loadbootenv 將 bootenv (也就是 uEnv.txt) 載入到記憶體 loadaddr 的位置:
loadbootenv=load mmc ${mmcdev} ${loadaddr} ${bootenv}

importbootenv 將記憶體中的環境變數用 env import 載入:
importbootenv=echo Importing environment from mmc ...; env import -t $loadaddr $filesize

註解:#

參考來源:
  • BeagleBone Black u-boot
  • u-boot source code: lib/hashtable.c himport_r()
延伸閱讀:

沒有留言:

張貼留言

SIP header Via

所有 SIP 訊息 都要有 Via,縮寫 v。一開始的 UAC 和後續途經的每個 proxy 都會疊加一個 Via 放傳送的位址,依序作為回應的路徑。 格式 sent-protocol sent-by [ ;branch= branch ][ ; 參數 ...] s...