內(nèi)核從板載啟動的 bootargs--內(nèi)核啟動參數(shù), bootargs 是 bootloader 傳遞給內(nèi)核的啟動字符串。
BootLoader的目標(biāo)是啟動內(nèi)核, 大多數(shù) boot loader 都包含兩種不同的操作模式:"啟動加載"模式和"下載"模式 。
在嵌入式操作系統(tǒng)中,BootLoader是在操作系統(tǒng)內(nèi)核運行之前運行。可以初始化硬件設(shè)備、建立內(nèi)存空間映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。在嵌入式系統(tǒng)中,通常并沒有像BIOS那樣的固件程序(注,有的嵌入式CPU也會內(nèi)嵌一段短小的啟動程序),因此整個系統(tǒng)的加載啟動任務(wù)就完全由BootLoader來完成。在一個基于ARM7TDMI core的嵌入式系統(tǒng)中,系統(tǒng)在上電或復(fù)位時通常都從地址0x00000000處開始執(zhí)行,而在這個地址處安排的通常就是系統(tǒng)的BootLoader程序。常見的BootLoader程序如下:
最簡單的bootloader的編寫步驟:
1). 初始化硬件:關(guān)看門狗、設(shè)置時鐘、設(shè)置SDRAM、初始化NAND FLASH
1.關(guān)看門狗:2440的開發(fā)板一上電看門狗是打開的,不關(guān)閉的話每三秒就會復(fù)位一次開發(fā)板??撮T狗的地址為:0x53000000
2.設(shè)置時鐘:CLKDVIN寄存器的地址為0x4c000014,必須設(shè)置為異步模式,這是datasheet所規(guī)定的。
注:
判斷從nand啟動還是nor啟動就往內(nèi)存中寫數(shù)據(jù)即可,之后看是否能從內(nèi)存相應(yīng)地址讀出對應(yīng)的值。
Nand_Flash的時序(s3c2440中)nand-flash存在先天缺陷:會位反轉(zhuǎn)為此引入OOBoutofbank。
Nand_Flash芯片手冊中
相關(guān)時間參數(shù)的獲?。?/p>
2). 如果bootloader比較大,要把它重定位到SDRAM
3). 把內(nèi)核從NAND FLASH讀到SDRAM
4). 設(shè)置"要傳給內(nèi)核的參數(shù)"
在u-boot中查看分區(qū),使用命令mtd
5). 跳轉(zhuǎn)執(zhí)行內(nèi)核
在簡單的BootLoader編寫的過程中出現(xiàn)過以下錯誤,錯誤之處是.lds鏈接腳本文件出錯,要注意相關(guān)格式。
修改完最后的這個錯誤,最終一個最簡BootLoader及完成了。
-
看門狗
+關(guān)注
關(guān)注
10文章
565瀏覽量
70845 -
bootloader
+關(guān)注
關(guān)注
2文章
235瀏覽量
45642
原文標(biāo)題:最最簡單的Bootloader怎么寫?
文章出處:【微信號:eet-china,微信公眾號:電子工程專輯】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論