0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

最簡單的bootloader的編寫步驟

0BFC_eet_china ? 來源:未知 ? 作者:李倩 ? 2018-08-08 08:46 ? 次閱讀

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

BootLoader的目標是啟動內(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)核準備好正確的環(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ā)板。看門狗的地址為: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及完成了。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 看門狗
    +關(guān)注

    關(guān)注

    10

    文章

    554

    瀏覽量

    70572
  • bootloader
    +關(guān)注

    關(guān)注

    2

    文章

    232

    瀏覽量

    45366

原文標題:最最簡單的Bootloader怎么寫?

文章出處:【微信號:eet-china,微信公眾號:電子工程專輯】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    什么是Bootloader 淺談STM32中bootloader的內(nèi)存分配

    準備好環(huán)境。 2. Bootloader的特點 Bootloader不屬于操作系統(tǒng),一般采用匯編語言和C語言開發(fā)。需要針對特定的硬件平臺編寫。在移植過程時,首先為開發(fā)板移植Bootloader
    的頭像 發(fā)表于 02-15 06:10 ?1.7w次閱讀
    什么是<b class='flag-5'>Bootloader</b> 淺談STM32中<b class='flag-5'>bootloader</b>的內(nèi)存分配

    如何編寫bootloader

    每一個MCU都是PIC18F46K22@ 20MHz VDD=5V DIP40引腳封裝。我想學(xué)習(xí)如何為我的MCU編寫S基本Bootloader,這樣我就可以從UART端口閃出它。有人可以指點一下我
    發(fā)表于 09-21 10:13

    BootLoader是什么? 怎樣去編寫BootLoader源程序?

    BootLoader是什么?怎樣去編寫BootLoader源程序?BootLoader的編譯、鏈接和下載
    發(fā)表于 04-27 07:08

    關(guān)于編寫Bootloader的資料大合集

    在使用MCU的時候如果要使用程序下載、程序升級或程序備份,那么都需要自己編寫Bootloader。那么編寫Bootloader使首先應(yīng)該完成的是什么呢?沒錯,就是中斷向量表。那如果操作
    發(fā)表于 11-03 08:05

    簡單的c編寫的旋進數(shù)組

    簡單的c編寫的旋進數(shù)組。
    發(fā)表于 03-11 13:39 ?0次下載

    AVR的bootloader的設(shè)置步驟教程及注意事項

    熔絲位的燒寫:BOOTRST要進行編程,這樣單片機在復(fù)位后自動跳轉(zhuǎn)到bootloader區(qū)執(zhí)行bootloader的代碼,然后要根據(jù)自己bootloader的大小設(shè)置boot區(qū)的的熔絲位。
    的頭像 發(fā)表于 05-20 09:46 ?6681次閱讀
    AVR的<b class='flag-5'>bootloader</b>的設(shè)置<b class='flag-5'>步驟</b>教程及注意事項

    Linux bootloader 編寫方法

    對于移植 linux 到其它開發(fā)板的人來說,編寫 boot loader 是一個不可避免的過程。對于學(xué)習(xí)linux的人來講,編寫 bootloader 也是一個很有挑戰(zhàn)性的工作。本文
    發(fā)表于 04-02 14:39 ?327次閱讀

    如何編寫ARM處理器的Bootloader

    作者 | strongerHuang 微信公眾號 | strongerHuang 之前從應(yīng)用的角度給大家分享過Bootloader相關(guān)的文章,今天從底層原理來給大家描述ARM處理器如何編寫
    的頭像 發(fā)表于 10-27 11:02 ?4059次閱讀
    如何<b class='flag-5'>編寫</b>ARM處理器的<b class='flag-5'>Bootloader</b>

    【MCU】BootLoader簡單介紹

    一、pandas是什么?在嵌入式操作系統(tǒng)中,BootLoader是在操作系統(tǒng)內(nèi)核運行之前運行,用來初始化硬件設(shè)備,建立內(nèi)存空間映射圖,以便為操作系統(tǒng)的啟動做準備。在嵌入式系統(tǒng)中,通常沒有想BIOS
    發(fā)表于 10-27 19:21 ?48次下載
    【MCU】<b class='flag-5'>BootLoader</b>的<b class='flag-5'>簡單</b>介紹

    關(guān)于M0內(nèi)核MCU的Bootloader編寫

    在使用MCU的時候如果要使用程序下載、程序升級或程序備份,那么都需要自己編寫Bootloader。那么編寫Bootloader使首先應(yīng)該完成的是什么呢?沒錯,就是中斷向量表。那如果操作
    發(fā)表于 10-28 11:36 ?16次下載
    關(guān)于M0內(nèi)核MCU的<b class='flag-5'>Bootloader</b><b class='flag-5'>編寫</b>

    在STM32F103C8上實現(xiàn)一個簡單bootloader

    在STM32F103C8上實現(xiàn)一個簡單bootloader最近在琢磨單片機在線更新程序的事情,查資料查到在STM32上實現(xiàn)一個bootloader比較簡單,廢話不多說,動手嘗試一下。
    發(fā)表于 11-23 17:51 ?20次下載
    在STM32F103C8上實現(xiàn)一個<b class='flag-5'>簡單</b>的<b class='flag-5'>bootloader</b>

    如何實現(xiàn)簡單bootloader功能

    考慮到瑞薩的MCUBoot的ROM占用和某些客戶的需求,本篇主要講述在不使用瑞薩MCUboot驅(qū)動下,如何實現(xiàn)簡單bootloader功能。
    的頭像 發(fā)表于 09-06 13:13 ?2347次閱讀

    倍福PLC學(xué)習(xí):編寫函數(shù)塊及簡單調(diào)試

    今天這篇文章我們來編寫一個簡單的電機控制函數(shù)塊,并將其下載到倍福CX5020控制器進行測試,以熟悉TwinCAT3環(huán)境下基本的編程步驟。
    的頭像 發(fā)表于 11-09 09:34 ?4583次閱讀

    如何編寫一個簡單的電機控制函數(shù)塊?

    今天這篇文章我們來編寫一個簡單的電機控制函數(shù)塊,并將其下載到倍福CX5020控制器進行測試,以熟悉TwinCAT3環(huán)境下基本的編程步驟。
    的頭像 發(fā)表于 02-07 14:00 ?1584次閱讀
    如何<b class='flag-5'>編寫</b>一個<b class='flag-5'>簡單</b>的電機控制函數(shù)塊?

    ARM處理器如何編寫Bootloader

    前面給大家分享過Bootloader從應(yīng)用角度執(zhí)行的相關(guān)文章,今天從底層原理來給大家描述ARM處理器如何編寫Bootloader,以及底層流程。
    的頭像 發(fā)表于 07-26 09:10 ?737次閱讀
    ARM處理器如何<b class='flag-5'>編寫</b><b class='flag-5'>Bootloader</b>