根據uboot 2011,env的初始化主要是用env_relocate來實現。它的實現主要有:
1、如果gd->env_valid等於1,那麼,從dataflash中讀出資料,呼叫env_relocate_spec。
2、如果gd->env_valid等於0,那麼,直接使用default的env,這是直接編進code中的,呼叫set_default_env。
3、獲得資料要先建立env的hush table,然後匯入表中。
env_reloc,實現與env有關的命令的命令表的遷移,移動gd->reloc_off
環境變數在flash中的位址和大小是編譯時define的,因此,更新code之後環境變數不變。
get_env的實現
default_environment,是一張表,每行資料分別是環境變數和值
struct hsearch_data env_htable,hush表中的環境變數
get_env就是通過name查詢hush表得到value
uboot中新增FIQ中斷及相關問題
本文主要說明了在uboot中新增fiq中斷時遇到的問題以及對應的解決辦法。問題 一 發生fiq中斷之後處理器做了哪些事情?發生中斷之後arm處理器需要處理完當前的指令,然後自動完成以下事情 1.將當前程式狀態暫存器cpsr儲存到fiq模式下的備份程式狀態暫存器spsr fiq之中 執行中斷返回時其逆...
env相關的系統介面
描述c 庫函式 char getenv const char name 搜尋 name 所指向的環境字串,並返回相關的值給字串。宣告下面是 getenv 函式的宣告。char getenv const char name 引數name 包含被請求變數名稱的 c 字串。返回值該函式返回乙個以 null...
關於U boot中命令相關的程式設計
main loop 這個函式裡有太多編譯選項,對於smdk2410,去掉所有選項後等效下面的程式 複製內容到剪貼簿 void main loop int len int rc 1 int flag char s int bootdelay s getenv bootdelay 自動啟動核心等待延時 ...