記錄最近除錯uboot的心得,供後續總結!
總結:uboot 主要作用是用來引導kernel啟動,傳遞引數給kernel。大致分為2個階段:
第一階段: 主要是start.s 彙編階段,主要完成如下設定:
#1,設定cpu 中斷向量表
#2,設定cpu速度,時鐘以及終端
#3,初始化sdram(記憶體)
#4,將uboot第二階段的**從flash拷貝到sdram;
如何從flash拷貝呢?答案告訴你,由cpu 通過控制spi 控制器,設定從flash中讀取資料的起始位址,最後自己
將這部分code 重定向到sdram。
#5 ,設定堆疊
第二階段:c語言階段,入口函式為:start_armboot,主要任務如下:
#1 初始化flash,設定系統記憶體
#2 初始化網路裝置,顯示裝置
#3 將kernel,根檔案系統映象對映到ram中(do_bootm_linux 函式來引導核心)
#4 設定kernel啟動的引數
等kernel啟動ok,uboot將控制權交給kernel;
ps,除錯中遇到的問題
1,console沒有任何列印?
檢查console波特率是否設定ok,如設定ok。再檢查uboot.bin的第二階段**是否從flash中讀取到sdram;
sdram是否有初始化正確等!
2,start.s階段的除錯,通常是通過點led來驗證;
uboot移植之uboot和kernel的引數傳遞
從uboot啟動核心的形式thekernel 0,machid,bd bi boot params 可以看出uboot給核心傳遞了3個引數,第1個是0,第2個是機器碼,第3個是引數列表在sdram的起始位置 剛好滿足一下呼叫核心的條件 r0 0。r1 機器型別id r2 啟動引數標記列表在ram 中...
uboot怎樣跳轉到kernel
我們都知道機器加電後首先啟動uboot,然後uboot在跳轉到kernel的。但是它是如何從uboot跳轉到kernel的呢?uboot的執行的介面是從bootcmd開始執行的,也就是說通過解釋bootcmd的引數執行對應的介面來達到引導kernel的功能。所以說uboot的環境變數是很重要的。因為...
uboot 引導卡製作
color red size medium 一 格式化sd卡 size color size small sudo fdisk dev sdb command m for help d partition number 1 4 1 size color red size medium 二 檢視資訊 ...