2013-12-16 196 views
8

我正在使用運行u-boot的嵌入式linux套件。爲了讓一切正常啓動,我必須修改一些環境變量並使用'saveenv'命令來存儲它們。如何清除先前用u-boot保存的環境變量?

現在我想回過頭來看看默認設置是什麼,確認我確切地知道發生了什麼變化,並找出一種方法來改變這些默認設置,以便生產中的每個單位不需要單獨啓動並修改。

有沒有辦法告訴u-boot清除任何保存的數據,以便我可以再次查看默認值?閃光類型是QSPI,如果這有所作爲。

+2

U-Boot環境區域使用32位CRC進行驗證,因此如果在非易失性存儲器中對其進行破壞,只需要一個字節,則U-Boot將在啓動時恢復爲默認設置。 – sawdust

回答

13

在你的包,請嘗試

help env 

並查找 「ENV默認」。

env default [-f] var [...] - [forcibly] reset variable(s) to their default values 

這聽起來像你在找什麼。

env default -a 

做了一個非持久性的改變,那麼「printenv」顯示默認值。

要更改默認設置,您需要重新構建您的u-boot.bin,其中包含更改。到CONFIG_EXTRA_ENV_SETTINGS。

+0

我在./u-boot/include/configs/board-vendor.h.template中找到了配置。但是,在CONFIG_EXTRA_ENV_SETTINGS的這一部分中,我看到如下內容: 「loadaddr = @ nstart @ \ 0」 您知道'nstart'和其他類似變量的設置位置嗎?如果有更好的方法,我寧願不要用數字替換它們。 – KyleL

+0

當前u-boot似乎沒有board-vendor.h,並且我不認可變量語法@nstart,對不起。 –

+0

它必須是特定於我的套件(使用Xilinx Petalinux的Avnet Zedboard)。謝謝您的幫助! – KyleL

0

要使用默認瓦爾不從閃存刪除它們執行

env default -a 

的u-boot中,然後執行$bootcmdJoe Kul的解決方案。

erase the vars from the SPI flash執行

run eraseenv 

的u-boot中,然後重新啓動。