內(nèi)核從板載啟動的 bootargs--內(nèi)核啟動參數(shù), bootargs 是 bootloader 傳遞給內(nèi)核的啟動字符串。

BootLoader的目標是啟動內(nèi)核, 大多數(shù) boot loader 都包含兩種不同的操作模式:"啟動加載"模式和"下載"模式 。
在嵌入式操作系統(tǒng)中,BootLoader是在操作系統(tǒng)內(nèi)核運行之前運行。可以初始化硬件設備、建立內(nèi)存空間映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準備好正確的環(huán)境。在嵌入式系統(tǒng)中,通常并沒有像BIOS那樣的固件程序(注,有的嵌入式CPU也會內(nèi)嵌一段短小的啟動程序),因此整個系統(tǒng)的加載啟動任務就完全由BootLoader來完成。在一個基于ARM7TDMI core的嵌入式系統(tǒng)中,系統(tǒng)在上電或復位時通常都從地址0x00000000處開始執(zhí)行,而在這個地址處安排的通常就是系統(tǒng)的BootLoader程序。常見的BootLoader程序如下:

最簡單的bootloader的編寫步驟:
1). 初始化硬件:關看門狗、設置時鐘、設置SDRAM、初始化NAND FLASH
1.關看門狗:2440的開發(fā)板一上電看門狗是打開的,不關閉的話每三秒就會復位一次開發(fā)板。看門狗的地址為:0x53000000

2.設置時鐘:CLKDVIN寄存器的地址為0x4c000014,必須設置為異步模式,這是datasheet所規(guī)定的。

注:
判斷從nand啟動還是nor啟動就往內(nèi)存中寫數(shù)據(jù)即可,之后看是否能從內(nèi)存相應地址讀出對應的值。
Nand_Flash的時序(s3c2440中)nand-flash存在先天缺陷:會位反轉(zhuǎn)為此引入OOBoutofbank。

Nand_Flash芯片手冊中

相關時間參數(shù)的獲取:

2). 如果bootloader比較大,要把它重定位到SDRAM
3). 把內(nèi)核從NAND FLASH讀到SDRAM
4). 設置"要傳給內(nèi)核的參數(shù)"
在u-boot中查看分區(qū),使用命令mtd
5). 跳轉(zhuǎn)執(zhí)行內(nèi)核
在簡單的BootLoader編寫的過程中出現(xiàn)過以下錯誤,錯誤之處是.lds鏈接腳本文件出錯,要注意相關格式。
修改完最后的這個錯誤,最終一個最簡BootLoader及完成了。
-
看門狗
+關注
關注
10文章
611瀏覽量
73159 -
bootloader
+關注
關注
2文章
245瀏覽量
48258
原文標題:最最簡單的Bootloader怎么寫?
文章出處:【微信號:eet-china,微信公眾號:電子工程專輯】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
什么是Bootloader 淺談STM32中bootloader的內(nèi)存分配
Bootloader固件升級的步驟
如何編寫bootloader
BootLoader是什么? 怎樣去編寫BootLoader源程序?
關于編寫Bootloader的資料大合集
AVR的bootloader的設置步驟教程及注意事項
Linux bootloader 編寫方法
如何編寫ARM處理器的Bootloader
關于M0內(nèi)核MCU的Bootloader編寫
在STM32F103C8上實現(xiàn)一個簡單的bootloader
如何實現(xiàn)簡單的bootloader功能
倍福PLC學習:編寫函數(shù)塊及簡單調(diào)試
如何編寫一個簡單的電機控制函數(shù)塊?
最簡單的bootloader的編寫步驟
評論