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