uboot 引導kernel雜談

2021-07-04 21:34:29 字數 737 閱讀 6544

記錄最近除錯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 二 檢視資訊 ...