Re: [問題] uboot的開機順序
※ 引述《zelkova (*〞︶〝*)》之銘言:
: 最近在自修uboot開機流程
: google看過一些資料之後 我的理解是這樣
: 1. 上電之後
: cpu會到flash或rom位置0x0(看cpu腳位設定), 複製uboot程序到ram中
: 2. uboot拷貝完成後
: 進行driver跟memory的初始化(暫存器), 以及設備的基本測試(看功能是不是正常)
: 3. uboot對裝置初始化完成之後
: uboot會對軟硬體的環境變數進行設置, 最後執行bootm去載入kernel, 離開uboot
: 身邊沒有人可以討論
: 想請各位前輩確認我的理解是不是正確的 謝謝
簡略解說,其實開機方式有很多種,
暫時就依你所認知的作補充,板上強者很多,如有訛誤請不吝指教~
開機之前先區分一下軟硬體部分,通常如下:
HW: 1)SOC(CPU+SRAM)
2)DRAM(SD,DDR或LPDDR等等)
3)其他周邊(UART,LCD等)
SW: 1)OBL(Original Bootloader? On-chip Bootloader?也有人說RomCode,
認知上是寫死在SOC內部的最早loader,也有聽說過用硬體實現的)
2)U-Boot(其實不一定只能用uboot,也有其他各有特色的bootloader可使用,
只要你會porting)
3)kernel(uImage,zImage等,有時候還會有個rootfs,
沒有的話可能是用ramdisk方式與kernel image綁在一起)
我使用過的平台來說
SRAM是內建的,開機通常不需要初始化,可直接存取,容量很小(64KB,128KB,256KB等)
DRAM通常是外掛,需要初始化(通常是MB等級,64MB,128MB...等,要幾G有幾G,
老闆和HW同事說了算XD)
依據你的理解
CPU本身只會預設到最開始的位置0去跑(這要參閱各SOC datasheet)
通常那邊會安排OBL存放
OBL跑起來(XIP,儲存媒體可能是NOR flash在SOC)
去NAND或是SD卡(取決於硬體jumper設定--如果有的話)找第一block或是u-boot檔名
把資料load到SRAM上面去
接著PC(program counter)跳過去開始U-boot執行,
通常會作下面幾件事情
1. CPU/Clock init:設定CPU倍頻,clock來源(內部震盪或是外部等等),倍率等
2. DRAM init: 設定DRAM特性 (例:填SOC register告訴Dram Interface你的DRam是CL幾?
有無支援Burst mode?要不要slow slew rate?)
3. UART colsole init:至少debug用的UART要會動才能對U-boot下command
4. bootargs: 設定好kernel開機所需要用到的環境變數
5. loading kernel:把zImage或uImage從NAND或是SD撈出來,
放在啟動的DRam上面,驗證image合法後才把PC跳過去
driver的初始化,其實每個階段都會作
OBL如果要UART console秀字,內建就會順便初始UART(其實是直接填register)
U-boot因為本身的泛用性
基本上自己要有UART driver去初始console,
但也有人要用tftpboot,要用到網路,U-boot就需自帶net PHY的driver
也有人要在U-boot階段就點亮LCD,就需要自帶LCD driver
但最重要的是CPU以及DRAM的初始化
而以上其他周邊的driver,
在kernel啟動之後,一樣會重掛driver(LCD,UART,NAND,SD卡等)
至於CPU跟DRAM的初始倒是不會再動了
(本體在DRAM上面再去init DRAM-->雞蛋的問題?)
我知道比較新的硬體以及kernel版本有支援動態變頻,這方面的知識我沒有,抱歉了~
對了,為什麼說順著你的理解講呢?
目前我所知道的流程有以下幾種
OBL-->U-boot-->kernel
OBL-->MLO-->U-boot-->kernel (Linaro好像是這樣的?)
OBL-->OBL2-->U-boot-->kernel (有的U-boot還有分身)
OBL-->OBL2-->kernel
等等等...取決於硬體限制以及軟體支援度
這邊只分享開機而已
這東西是一翻兩瞪眼,(開機vs無法開機)
更重要的事情是在開機之後所要作的事情,
如有錯誤還請各位大大開示了! Orz
--
明月幾時有?把酒問青天,不知天上宮闕,今夕是何年?
我欲乘風歸去,惟恐瓊樓玉宇,高處不勝寒;
起舞弄清影,何似在人間。
轉朱閣,低綺戶,照無眠。不應有恨,何事長向別時圓?
人有悲歡離合,月有陰晴圓缺,此事古難全。
但願人長久,千里共嬋娟。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.230.97.154
※ 文章網址: http://www.ptt.cc/bbs/LinuxDev/M.1413191147.A.F28.html
※ 編輯: drag (61.230.97.154), 10/13/2014 17:08:54
推
10/13 21:43, , 1F
10/13 21:43, 1F
推
10/13 23:30, , 2F
10/13 23:30, 2F
→
10/13 23:31, , 3F
10/13 23:31, 3F
→
10/13 23:32, , 4F
10/13 23:32, 4F
→
10/13 23:33, , 5F
10/13 23:33, 5F
→
10/13 23:34, , 6F
10/13 23:34, 6F
→
10/14 16:58, , 7F
10/14 16:58, 7F
討論串 (同標題文章)
LinuxDev 近期熱門文章
PTT數位生活區 即時熱門文章