完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>
標(biāo)簽 > bootloader
在嵌入式操作系統(tǒng)中,BootLoader是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行??梢猿跏蓟布O(shè)備、建立內(nèi)存空間映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。
在嵌入式操作系統(tǒng)中,BootLoader是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行??梢猿跏蓟布O(shè)備、建立內(nèi)存空間映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。在嵌入式系統(tǒng)中,通常并沒(méi)有像BIOS那樣的固件程序(注,有的嵌入式CPU也會(huì)內(nèi)嵌一段短小的啟動(dòng)程序),因此整個(gè)系統(tǒng)的加載啟動(dòng)任務(wù)就完全由BootLoader來(lái)完成。在一個(gè)基于A(yíng)RM7TDMI core的嵌入式系統(tǒng)中,系統(tǒng)在上電或復(fù)位時(shí)通常都從地址0x00000000處開(kāi)始執(zhí)行,而在這個(gè)地址處安排的通常就是系統(tǒng)的BootLoader程序。
在嵌入式操作系統(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)中,通常并沒(méi)有像BIOS那樣的固件程序(注,有的嵌入式CPU也會(huì)內(nèi)嵌一段短小的啟動(dòng)程序),因此整個(gè)系統(tǒng)的加載啟動(dòng)任務(wù)就完全由BootLoader來(lái)完成。在一個(gè)基于A(yíng)RM7TDMI core的嵌入式系統(tǒng)中,系統(tǒng)在上電或復(fù)位時(shí)通常都從地址0x00000000處開(kāi)始執(zhí)行,而在這個(gè)地址處安排的通常就是系統(tǒng)的BootLoader程序。
Bootloader是嵌入式系統(tǒng)在加電后執(zhí)行的第一段代碼,在它完成CPU和相關(guān)硬件的初始化之后,再將操作系統(tǒng)映像或固化的嵌入式應(yīng)用程序裝在到內(nèi)存中然后跳轉(zhuǎn)到操作系統(tǒng)所在的空間,啟動(dòng)操作系統(tǒng)運(yùn)行。
對(duì)于嵌入式系統(tǒng),Bootloader是基于特定硬件平臺(tái)來(lái)實(shí)現(xiàn)的。因此,幾乎不可能為所有的嵌入式系統(tǒng)建立一個(gè)通用的Bootloader,不同的處理器架構(gòu)都有不同的Bootloader。Bootloader不但依賴(lài)于CPU的體系結(jié)構(gòu),而且依賴(lài)于嵌入式系統(tǒng)板級(jí)設(shè)備的配置。對(duì)于2塊不同的嵌入式板而言,即使它們使用同一種處理器,要想讓運(yùn)行在一塊板子上的Bootloader程序也能運(yùn)行在另一塊板子上,一般也都需要修改Bootloader的源程序。
反過(guò)來(lái),大部分Bootloader仍然具有很多共性,某些Bootloader也能夠支持多種體系結(jié)構(gòu)的嵌入式系統(tǒng)。例如,U-Boot就同時(shí)支持PowerPC、ARM、MIPS和X86等體系結(jié)構(gòu),支持的板子有上百種。通常,它們都能夠自動(dòng)從存儲(chǔ)介質(zhì)上啟動(dòng),都能夠引導(dǎo)操作系統(tǒng)啟動(dòng),并且大部分都可以支持串口和以太網(wǎng)接口。
在專(zhuān)用的嵌入式板子運(yùn)行GNU/Linux系統(tǒng)已經(jīng)變得越來(lái)越流行。一個(gè)嵌入式Linux系統(tǒng)從軟件的角度看通常可以分為四個(gè)層次:
1、 引導(dǎo)加載程序。包括固化在固件(firmware)中的boot代碼(可選),和BootLoader兩大部分。
2、Linux內(nèi)核。特定于嵌入式板子的定制內(nèi)核以及內(nèi)核的啟動(dòng)參數(shù)。
3、 文件系統(tǒng)。包括根文件系統(tǒng)和建立于Flash內(nèi)存設(shè)備之上文件系統(tǒng)。通常用ramdisk來(lái)作為rootfs。
4、 用戶(hù)應(yīng)用程序。特定于用戶(hù)的應(yīng)用程序。有時(shí)在用戶(hù)應(yīng)用程序和內(nèi)核層之間可能還會(huì)包括一個(gè)嵌入式圖形用戶(hù)界面。常用的嵌入式GUI有:MicroWindows和MiniGUI等。
通常,BootLoader是嚴(yán)重地依賴(lài)于硬件而實(shí)現(xiàn)的,特別是在嵌入式世界。因此,在嵌入式世界里建立一個(gè)通用的BootLoader幾乎是不可能的。盡管如此,我們?nèi)匀豢梢詫?duì)bootloader歸納出一些通用的概念來(lái),以指導(dǎo)用戶(hù)特定的BootLoader設(shè)計(jì)與實(shí)現(xiàn)。
操作模式
1.自啟動(dòng)模式:在這種模式下,bootloader從目標(biāo)機(jī)上的某個(gè)固態(tài)存儲(chǔ)設(shè)備上將操作系統(tǒng)加載到RAM中運(yùn)行,整個(gè)過(guò)程并沒(méi)有用戶(hù)的介入。
2.交互模式:在這種模式下,目標(biāo)機(jī)上的bootloader將通過(guò)串口或網(wǎng)絡(luò)等通行手段從開(kāi)發(fā)主機(jī)(Host)上下載內(nèi)核映像等到RAM中。可以被bootloader寫(xiě)到目標(biāo)機(jī)上的固態(tài)存儲(chǔ)媒質(zhì)中,或者直接進(jìn)入系統(tǒng)的引導(dǎo)。也可以通過(guò)串口接收用戶(hù)的命令。
在生成SoC時(shí),會(huì)生成一個(gè)預(yù)定義bootloader .bin文件,用于指定soc的工程運(yùn)行的地址,這包括在flash的存儲(chǔ)地址 ,加載到外存中的運(yùn)行地...
2024-10-31 標(biāo)簽:FlaShsocbootloader 469 0
由于芯片上電后需要從0地址(具體地說(shuō)是0004h地址處)的中斷向量開(kāi)始運(yùn)行,因此,調(diào)試Application Project時(shí)需要下載Bootloade...
2024-08-22 標(biāo)簽:芯片SWAPbootloader 448 0
如何才能將Bootloader和Application關(guān)聯(lián)起來(lái)
接下來(lái),我們要利用該Bootloader調(diào)試目標(biāo)Application Project,如何才能將Bootloader和Application關(guān)聯(lián)起來(lái)呢...
2024-06-12 標(biāo)簽:編譯bootloaderpython 562 0
經(jīng)過(guò)串口傳輸最終由單片機(jī)接收到的固件數(shù)據(jù)是可能出現(xiàn)差錯(cuò)的,而有錯(cuò)誤的固件冒然直接寫(xiě)入到APP區(qū),是一定運(yùn)行不起來(lái)的。
BootLoader項(xiàng)目程序和App項(xiàng)目程序是分開(kāi)的,所以需要分別搭建對(duì)應(yīng)的項(xiàng)目工程文件,分開(kāi)搭建文件是為了好配置,同時(shí)也是方便對(duì)項(xiàng)目進(jìn)行管理。
由于RZ工程正常啟動(dòng)時(shí),代碼分成LDR部分和user部分,所以Bootloader可以分別對(duì)Application以上2部分進(jìn)行加載,在Bootload...
2024-01-09 標(biāo)簽:FlaShbootloaderLDR 517 0
簡(jiǎn)單講講u-boot和bootloader有啥區(qū)別
搞嵌入式軟件開(kāi)發(fā),掌握u-boot 和 bootloader應(yīng)該是必備的技能之一,但很多工程師依然不知道它們到底是啥。
2023-11-09 標(biāo)簽:u-boot嵌入式設(shè)備GUI 1159 0
為什么OEM更新某個(gè)控制器的Bootloater程序更"痛苦"呢?搞清楚這個(gè)問(wèn)題,就得從OEM的視角去看問(wèn)題,OEM作為主機(jī)廠(chǎng),生產(chǎn)...
2023-09-28 標(biāo)簽:控制器OEMbootloader 508 0
基于MM32F0140的UDS Bootloader學(xué)習(xí)筆記
基于MM32F0140的UDS Bootloader學(xué)習(xí)筆記
2023-10-30 標(biāo)簽:微控制器mcubootloader 681 0
mm32-2nd-bootloader技術(shù)白皮書(shū)(5)——編譯可在QSPI Flash上運(yùn)行的程序
mm32-2nd-bootloader技術(shù)白皮書(shū)(5)——編譯可在QSPI Flash上運(yùn)行的程序
2023-10-24 標(biāo)簽:FlaShbootloaderSDK 449 0
1
0
TC397的Bootloader燒錄APP工程后可以跳轉(zhuǎn)執(zhí)行,但是APP工程里面的以太網(wǎng)功能會(huì)出現(xiàn)異常,為什么?
標(biāo)簽:bootloaderTC397 215 1
1
0
GD32F427 bootloader添加rt-thread系統(tǒng)后,跳轉(zhuǎn)到app沒(méi)有執(zhí)行main()函數(shù)是怎么回事?
標(biāo)簽:APPbootloaderRT-Thread 207 1
在bootloader和應(yīng)用程序之間共享FEE塊立即下載
類(lèi)別:電子資料 2024-10-10 標(biāo)簽:應(yīng)用程序bootloader
STM32F09x不使用BOOT腳實(shí)現(xiàn)System Bootloader升級(jí)代碼立即下載
類(lèi)別:電子資料 2023-09-25 標(biāo)簽:STM32Systembootloader
STM32 Bootloader異常復(fù)位案例立即下載
類(lèi)別:電子資料 2023-09-25 標(biāo)簽:STM32復(fù)位bootloader
BootLoader刷新之上位機(jī)刷新功能學(xué)習(xí)隨筆立即下載
類(lèi)別:電子資料 2023-05-29 標(biāo)簽:上位機(jī)bootloader
粒子氙Arduino轉(zhuǎn)換(Feather nRF52840 Express)立即下載
類(lèi)別:電子資料 2023-01-31 標(biāo)簽:bootloaderArduinonrf52840
STM32F745 USART1 Bootloader失敗原因分析與解決立即下載
類(lèi)別:單片機(jī) 2022-12-14 標(biāo)簽:usbSTM32bootloader
類(lèi)別:C語(yǔ)言|源代碼 2022-09-26 標(biāo)簽:ISPbootloaderSTM8S
ESP8266二級(jí)Bootloader跳轉(zhuǎn)測(cè)試(V1.6+)立即下載
類(lèi)別:電子資料 2022-09-23 標(biāo)簽:bootloaderESP8266
ES32F36xx Bootloader應(yīng)用筆記立即下載
類(lèi)別:電子資料 2022-09-22 標(biāo)簽:usbbootloader
如何開(kāi)發(fā)不帶Flash API的Bootloader實(shí)現(xiàn)在線(xiàn)升級(jí)立即下載
類(lèi)別:嵌入式開(kāi)發(fā) 2022-08-23 標(biāo)簽:FlaShAPIbootloader
STM32無(wú)法進(jìn)入片上Bootloader的處理方法
STM32無(wú)法進(jìn)入片上Bootloader的處理方法? 當(dāng)STM32芯片無(wú)法進(jìn)入片上Bootloader時(shí),我們需要采取一系列的處理方法來(lái)解決這個(gè)問(wèn)題。...
2024-02-02 標(biāo)簽:STM32復(fù)位電路bootloader 1860 0
由于Bootloader保存在Flash的首地址,MCU上電后,默認(rèn)從Flash開(kāi)始的第一個(gè)讀取棧指針,第二個(gè)字就是復(fù)位中斷的入口,并根據(jù)該指針進(jìn)度復(fù)位...
2023-05-19 標(biāo)簽:特斯拉OTAbootloader 1033 0
TBOOT對(duì)任何rt-thread版本進(jìn)行有限的改動(dòng)
使用前請(qǐng)先閱讀 bl_config.h 頭文件,根據(jù)自己的實(shí)際需求情況修改。例如 BOOT_APP_PARTITION_NAME BOOT_APP_FI...
2022-08-16 標(biāo)簽:以太網(wǎng)bootloaderHTTP協(xié)議 1038 0
通過(guò) Env配置工具 或 RT-Thread studio 開(kāi)啟軟件包,根據(jù)需要配置各項(xiàng)參數(shù);配置路徑為 RT-Thread online packag...
2022-08-09 標(biāo)簽:bootloader狀態(tài)指示燈RT-Thread 2150 0
u-boot和bootloader的內(nèi)容以及區(qū)別
嵌入式軟件工程師聽(tīng)說(shuō)過(guò) u-boot 和 bootloader,但很多工程師依然不知道他們到底是啥。
2022-07-03 標(biāo)簽:嵌入式u-bootbootloader 1507 0
STM8單片機(jī)為例,如何實(shí)現(xiàn)Bootloader?
去某新能源大廠(chǎng)出了一次差,這次出差是為了升級(jí)程序解決Bug,需要給單片機(jī)重新燒錄.hex文件,用戶(hù)已經(jīng)將產(chǎn)品封裝起來(lái),無(wú)法開(kāi)蓋,只能使用CAN總線(xiàn)來(lái)更新...
2021-04-12 標(biāo)簽:單片機(jī)bootloader 3053 0
嵌入式系統(tǒng)里的Boot Loader技術(shù)詳解
在嵌入式系統(tǒng)當(dāng)中你可能經(jīng)常聽(tīng)到 boot loader(引導(dǎo)加載器)這一詞,boot loader是指什么呢?
2020-09-27 標(biāo)簽:嵌入式系統(tǒng)bootloader 4364 0
四個(gè)方面來(lái)討論嵌入式系統(tǒng)的Boot Loader
系統(tǒng)加電或復(fù)位后,所有的 CPU 通常都從某個(gè)由 CPU 制造商預(yù)先安排的地址上取指令。比如,基于 ARM7TDMI core 的 CPU 在復(fù)位時(shí)通常...
2019-12-03 標(biāo)簽:嵌入式嵌入式系統(tǒng)bootloader 3551 0
realme國(guó)內(nèi)機(jī)型開(kāi)放BL解鎖,有風(fēng)險(xiǎn)要謹(jǐn)慎
昨天晚間realme CMO徐起公布了一個(gè)讓發(fā)燒友激動(dòng)的消息,那就是realme國(guó)內(nèi)機(jī)型全部開(kāi)放BL解鎖。
2019-11-28 標(biāo)簽:智能手機(jī)Bootloader 1.3萬(wàn) 0
怎樣使用USBasp和Arduino將Bootloader刻錄到ATmega8
將Atmega8開(kāi)發(fā)板連接到Arduino
2019-12-11 標(biāo)簽:ATmega8bootloaderArduino 5279 0
編輯推薦廠(chǎng)商產(chǎn)品技術(shù)軟件/工具OS/語(yǔ)言教程專(zhuān)題
電機(jī)控制 | DSP | 氮化鎵 | 功率放大器 | ChatGPT | 自動(dòng)駕駛 | TI | 瑞薩電子 |
BLDC | PLC | 碳化硅 | 二極管 | OpenAI | 元宇宙 | 安森美 | ADI |
無(wú)刷電機(jī) | FOC | IGBT | 逆變器 | 文心一言 | 5G | 英飛凌 | 羅姆 |
直流電機(jī) | PID | MOSFET | 傳感器 | 人工智能 | 物聯(lián)網(wǎng) | NXP | 賽靈思 |
步進(jìn)電機(jī) | SPWM | 充電樁 | IPM | 機(jī)器視覺(jué) | 無(wú)人機(jī) | 三菱電機(jī) | ST |
伺服電機(jī) | SVPWM | 光伏發(fā)電 | UPS | AR | 智能電網(wǎng) | 國(guó)民技術(shù) | Microchip |
Arduino | BeagleBone | 樹(shù)莓派 | STM32 | MSP430 | EFM32 | ARM mbed | EDA |
示波器 | LPC | imx8 | PSoC | Altium Designer | Allegro | Mentor | Pads |
OrCAD | Cadence | AutoCAD | 華秋DFM | Keil | MATLAB | MPLAB | Quartus |
C++ | Java | Python | JavaScript | node.js | RISC-V | verilog | Tensorflow |
Android | iOS | linux | RTOS | FreeRTOS | LiteOS | RT-THread | uCOS |
DuerOS | Brillo | Windows11 | HarmonyOS |