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