簡介
本文主要講解在線升級(OTA)的基礎(chǔ)知識, 主要是針對IAP OTA從原理分析, 分區(qū)劃分, 到代碼編寫和實驗驗證等過程闡述這一過程. 幫助大家加深對OTA的認識.
1. OTA基礎(chǔ)知識
什么是BootLoader?
BootLoader可以理解成是引導程序, 它的作用是啟動正式的App應(yīng)用程序.
換言之, BootLoader是一個程序, App也是一個程序, BootLoader程序是用于啟動App程序的.
STM32中的程序在哪兒?
正常情況下, 我們寫的程序都是放在STM32片內(nèi)Flash中(暫不考慮外擴Flash).
我們寫的代碼最終會變成二進制文件, 放進Flash中
感興趣的話可以在Keil>>>Debug>>>Memory中查看, 右邊Memory窗口存儲的就是代碼
接下來就可以進入正題了.
進行分區(qū)
既然我們寫的程序都會變成二進制文件存放到Flash中, 那么我們就可以進一步對我們程序進行分區(qū).
我使用的是F103RB-NUCLEO開發(fā)板,他的Flash一共128頁, 每頁1K.見下圖:
以它為例, 我將它分為三個區(qū).BootLoader區(qū)、 App1區(qū)、 App2區(qū)(備份區(qū))具體劃分如下圖:
BootLoader區(qū)存放啟動代碼
App1區(qū)存放應(yīng)用代碼
App2區(qū)存放暫存的升級代碼
總體流程圖
先執(zhí)行BootLoader程序, 先去檢查APP2區(qū)有沒有程序, 如果有就將App2區(qū)(備份區(qū))的程序拷貝到App1區(qū), 然后再跳轉(zhuǎn)去執(zhí)行App1的程序.
然后執(zhí)行App1程序, 因為BootLoader和App1這兩個程序的向量表不一樣, 所以跳轉(zhuǎn)到App1之后第一步是先去更改程序的向量表. 然后再去執(zhí)行其他的應(yīng)用程序.
在應(yīng)用程序里面會加入程序升級的部分, 這部分主要工作是拿到升級程序, 然后將他們放到App2區(qū)(備份區(qū)), 以便下次啟動的時候通過BootLoader更新App1的程序.
流程圖如下圖所示:
2. BootLoader的編寫
本節(jié)主要講解在線升級(OTA)的BooLoader的編寫,我將以我例程的BootLoader為例, 講解BootLoader(文末會提供免費的代碼下載鏈接),其他的大體上原理都差不多。
流程圖分析
以我例程的BootLoader為例:
我將App2區(qū)的最后一個字節(jié)(0x0801FFFC)用來表示App2區(qū)是否有升級程序, STM32在擦除之后Flash的數(shù)據(jù)存放的都是0xFFFFFFFF, 如果有, 我們將這個地址存放0xAAAAAAAA. 具體的流程圖見下圖所示
STM32F103rb_delay_us.zip
Ymodem協(xié)議
具體流程可自行查找相關(guān)文檔, 這兒提供一個我找到的 XYmodem.pdf.
Ymodem協(xié)議相關(guān)介紹可參考我的這篇教程 STM32F103rb_delay_us.zip
App1源代碼 STM32F103rb_App1.zip
代碼的下載
由下圖可知兩份代碼的下載區(qū)域是不一樣的,所以他們下載的區(qū)域也不一樣。
BootLoader的下載
BootLoader的代碼默認是最開始的所以不需要特別設(shè)置代碼的下載位置
按照下圖, 修改擦除方式為Erase Sectors, 大小限制在0X5000(20K)
燒錄代碼
運行, 通過串口1打印輸出, 會看到以下打印消息
說明BootLoader已經(jīng)成功運行
App1的下載
App1稍微復(fù)雜一點, 需要將代碼的起始位置設(shè)置為0x08005000
同時也要修改擦除方式為Erase Sectors, 見下圖
燒錄代碼
運行, 通過串口1打印輸出, 會看到以下打印消息
說明BootLoader已經(jīng)成功跳轉(zhuǎn)到版本號為0.0.1的App1
生成App2的.bin文件
Keil如何生成.bin文件, 請參考這篇博文 Keil如何生成.bin文件
修改代碼, 把版本號改為0.0.2, 并且編譯并且生成.bin文件
生成好之后你會得到一個.bin結(jié)尾的文件, 這就是我們待會兒YModem要傳輸?shù)奈募?/p>
使用Xshell進行文件傳輸
打開Xshell
代碼中, 串口1進行調(diào)試信息的打印, 串口2進行YModem升級的
所以使用Xshell打開串口2進行文件傳輸, 串口1則可以通過串口調(diào)試助手查看調(diào)試消息, 具體過程如下
你會看到App的版本成功升級到0.0.2了.
如果你到了這一步.
那么恭喜你! 你已經(jīng)能夠使用在線升級了!
通過本幾節(jié)的教程, 想必你已經(jīng)會使用在線升級了, 只要原理知道了其他的問題都可以迎刃而解了, 除了使用YModem協(xié)議傳輸.bin文件, 你還可以通過藍牙, WIFI,等其他協(xié)議傳輸, 只要能夠?qū)?bin文件傳輸過去, 那其他的部分原理都差不多.
上一篇:STM32CubeMX + STM32F1系列開發(fā)時遇到的四個問題及解決
下一篇:STM32CubeMX | 28 - STM32片內(nèi)Flash的使用
推薦閱讀
史海拾趣
為了進一步擴大市場份額,華宇創(chuàng)開始積極拓展國內(nèi)外市場。公司參加了多場國際電子展和博覽會,與全球各地的客戶建立了廣泛的聯(lián)系。同時,華宇創(chuàng)還與國際知名電子企業(yè)建立了戰(zhàn)略合作關(guān)系,共同研發(fā)新技術(shù)、新產(chǎn)品。這些國際合作不僅為華宇創(chuàng)帶來了更多的商業(yè)機會,也提升了公司在國際市場的地位和影響力。
隨著產(chǎn)品的熱銷,Astro Industries Inc開始積極尋求市場拓展的機會。公司加強了與各大銷售渠道的合作,通過線上線下相結(jié)合的方式,將產(chǎn)品推向更廣闊的市場。同時,公司也注重品牌建設(shè),通過統(tǒng)一的品牌形象和宣傳策略,提升了品牌知名度和美譽度。這些舉措使得Astro Industries Inc在電子行業(yè)中逐漸嶄露頭角。
谷峰電子有限公司的故事始于1995年,當時公司在香港成立,標志著其半導體元器件研發(fā)與銷售的起點。初期,面對激烈的市場競爭和技術(shù)挑戰(zhàn),谷峰團隊憑借對半導體技術(shù)的深刻理解和對市場需求的敏銳洞察,逐步確立了以功率MOSFET為核心產(chǎn)品的戰(zhàn)略方向。2000年,谷峰在深圳設(shè)立分公司,進一步擴大了其研發(fā)和銷售網(wǎng)絡(luò),為公司的快速發(fā)展奠定了堅實基礎(chǔ)。
博通集成深知技術(shù)創(chuàng)新是企業(yè)發(fā)展的核心動力。因此,公司始終保持高額的研發(fā)投入,不斷推動技術(shù)創(chuàng)新和產(chǎn)品研發(fā)。公司擁有一支專業(yè)的研發(fā)團隊,具備強大的研發(fā)實力和創(chuàng)新能力。通過持續(xù)的研發(fā)投入和技術(shù)創(chuàng)新,博通集成在無線連接芯片設(shè)計領(lǐng)域取得了顯著的成果和進展。
博通集成深知技術(shù)創(chuàng)新是企業(yè)發(fā)展的核心動力。因此,公司始終保持高額的研發(fā)投入,不斷推動技術(shù)創(chuàng)新和產(chǎn)品研發(fā)。公司擁有一支專業(yè)的研發(fā)團隊,具備強大的研發(fā)實力和創(chuàng)新能力。通過持續(xù)的研發(fā)投入和技術(shù)創(chuàng)新,博通集成在無線連接芯片設(shè)計領(lǐng)域取得了顯著的成果和進展。
Herrmann Kg自成立以來,始終致力于超聲波焊接技術(shù)的創(chuàng)新。在1960年代初,由Walter Herrmann創(chuàng)立的這家公司,通過引入基于發(fā)電機原理的機器發(fā)生器,成功替代了當時不穩(wěn)定的超聲波管發(fā)生器,這一技術(shù)創(chuàng)新極大地提升了超聲波焊接的穩(wěn)定性和效率。隨著技術(shù)的不斷迭代,Herrmann Kg開發(fā)出了包括ULTRAPLAST、ULTRAPACK和ULTRABOND在內(nèi)的多條產(chǎn)品線,這些產(chǎn)品不僅滿足了市場對高效、可靠焊接技術(shù)的需求,還推動了超聲波焊接技術(shù)在電子制造領(lǐng)域的廣泛應(yīng)用。
汽車電子市場是繼電腦、通訊之后PCB的第三大應(yīng)用領(lǐng)域。隨著汽車從傳統(tǒng)意義上的機械產(chǎn)品,逐步演化、發(fā)展成為智能化、信息化、機電一體化的高技術(shù)產(chǎn)品,電子技術(shù)在汽車上的應(yīng)用已十分廣泛,無論是發(fā)動機系統(tǒng),還是底盤系統(tǒng)、安全系統(tǒng)、信息系 ...… 查看全部問答∨ |
|
情況是這樣,我用TCPUDP工具給STM32發(fā)數(shù)據(jù),然后通過USART在電腦上顯示出來。比如我發(fā)送123456,但為什么打印出來的是ascii碼? 急求答案,先謝謝了?!? 查看全部問答∨ |
本帖最后由 dontium 于 2015-1-23 12:51 編輯 很基礎(chǔ)的一些東西 在論壇上下了不少東西 也要貢獻一下 如果有人發(fā)過的話版主就刪了吧 … 查看全部問答∨ |
關(guān)于C2000芯片的FLASH鎖死----以及解決辦法 FLASH鎖死了這是為什么,有沒有辦法解鎖。為什么會有類似下面這幾種報錯: Read status value 0x0001 from symbol PRG_status(24x系列) ADC Calibration not complete, check if device is unlocked and recalibrate.(2833x系列) 答:FL ...… 查看全部問答∨ |
|
富士通DIY工業(yè)控制板原理圖及PCB發(fā)布 已經(jīng)1周多了,當初就打算寫個硬件說明什么的,讓大家使用“富士通DIY工業(yè)控制板” 時更加方便。也能讓大家明白電路當初那么做的一些意圖。上一周基本上已經(jīng)寫好,為了讓大家看起 ...… 查看全部問答∨ |
STM3210B--電機控制入門套件 FOC 程序庫(sensorless) 附件中的庫已經(jīng)驗證在demo板上,運行正常。 [ 本帖最后由 安_然 于 2013-1-30 16:02 編輯 ]… 查看全部問答∨ |
最近項目需要,換了富士通FRAM在用,但還是存在老問題——FRAM與CPLD連接,每次第一次給CPLD下載完邏輯之后FRAM就會壞掉,無法使用,更換一個新的后馬上就好了,而且再次下載邏輯都不會壞。以為是以前用RAMTRON的FRAM導致的,看來不是,還真是FRAM ...… 查看全部問答∨ |
設(shè)計資源 培訓 開發(fā)板 精華推薦
- 蜂巢能源2025年試產(chǎn)半固態(tài)電池,2027年大批量供貨
- 激光雷達進化論:RoboSense如何持續(xù)領(lǐng)跑?
- 法雷奧-全景顯示技術(shù) Panovision | 申報2025第七屆金輯獎中國汽車新供應(yīng)鏈百強
- 公安部:目前我國市售汽車搭載的“智駕”系統(tǒng),都不具備“自動駕駛”功能
- 德賽西威-旗艦級AI智能座艙域控制器 | 申報2025第七屆金輯獎中國汽車新供應(yīng)鏈百強
- Mobileye推出駕駛員監(jiān)測系統(tǒng)(DMS)技術(shù) ,實現(xiàn)人與車輛協(xié)同駕駛
- 第三屆安富利汽車生態(tài)圈峰會盛大啟幕,雙城聯(lián)動激發(fā)智慧出行產(chǎn)業(yè)新動能
- Vicor Corporation 2025年第二季度財報:專利訴訟和解推動強勁增長
- 智能底盤2.0競賽,這家外資巨頭按下加速鍵
- GaN技術(shù)如何應(yīng)用到人形機器人執(zhí)行關(guān)節(jié)?
- TI 高精度實驗室信號鏈精品課大作戰(zhàn)——你學習我送禮!
- TI 嵌入式處理器最新產(chǎn)品發(fā)布會 全程在線直播 4月16日精彩為您呈現(xiàn)!預(yù)報名、看直播、享好禮
- 【TI 嵌入式研討會集錦】小站添加了很多新內(nèi)容,歡迎提貨!
- 《帶您了解ADI數(shù)字健康生物傳感器系列》有獎直播
- 解鎖【W(wǎng)5500-EVB-Pico】,探秘以太網(wǎng)底層,得捷Follow me第4期來襲!
- 免費下載Vishay最新汽車解決方案
- 答題贏京東卡|《安森美和安富利物聯(lián)網(wǎng)創(chuàng)新設(shè)計大賽作品集》
- 有獎?wù){(diào)查:ST MEMS 傳感器論壇用戶問卷調(diào)查,參與有驚喜
- 答題贏好禮:ADI MEMS工業(yè)監(jiān)測助力機器大健康發(fā)展
- 柔記智能手寫本的非凡之處
- 日本IT巨頭半導體量子芯片即將量產(chǎn),英特爾另辟蹊徑緊隨
- 日本上半年對中國出口創(chuàng)新高 半導體表現(xiàn)堅挺
- Semiconductor Today報道西電郝躍院士團隊研究新進展
- 祝賀!ADI 聯(lián)合創(chuàng)始人Ray Stata又獲得一項“終身成就獎”
- 藥企已經(jīng)無法離開人工智能,但AI想要牽手藥企還需要跨越阻礙
- Swift發(fā)布高精度車用定位方案 TeseoAPP芯片助力汽車關(guān)鍵安全性定位
- 奧迪:2020年奧迪電動汽車將12分鐘內(nèi)快速充電至80%
- 美光宣布向人工智能創(chuàng)業(yè)公司投資1億美元
- 不能有更多腿了:科學家展示像變形蟲一樣的32足機器人