最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

解析:?jiǎn)纹瑱C(jī) BootLoader 的發(fā)展進(jìn)化全記錄

出處:網(wǎng)絡(luò)整理 發(fā)布于:2025-06-18 14:49:38

    在嵌入式系統(tǒng)領(lǐng)域,Bootloader 是一個(gè)至關(guān)重要的軟件程序,它通常存儲(chǔ)在芯片的非易失性存儲(chǔ)器(如閃存)中。其主要功能是在系統(tǒng)上電后,負(fù)責(zé)初始化系統(tǒng)硬件,并將操作系統(tǒng)或應(yīng)用程序加載到內(nèi)存中執(zhí)行。下面,我們將詳細(xì)探討 Bootloader 的工作流程、主要功能,以及其發(fā)展進(jìn)化的歷程。

   Bootloader 的工作流程和主要功能


  1. 硬件初始化:Bootloader 啟動(dòng)后,首先會(huì)對(duì)處理器、時(shí)鐘、內(nèi)存和外設(shè)等硬件資源進(jìn)行初始化,確保系統(tǒng)處于合適的狀態(tài),為后續(xù)操作做好準(zhǔn)備。
  2. 引導(dǎo)設(shè)備選擇:它需要檢測(cè)可用的引導(dǎo)設(shè)備,如閃存、外部存儲(chǔ)器或串口等,并從中選擇一個(gè)作為加載操作系統(tǒng)或應(yīng)用程序的來(lái)源。
  3. 加載操作系統(tǒng)或應(yīng)用程序:依據(jù)預(yù)定義的引導(dǎo)策略,Bootloader 從選定的引導(dǎo)設(shè)備中讀取操作系統(tǒng)鏡像或應(yīng)用程序,并將其加載到內(nèi)存中。
  4. 執(zhí)行加載的程序:程序加載到內(nèi)存后,Bootloader 會(huì)跳轉(zhuǎn)到該程序的入口點(diǎn),啟動(dòng)執(zhí)行。對(duì)于操作系統(tǒng),這意味著將控制權(quán)移交給操作系統(tǒng)內(nèi)核;對(duì)于應(yīng)用程序,則開始執(zhí)行其主函數(shù)。
  5. 錯(cuò)誤處理和回滾:Bootloader 通常具備錯(cuò)誤處理機(jī)制,在發(fā)生錯(cuò)誤時(shí)執(zhí)行相應(yīng)操作,如跳轉(zhuǎn)到備用引導(dǎo)設(shè)備或恢復(fù)到出廠設(shè)置狀態(tài)。
  6. 升級(jí)支持:部分 Bootloader 還支持固件升級(jí),允許通過特定接口或協(xié)議更新系統(tǒng)固件,無(wú)需物理訪問設(shè)備。

燒錄方式的更新迭代


  1. 古老的燒錄方式:20 世紀(jì) 80 年代,以 51 單片機(jī)為代表開始廣泛應(yīng)用于工業(yè)控制、家電等行業(yè)。起初,將可執(zhí)行程序?qū)懭雴纹瑱C(jī)內(nèi)部 ROM 并非易事,且成本較高,需要依賴專門的燒錄設(shè)備。受半導(dǎo)體技術(shù)與工藝限制,ROM 燒寫大多需要高壓,這種狀況一直持續(xù)到 2000 年左右。
  2. ISP 與 ICP 燒錄方式:隨著低壓電可擦寫 ROM 的成熟,單片機(jī)開始集成可通過數(shù)字電平直接讀寫的存儲(chǔ)介質(zhì),實(shí)現(xiàn)了在系統(tǒng)或在電路直接燒錄程序,即 ISP(In System Programming)或 ICP(In Circuit Programming)。從廣義上講,兩者區(qū)別不大,但嚴(yán)格來(lái)說(shuō),ISP 要求單片機(jī)駐留有專門程序與上位機(jī)通信,接收固件數(shù)據(jù)并燒錄到自身 ROM,需具備基本的系統(tǒng)電路;而 ICP 可將 MCU 視為可供外部讀寫的存儲(chǔ)電路,無(wú)需預(yù)置程序,也無(wú)需芯片處于可運(yùn)行狀態(tài)。以 AT89S51 為代表的支持 ISP 或 ICP 的芯片,讓很多人擺脫了對(duì)燒錄器的依賴,降低了單片機(jī)入門門檻。


  3. 更方便的 ISP 燒錄方式
    • 串口 ISP:2005 年前后,STC 單片機(jī)憑借串口 ISP 功能受到廣泛關(guān)注。它進(jìn)一步降低了單片機(jī)學(xué)習(xí)門檻,即使電腦并口逐漸減少,通過 USB - TTL 串口也能方便地進(jìn)行燒錄。如今,包括 STM32 全系列在內(nèi)的很多單片機(jī)都支持串口 ISP,使其成為一種標(biāo)配的程序燒錄手段。
    • 各種 USBISP:當(dāng)固件體積較大時(shí),串口 ISP 的速度成為短板。因此,一些單片機(jī)配有專門的 USBISP 器,如 AVR、C8051F、MSP430 等。然而,這些燒錄方式存在依賴專門上位機(jī)或器硬件、價(jià)格較高、時(shí)需附加額外操作等弊端。

