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

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

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

最簡單的bootloader的編寫步驟

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

內(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及完成了。

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

    準(zhǔn)備好環(huán)境。 2. Bootloader的特點(diǎn) Bootloader不屬于操作系統(tǒng),一般采用匯編語言和C語言開發(fā)。需要針對(duì)特定的硬件平臺(tái)編寫。在移植過程時(shí),首先為開發(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

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

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

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

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

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

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

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

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

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

    Linux bootloader 編寫方法

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

    如何編寫ARM處理器的Bootloader

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

    【MCU】BootLoader簡單介紹

    一、pandas是什么?在嵌入式操作系統(tǒng)中,BootLoader是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行,用來初始化硬件設(shè)備,建立內(nèi)存空間映射圖,以便為操作系統(tǒng)的啟動(dòng)做準(zhǔn)備。在嵌入式系統(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的時(shí)候如果要使用程序下載、程序升級(jí)或程序備份,那么都需要自己編寫Bootloader。那么編寫Bootloader使首先應(yīng)該完成的是什么呢?沒錯(cuò),就是中斷向量表。那如果操作
    發(fā)表于 10-28 11:36 ?16次下載
    關(guān)于M0內(nèi)核MCU的<b class='flag-5'>Bootloader</b><b class='flag-5'>編寫</b>

    在STM32F103C8上實(shí)現(xiàn)一個(gè)簡單bootloader

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

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

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

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

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

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

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

    ARM處理器如何編寫Bootloader

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