色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

把Bootloader玩出花,不走尋常路的BL

832065824 ? 來源:一起學嵌入式 ? 2023-07-12 09:03 ? 次閱讀

正文

3、把Bootloader玩出花

上面我所講的都是BL最基礎的一些內(nèi)容,是我們實現(xiàn)BL所必須了解的。BL真正的亮點在于多種多樣的固件數(shù)據(jù)獲取方式。

3.1 BL的實現(xiàn)與延伸(串口傳輸固件)

前面我講到過兩個BL應用的實例,一個是串口傳輸固件文件,一個是SD卡拷貝固件文件。它們是在實際工程中經(jīng)常被用到的兩種BL形式。這里著重對前一個實例的實現(xiàn)細節(jié)進行講解剖析,因為它非常具有典型意義,如圖3.21。

2c533318-2043-11ee-962d-dac502259ad0.png

圖3.21 BL(串口傳輸固件)的實現(xiàn)流程圖

這個流程圖提出了3個問題:

1、串口通信協(xié)議是如何實現(xiàn)的?

2、為什么獲取到上位機傳來的固件數(shù)據(jù),不是直接寫入到APP區(qū),而是先暫存,

還要校驗?

3、對固件數(shù)據(jù)是如何實現(xiàn)校驗的?

串口通信協(xié)議以及文件傳輸實現(xiàn)的相關內(nèi)容略顯繁雜,在本書《大話文件傳輸》一章中會專門進行講解。

第二個問題:經(jīng)過串口傳輸最終由單片機接收到的固件數(shù)據(jù)是可能出現(xiàn)差錯的,而有錯誤的固件冒然直接寫入到APP區(qū),是一定運行不起來的。所以,我們要對數(shù)據(jù)各幀進行暫存,等全部傳輸完成后,對其進行整體校驗,以保證固件數(shù)據(jù)的絕對正確。

針對第三個問題,我們要著重探討一下。

一個文件從發(fā)送方傳輸?shù)浇邮辗剑绾未_定它是否存在錯誤?通常的作法在文件中加入校驗碼,接收方對數(shù)據(jù)按照相同的校驗碼計算方法計算得到校驗碼,將之與文件中的校驗碼進行對比,一致則說明傳輸無誤,如圖3.22。

2c6c42fe-2043-11ee-962d-dac502259ad0.png

圖3.22 對固件文件進行補齊并追加校驗碼

圖3.22是對固件文件的補齊以及追加校驗碼的示意。為什么要對文件補齊?嵌入式程序經(jīng)過交叉編譯生成的可燒錄文件,比如BIN,多數(shù)情況下都不是128、256、512或1024的整數(shù)倍。這就會導致在傳輸?shù)臅r候,最后一幀數(shù)據(jù)的長度不足整幀,就會產(chǎn)生一個數(shù)據(jù)尾巴。取整補齊是解決數(shù)據(jù)尾巴最直接的方法。這一操作是在上位機上完成的,通常是編寫一個小軟件來實現(xiàn)。這個小軟件同時會將校驗碼追加到固件文件末尾。這個校驗碼可以使用校驗和(Checksum)或者CRC,一般是16位或32位,如圖3.23。

2c84fd94-2043-11ee-962d-dac502259ad0.png

圖3.23 通過一個小軟件實現(xiàn)對固件文件補齊和添加校驗碼

又有人會問:“要把整個固件暫存下來,再作校驗,那得需要額外的存儲空間吧,外擴ROM(FlashROM或EEPROM)?”是的。如果想節(jié)省成本,我們也可以不暫存,傳輸時直接燒寫到APP區(qū)。這是有風險的,但是一般來說問題不大(STC和STM32的串口ISP其實也都是實時燒寫,并不暫存)。