Bootloader 的基本形態(tài)和功能


Bootloader 是一段存儲(chǔ)在 ROM 中的程序,主要實(shí)現(xiàn)以下 4 個(gè)功能:


  1. 通過某種途徑獲取要燒錄的固件數(shù)據(jù)。
  2. 將固件數(shù)據(jù)寫入到 ROM 的 APP 區(qū)中。
  3. 跳轉(zhuǎn)到 APP 區(qū)運(yùn)行,引導(dǎo)燒錄進(jìn)去的用戶程序啟動(dòng)。
  4. 在整個(gè)過程中,提供必要且友好的人機(jī)交互界面。

Bootloader 的設(shè)計(jì)實(shí)例


  1. 帶 Shell 命令行的串口 BL:用戶通過超級(jí)終端、SecureCRT 或 Xshell 等串口終端輸入命令 “program”,BL 接收到命令后等待接收固件文件數(shù)據(jù),串口終端通過文件數(shù)據(jù)傳輸協(xié)議將固件數(shù)據(jù)傳給 BL,BL 將數(shù)據(jù)寫入 ROM 的 APP 區(qū),然后跳轉(zhuǎn)到 APP 區(qū)運(yùn)行程序。
  2. 插 SD 卡即燒錄的 BL:將待燒錄的固件拷貝到 SD 卡中,插入卡槽,BL 檢測(cè)到 SD 卡插入后,搜索卡中的 BIN 文件,將其數(shù)據(jù)讀出寫入 ROM 的 APP 區(qū),跳轉(zhuǎn)到 APP 區(qū)運(yùn)行程序。

BL 實(shí)現(xiàn)的要點(diǎn)


  1. 芯片體系架構(gòu)要支持:?jiǎn)纹瑱C(jī)程序的開頭是中斷向量表,包含程序棧頂?shù)刂泛?Reset 程序入口。從 BL 向 APP 跳轉(zhuǎn)時(shí),APP 程序必須有自己的中斷向量表,且單片機(jī)體系架構(gòu)要允許中斷向量表重定向。傳統(tǒng) 51 單片機(jī)的中斷向量表只能放在 ROM 開頭,不支持 BL;而 STC 的 51 單片機(jī)通過硬件架構(gòu)改進(jìn),實(shí)現(xiàn)了 BL 功能。此外,AVR 單片機(jī)通過配置熔絲位可控制復(fù)位入口地址以及 BOOT 區(qū)的大小和開始地址;STM32 則在 NVIC 控制器中提供了中斷向量表偏移量的相關(guān)配置,程序可放置在 ROM 的任何位置運(yùn)行。
  2. ROM 要支持 IAP:在 BL 獲取到固件數(shù)據(jù)后,需要將其寫入 ROM 的 APP 區(qū),因此單片機(jī)需支持 IAP(In Application Programming)操作,即在程序運(yùn)行過程中對(duì)自身 ROM 進(jìn)行擦除和編程操作。支持串口 ISP 的單片機(jī)通常都支持 IAP 功能。
  3. APP 程序的配套修改:為使 BL 能順利引導(dǎo) APP 程序運(yùn)行,APP 程序開發(fā)時(shí)需進(jìn)行相應(yīng)修改,主要包括修改中斷向量表的開始地址和對(duì)中斷控制器的配置。以 STM32 為例,使用不同開發(fā)環(huán)境時(shí),需對(duì)相關(guān)文件進(jìn)行修改,并配置 NVIC 的中斷向量表偏移量。
  4. BL 中的跳轉(zhuǎn)代碼:跳轉(zhuǎn)代碼是 BL 的關(guān)鍵,直接影響 APP 程序能否正常運(yùn)行。以 STM32 為例,其 jump_app 函數(shù)代碼用于實(shí)現(xiàn)從 BL 到 APP 的跳轉(zhuǎn)。

