在linux系統中通過fw_printenv檢視和設定u-boot中的環境變數
阿新 • • 發佈:2019-02-17
uboot下可以通過命令訪問和修改環境變數,但是如果需要在Linux系統下訪問這些資料該怎麼辦呢?其實uboot早就幫我們想好了。
1、編譯fw_printenv工具
在你使用的uboot程式碼中用以下編譯指令:
make env
這樣就可以編譯tools/env下的程式碼,編譯出的fw_printenv工具有讀寫uboot環境變數區的能力。這個工具是針對目標機的,也就是說如果你的uboot程式碼之前是針對ARM編譯的話,fw_printenv也是交叉編譯給ARM晶片的。
2、安裝fw_printenv工具
到/tools/env目錄中,將編譯好的fw_printenv拷貝到目標機的檔案系統中,並通過"ln -s fw_printenv fw_setenv",建立一個fw_setenv到fw_printenv的軟鏈。
其實fw_printenv使用起來和uboot下的printenv和setenv指令是一模一樣的。
列印uboot環境變數:
1、編譯fw_printenv工具
在你使用的uboot程式碼中用以下編譯指令:
make env
這樣就可以編譯tools/env下的程式碼,編譯出的fw_printenv工具有讀寫uboot環境變數區的能力。這個工具是針對目標機的,也就是說如果你的uboot程式碼之前是針對ARM編譯的話,fw_printenv也是交叉編譯給ARM晶片的。
2、安裝fw_printenv工具
到/tools/env目錄中,將編譯好的fw_printenv拷貝到目標機的檔案系統中,並通過"ln -s fw_printenv fw_setenv",建立一個fw_setenv到fw_printenv的軟鏈。
這個工具還需要一個配置檔案,以獲取uboot的ENV區域的位置資訊。預設狀態下,請將fw_env.config檔案拷貝到目標機的檔案系統的/etc目錄下。然後結合uboot配置中定義的ENV區和Linux下mtd分割槽的情況修改配置檔案。具體的修改方法見fw_env.config檔案中的說明及/tools/env/README檔案。
以s3c2416為例,s3c2416的配置檔案在include/configs/smdk2416.h,在檔案中找到了這樣幾個定義:
#define CFG_ENV_ADDR 0
#define CFG_ENV_SIZE 0x4000 /* Total Size of Environment Sector */
#define CFG_ENV_OFFSET 0x0003c00
跟據以上三個定義修改fw_env.config:
其實fw_printenv使用起來和uboot下的printenv和setenv指令是一模一樣的。
列印uboot環境變數:
fw_printenv [[ -n name ] | [ name ... ]]
如果不指定name,fw_printenv會打印出ENV區中的所有環境變
設定uboot環境變數:
fw_setenv name [ value ... ]
如果不指定value,表示要刪除這個name的環境變數。