因為在傳輸?shù)倪^程中,傳輸協(xié)議對數(shù)據(jù)的正確性是有一定保障的,它會對每一幀數(shù)據(jù)進行校驗,失敗的話會有重傳,連續(xù)失敗可能會直接終止傳輸。所以說,一般只要傳輸能夠完成,基本上數(shù)據(jù)正確性不會有問題。但是仍然建議對固件進行整體校驗,在成本允許的情況下適當擴大ROM容量。同時,固件暫存還有一個另外的好處,在APP區(qū)中的固件受到損壞的時候,比如固件意外丟失或IAP時不小心擦除了APP區(qū),此時我們還可以從暫存固件恢復回來(完備的BL會包含固件恢復的功能)。

其實也不必非要外擴ROM,如果固件體積比較小的話,我們可以把單片機的片上ROM砍成兩半來用,用后一半來作固件暫存。

2cb07e92-2043-11ee-962d-dac502259ad0.png

圖3.24 將片上ROM劃分為3部分

如圖3.24,我們將片上ROM劃分為3部分,分別用于存儲BL、APP固件以及暫存固件。比如我們使用STM32F103RBT6,它一共有128KB的ROM,可以劃分為16K/56K/56K。

有些產(chǎn)品對成本極為敏感。我就有過這樣的開發(fā)經(jīng)歷,當時使用的單片機是STM32F103C8T6,片上ROM總容量為64K,固件大小為48K,BL為12K。在通過BL進行固件燒寫時根本沒有多余的ROM進行固件暫存。我使用了一招“狗尾續(xù)貂”,如圖3.25。

2cbfb628-2043-11ee-962d-dac502259ad0.png

圖3.25 STM32F103C8T6后64K也可用

我無意中了解到STM32F103C8T6與RBT6的晶元是同一個。只是因為有些芯片后64KB的ROM性能不佳或有瑕疵,而被限制使用了。我實際測試了一下,確實如此。但是后64K ROM的使用是有前提的,也就是需要事先對其好壞進行驗證。如果是好的,則暫存校驗,再寫入APP區(qū);而如果是壞的,那么就直接在固件傳輸時實時寫入APP區(qū)(這個辦法我屢試不爽,還沒有發(fā)現(xiàn)后64K有壞的)。

以上振南所介紹的是一種“騷操作”,根本上還是有一定的風險的,ST官方有聲明過,對后64K ROM的質(zhì)量不作保證,所以還是要慎用。

3.2 10米之內(nèi)隔空燒錄

這個“隔空燒錄”源于我的一個IoT項目,它是對空調(diào)的外機進行工況監(jiān)測。大家知道,空調(diào)外機的安裝那可不是一般人能干的,它要不就在樓頂,要不就在懸窗上。這給硬件升級嵌入式程序帶來很大的困難。所以,我實現(xiàn)了“隔空燒錄”的功能,其實它就是串口BL應用的一個延伸,如圖3.26所示。

2cce01e2-2043-11ee-962d-dac502259ad0.png

圖3.26 通過藍牙串口模塊實現(xiàn)“隔空燒錄”

“隔空燒錄確實牛,但是總要抱著一個電腦,這不太方便吧。”確實是!還記得前面我提過的AVRUBD通信協(xié)議嗎?它的上位機軟件是有手機版的。這樣我們只要有手機,就能“隔空燒錄”了,如圖3.27。

2cdd9d3c-2043-11ee-962d-dac502259ad0.png

圖3.27 手機連接藍牙串口模塊實現(xiàn)“手機隔空燒錄”

“哪個APP?快告訴我名字”,別急,藍牙串口助手安卓版,圖3.28是正在傳輸固件的界面。

2cf7e6ce-2043-11ee-962d-dac502259ad0.png

圖3.28 藍牙串口助手傳輸固件文件的界面

AVRUBD其實是對Xmodem協(xié)議的改進,這個我們放在專門的章節(jié)進行詳細講解。

3.3 BL的分散燒錄

我們知道BL的核心功能其實就是程序燒錄。那你有沒有遇到過比較復雜的情況,如圖3.29所示。

2d1467cc-2043-11ee-962d-dac502259ad0.png

圖3.29 一個系統(tǒng)(產(chǎn)品)中有多個部件需要燒錄固件

