---
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桌面系統都提供了豐富 友好的時間設定介面,很方便使用者進行時間設定,但是在定製化 特殊性很強的嵌入式...