Bootloader 的多樣化應(yīng)用


  1. BL 的實(shí)現(xiàn)與延伸(串口傳輸固件):在串口傳輸固件的過程中,會(huì)涉及串口通信協(xié)議、固件數(shù)據(jù)暫存和校驗(yàn)等問題。串口通信協(xié)議和文件傳輸實(shí)現(xiàn)的內(nèi)容較為繁雜,可在相關(guān)章節(jié)深入學(xué)習(xí)。為保證固件數(shù)據(jù)的正確性,通常會(huì)對(duì)數(shù)據(jù)進(jìn)行整體校驗(yàn),并在文件中加入校驗(yàn)碼。雖然可以不暫存固件直接實(shí)時(shí)燒寫,但建議在成本允許的情況下對(duì)固件進(jìn)行整體校驗(yàn),并適當(dāng)擴(kuò)大 ROM 容量,以應(yīng)對(duì) APP 區(qū)固件損壞的情況。
  2. 10 米之內(nèi)隔空燒錄 OTA(On the Air):“隔空燒錄” 源于一個(gè) IoT 項(xiàng)目,用于解決空調(diào)外機(jī)硬件升級(jí)嵌入式程序的困難。通過改進(jìn)的 AVRUBD 通信協(xié)議,結(jié)合手機(jī)版上位機(jī)軟件,實(shí)現(xiàn)了用手機(jī)進(jìn)行 “隔空燒錄”。
  3. BL 的分散燒錄:在復(fù)雜系統(tǒng)架構(gòu)(如主 MCU + CPLD + 通信協(xié)處理器 + 采集協(xié)處理器)中,為解決批量生產(chǎn)時(shí)燒錄程序繁瑣的問題,引入了 “BL 的分散燒錄” 機(jī)制。將所有固件拼裝成一個(gè)大固件,預(yù)先燒錄到外擴(kuò) ROM 中,主 MCU 燒錄好 BL 后,在 PCBA 首次上電時(shí),BL 從外擴(kuò) ROM 中讀取大固件,并分離出各個(gè)小固件,分別燒錄到各個(gè)部件中。

不走尋常路的 BL


  1. Bootpatcher:一般情況下,Bootloader 在 ROM 中的位置位于 APP 區(qū)前面。但在某些特殊情況下,若 APP 必須放在 0X08000000 位置,可將 BL 放在 APP 后面,稱為 Bootpatcher。APP 運(yùn)行時(shí),可跳轉(zhuǎn)到 Bootpatcher 接收固件文件,校驗(yàn)后寫入 APP 區(qū),再跳轉(zhuǎn)到 APP 區(qū)或重啟。不過,這種做法有風(fēng)險(xiǎn),APP 區(qū)燒錄失敗可能導(dǎo)致產(chǎn)品變磚。
  2. APP 反燒 BL:當(dāng) BL 需要升級(jí)時(shí),除了使用 JLINK,還可在 APP 程序中實(shí)現(xiàn)接收固件文件、暫存校驗(yàn)并燒錄到 BL 區(qū)。這種逆向思維的方法雖有一定風(fēng)險(xiǎn),但通??尚小?/li>
關(guān)鍵詞:單片機(jī)

版權(quán)與免責(zé)聲明

凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://www.udpf.com.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

我司代理分銷MOS管,單片機(jī),電源IC,驅(qū)動(dòng)IC,PD協(xié)議IC等,專業(yè)提供各種電子元器件!
廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機(jī)號(hào)碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務(wù):
賣家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時(shí)間周一至周五
9:00-17:30

關(guān)注官方微信號(hào),
第一時(shí)間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫(kù)提出的寶貴意見,您的參與是維庫(kù)提升服務(wù)的動(dòng)力!意見一經(jīng)采納,將有感恩紅包奉上哦!