這種情況是有可能遇到的。主MCU+CPLD+通信協(xié)處理器+采集協(xié)處理器就是典型的復雜系統(tǒng)架構。這種產(chǎn)品在批量生產(chǎn)階段,燒錄程序是非常繁瑣的。首先需要維護多個固件,再就是需要一個個給每一個部件進行燒寫,燒寫方式可能還不盡相同。所以我引入了一個機制,叫“BL的分散燒錄”。

首先我們將所有的固件拼裝成一個大固件(依次數(shù)據(jù)拼接),并將這個大固件預先批量燒錄到外擴ROM中,比如spiFlash;再將主MCU預先燒錄好BL;然后進行SMT焊接。PCBA生產(chǎn)出來之后,只要一上測試工裝(首次上電),BL會去外擴ROM中讀取大固件,并從中分離出各個小固件,分別以相應的接口燒錄到各個部件中去。配合工裝的測試命令,直接進行自檢。這樣作,批量化生產(chǎn)是非常高效的。當然,這個BL開發(fā)起來也會有一定難度,最大問題可能還是各個部件燒錄接口的實現(xiàn)(有些部件的燒錄協(xié)議是比較復雜的,比如STM32的SWD或者ESP8266的SLIP)。

OK,上面振南就對一些BL實例的實現(xiàn)和應用場景進行了介紹。還有一些實例沒有介紹,比如通過CAN總線或SPI進行文件傳輸,這個我們還是放到專門的章節(jié)去詳細講解。當然,各位讀者可以在此基礎上衍生出更多有特色而又實用的BL來。

BL沒有最好的,只有最適合自己的。通常來說,我們并不會把BL設計得非常復雜,原則上它應該盡量短小精煉,以便為APP區(qū)節(jié)省出更多的ROM空間。畢竟不能喧賓奪主,APP才是產(chǎn)品的主角。

4、不走尋常路的BL

4.1 Bootpatcher

我來問大家一個問題:“Bootloader在ROM中的位置一定是在APP區(qū)前面嗎?”很顯然不是,AVR就是最好的例子。那如果我們限定是STM32呢?似乎是的。上電復位一定是從0X08000000位置開始運行的,而且BL一定是先于APP運行的。

在某些特殊的情況下,如果APP必須要放在0X08000000位置上的話,請問還有辦法實現(xiàn)BL串口燒錄嗎?要知道APP在運行的時候,是不能IAP自己的程序存儲器的(就是自己能自己擦出重新燒錄新固件)。請看圖3.30。

2d1fc81a-2043-11ee-962d-dac502259ad0.png

圖3.30 BL位于APP之后稱之為Bootpatcher

APP運行時,想要重新燒錄自身,它可以直接跳轉到后面的BL上,BL運行起來之后開始接收固件文件,暫存校驗OK之后,將固件寫入到前面的APP區(qū)。然后跳轉到0X08000000,或者直接重啟。這樣新的APP就運行起來了。這個位于APP后面的BL,我們稱之為Bootpatcher(意為啟動補丁)。但是這種作法是有風險的,一旦APP區(qū)燒錄失敗,那產(chǎn)品就變磚了。所以這種方法一般不用。

4.2 APP反燒BL

前面我們都是在講BL燒錄APP,那如果BL需要升級怎么辦呢?用JLINK。不錯,不過有更直接的方法,如圖3.31所示。

2d2f37aa-2043-11ee-962d-dac502259ad0.png

圖3.31 APP燒錄BL區(qū)

這是一種逆向思維,我們在APP程序中也實現(xiàn)接收固件文件,暫存校驗,然后將其燒錄到BL區(qū)。這種作法與Bootpatcher同理,也是有一定風險的,但一般都沒有問題。

OK,本章對BL進行了詳盡的剖析講解,應該作到了深入淺出,包含基本的原理,以及實例的實現(xiàn),還有一些知識的擴展。這其中不乏振南的一些創(chuàng)新思想,希望能夠對大家產(chǎn)生啟發(fā),在實際的工作中將這些知識付諸實踐。





