嵌入式Linux如何設定獲取uboot引數

2022-02-18 07:40:38 字數 2700 閱讀 8776

---

title: 嵌入式linux如何設定獲取uboot引數

entryname: embeded-linux-debug-get-and-set-u-boot-envarg

date: 2020-07-20 09:33:01

categories:

tags:

- uboot

- arm

- linux

- debug

---章節概述:

uboot下可以通過命令訪問和修改環境變數,但是如果需要在arm-linux系統下訪問這些資料該怎麼辦呢?其實uboot早就幫我們想好了。

uboot版本:一般在2023年以後的都有(見過2023年版本的uboot教程)

在你使用的uboot**中用以下編譯指令:

make env arch=xx cross_complie=xx-
這樣就可以編譯tools/env下的**,編譯出的fw_printenv工具有讀寫uboot環境變數區的能力。

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檔案。

配置一定要和系統的配置相同。

跟據以上三個定義修改fw_env.config,以emmc為例:

# configuration file for fw_(printenv/setenv) utility.

# up to two entries are valid, in this case the redundant

# environment sector is assumed present.

# notice, that the "number of sectors" is not required on nor and spi-dataflash.

# futhermore, if the flash sector size is ommitted, this value is assumed to

# be the same as the environment size, which is valid for nor and spi-dataflash

# nor example

# mtd device name device offset env. size flash sector size number of sectors

#/dev/mtd1 0x0000 0x4000 0x4000

#/dev/mtd2 0x0000 0x4000 0x4000

# mtd spi-dataflash example

# mtd device name device offset env. size flash sector size number of sectors

#/dev/mtd5 0x4200 0x4200

#/dev/mtd6 0x4200 0x4200

# nand example

#/dev/mtd0 0x4000 0x4000 0x20000 2

# block device example

# device name env_offset env.bin_size env.bin_size env_partition_sectors

/dev/mmcblk0 0x3000000 0x20000 0x20000 0x8000

引數解析:

環境變數的燒寫位址是 0x80000,大小0x10000,block大小是0x20000。這裡因為mtd0分割槽設定了起始位址是0x80000,所以環境變數在此分割槽上的偏移位址為 0了

其實fw_printenv使用起來和uboot下的printenv和setenv指令是一模一樣的。

獲取uboot環境變數

fw_printenv [[ -n name ] | [ name ... ]]
如果不指定name,fw_printenv會列印出env區中的所有環境變數

設定uboot環境變數

fw_setenv name [ value ... ]
如果不指定value,表示要刪除這個name的環境變數。

嵌入式linux如何學習

俗話說萬事開頭難 然後中間難,最後難?剛開始的時候,你是否根本就不知如何開始,上網查資料被一堆堆新名詞搞的找不到北,去圖書館看書也是找不到方向?又是arm,又是linux,又是uboot頭都大了。不知道自己究竟從 開始?嵌入式linux如何學習 簡單說,從arm基礎知識到裸機程式設計,從ucosii...

如何學習嵌入式 嵌入式如何入門?

學習嵌入式,該學習什麼基本的知識呢?嵌入式如何入門?其次,應該對作業系統有所了解,這對你對硬體和軟體的理解,絕對有很大的幫助。應該把系統的管理理解一下,比如程序 執行緒,系統如何來分配資源的,系統如何來管理硬體的,當然,不是看書就能把這些理解透,如果不是一時能理解,沒關係,多看看,結合以後的專案經驗...

嵌入式Linux系統時間設定

linux系統的很多功能都需要讀取時間為基礎。比如 日誌系統需要時間戳以記錄log,為後期的問題排查提供支撐 cron服務需要正確的時間設定以支撐週期性 特定時間點執行某個任務 等等。大多數linux桌面系統都提供了豐富 友好的時間設定介面,很方便使用者進行時間設定,但是在定製化 特殊性很強的嵌入式...