審核編輯:劉清

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

    關注

    9

    文章

    1019

    瀏覽量

    81562
  • 串口通信
    +關注

    關注

    34

    文章

    1624

    瀏覽量

    55510
  • 上位機
    +關注

    關注

    27

    文章

    941

    瀏覽量

    54791
  • bootloader
    +關注

    關注

    2

    文章

    235

    瀏覽量

    45614
  • CRC效驗
    +關注

    關注

    0

    文章

    30

    瀏覽量

    1102

原文標題:【連載-2】深入淺出話Bootloader

文章出處:【微信號:汽車電子嵌入式,微信公眾號:汽車電子嵌入式】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    尋常路,德州儀器主攻數(shù)字IC搶市場

    隨著后PC時代的來臨,包括高通(Qualcomm)、輝達(NVIDIA)等芯片大廠都積極在行動通訊市場上大展身手,惟老字號的數(shù)字IC大廠德儀(TI)卻反其道而行,將營運重心重新轉回數(shù)字IC和嵌入式處理器(EmbeddedProcessing),并鎖定工控和汽車等利基應用,做為未來成長的主動能,背后原因讓人好奇。對此TI大中華區(qū)總經(jīng)理暨中國區(qū)總裁、亞洲區(qū)副總裁謝兵,進一步說明TI布局的考量。
    發(fā)表于 04-17 09:17 ?1030次閱讀

    【第108集】尋常路BootloaderBL位于APP之后?APP反燒錄BL?@深入淺出話Bootlo

    單片機經(jīng)驗分享
    于振南的單片機世界
    發(fā)布于 :2023年04月24日 13:11:49

    那些年,fpga路上我們走過的”不尋常路

    哪些”不尋常路“? 一起分享給那些像曾經(jīng)的你一樣正在fpga路上奮斗的人。原來分享也是一種美,站在高處,不要太寂寞了`
    發(fā)表于 12-04 15:39

    原創(chuàng)設計品牌,LOFREE洛斐產(chǎn)品尋常路

    ``網(wǎng)上看到大陸內(nèi)有產(chǎn)品得了德國紅點至尊獎。這個可不是一般的獎項哦。這個品牌據(jù)說還是大陸原創(chuàng)的設計品牌。不簡單吧,叫LOFREE洛斐,講究的是產(chǎn)品品質(zhì)做到極致。仔細了解了下,的確是挺有創(chuàng)意的!``
    發(fā)表于 09-18 11:33

    PCB設計那些陳規(guī)原來并不是鐵律,這個尋常路的大牛設計大家怎么看?

    是原貼:國內(nèi)的工程師(起碼占90%以上),一看到別人的PCB,只懂得檢查下面的細節(jié)。 1. 怎么線有直角的?2. 怎么不使用滴淚?3. 怎么鋪銅? 當發(fā)現(xiàn)沒有細節(jié)這些時,就會大罵垃圾。雖然本文
    發(fā)表于 08-06 07:19

    AMD——尋常路

    不久前,超微 ( AMD )提出了結盟晶片界同業(yè)共同成立「異構系統(tǒng)架構」組織(Heterogeneous System Architecture, HSA )的大膽舉動,并宣布將在其APU中添加ARM Cortex A5處理器(用于提升安全能
    發(fā)表于 06-25 09:25 ?810次閱讀

    尋常路,一個銷售轉電子工程師的經(jīng)歷

    這篇文章是電子發(fā)燒友網(wǎng)的一個網(wǎng)友所寫,講述了自己從業(yè)的一些經(jīng)歷。我們大家作為一個電子行業(yè)的從業(yè)人員,可從事的職位很多,可選擇的方向也很多,究竟自己選擇的是否適合自己?嘗試過不適合又該如何做?你是否有從新來過的勇氣?總之,希望大家的電子之路一順風。
    發(fā)表于 04-18 10:07 ?4677次閱讀

    尋常路 帶你見識下這些造型稀奇古怪的電腦!

    現(xiàn)在為大家總結了一份真正稀奇古怪,個性十足的電腦清單展示,看看你見過幾個?
    發(fā)表于 06-02 11:22 ?913次閱讀

    魅族pro7什么時候上市?魅族pro7最新消息:拜服!魅族7月發(fā)新旗艦魅族pro7曝光,工業(yè)設計暴走

    對于魅族來說,想要讓自己的旗艦新機更首用戶關注,在設計上尋常路是一定的,而即將亮相的PRO 7就是如此。
    發(fā)表于 07-03 09:51 ?748次閱讀

    虎:計劃開發(fā)能夠應付各種越野條件的自動駕駛汽車

    正如有人喜歡賽道繞圈,也有人喜歡野外挑戰(zhàn)。當吹響自動駕駛汽車的革命號角時,許多汽車廠商都選擇了迅速跟進,但虎又一次選擇了尋常路。當前自動駕駛技術主要面向城市通勤和高速公路,旨在
    發(fā)表于 06-14 11:10 ?483次閱讀

    同是“車協(xié)同”,尋常路的巨頭們走了各自的

    協(xié)同還需要更多的經(jīng)驗和摸索,而這段時間內(nèi),競爭勢必也會被合作替代。此時總結誰家方案可行,誰家方案有效為時尚早,但可以斷定車協(xié)同是獨樂樂不如眾樂樂的事,一家玩的車協(xié)同與誰都無益。
    的頭像 發(fā)表于 10-25 09:09 ?7500次閱讀

    iPhone12 mini屏幕雖小,但功能加倍性能提升

    在大屏手機的流行的時代里面,Apple尋常路推出這款只有5.4英寸的屏幕iPhone 12 mini讓我們重回小屏幕時代。iPhone 12 mini屏幕雖小功能加倍性能提升。
    的頭像 發(fā)表于 11-25 12:21 ?4416次閱讀

    DDR4設計過孔STUB長,DDR信號“強”?

    眾所周知過孔stub越短越好,為何這次卻不尋常路,偏偏要加長
    的頭像 發(fā)表于 05-11 09:16 ?2783次閱讀
    DDR4設計過孔STUB長,DDR信號“強”?

    MWCS 2023丨5G時代 還能玩出什么

    原文標題:MWCS 2023丨5G時代 還能玩出什么? 文章出處:【微信公眾號:中興通訊】歡迎添加關注!文章轉載請注明出處。
    的頭像 發(fā)表于 06-26 15:55 ?315次閱讀

    案例I不用布線也能做信號覆蓋?微型“基站”搬進院子!

    新樓盤開售,沒信號嚴重影響成交 尋常路,打破傳統(tǒng)布線方案 建立微型“基站”,信號拉滿 明線、
    的頭像 發(fā)表于 09-04 14:03 ?870次閱讀
    案例I不用布線也能做信號覆蓋?<b class='flag-5'>把</b>微型“基站”搬進院子!
    主站蜘蛛池模板: 久久99AV无色码人妻蜜| 午夜精品久久久久久久99蜜桃| 久久香蕉国产线看观看| 久久久久久久99精品免费观看| 狠狠鲁 我喜欢| 久久精品久久久久| 伦理片午夜在线视频| 男男免费看| 色偷偷7777www| 亚洲国产成人精品不卡青青草原 | 美女夫妻内射潮视频| 女教师二十三歳| 性色爽爱性色爽爱网站| 亚洲欧美日韩在线码不卡| 小草视频免费观看在线| 男男被强bl高h文| 蜜桃麻豆WWW久久囤产精品免费 | FREEHDXXXX学生妹| 19十主播福利视频| 18岁男人女人插孔| 55夜色66夜亚洲精品播放| 99视频导航| 动漫AV纯肉无码AV电影网| 国产成人在线播放| 和姐姐做插得很深| 久久这里只有热精品18| 欧美极品尿交| 亚欧乱亚欧乱色视频| 孕妇bbwbbwbbwbbw超清| 操中国老太太| 狠狠爱亚洲五月婷婷av| 欧美激情社区| 亚洲字幕久久| 儿子操妈妈视频| 久久99精品国产自在自线| 欧美高清69vivo| 亚洲欧美日韩综合影院| a级销魂美女| 国产在线精品视频资源| 碰超成人在线公开免费视频| 亚洲精品人成电影网|