日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

歷史上的今天

今天是:2025年07月23日(星期三)

2021年07月23日 | STM32在線升級OTA

發(fā)布者:誰與爭鋒1 來源: eefocus關(guān)鍵字:STM32  在線升級  OTA 手機看文章 掃描二維碼
隨時隨地手機看文章

簡介

本文主要講解在線升級(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窗口存儲的就是代碼

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

接下來就可以進入正題了.


進行分區(qū)

既然我們寫的程序都會變成二進制文件存放到Flash中, 那么我們就可以進一步對我們程序進行分區(qū).


我使用的是F103RB-NUCLEO開發(fā)板,他的Flash一共128頁, 每頁1K.見下圖:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


以它為例, 我將它分為三個區(qū).BootLoader區(qū)、 App1區(qū)、 App2區(qū)(備份區(qū))具體劃分如下圖:

  • BootLoader區(qū)存放啟動代碼

  • App1區(qū)存放應(yīng)用代碼

  • App2區(qū)存放暫存的升級代碼

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

總體流程圖

  • 先執(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的程序.
    流程圖如下圖所示:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

2. BootLoader的編寫

本節(jié)主要講解在線升級(OTA)的BooLoader的編寫,我將以我例程的BootLoader為例, 講解BootLoader(文末會提供免費的代碼下載鏈接),其他的大體上原理都差不多。


流程圖分析

以我例程的BootLoader為例:

我將App2區(qū)的最后一個字節(jié)(0x0801FFFC)用來表示App2區(qū)是否有升級程序, STM32在擦除之后Flash的數(shù)據(jù)存放的都是0xFFFFFFFF, 如果有, 我們將這個地址存放0xAAAAAAAA. 具體的流程圖見下圖所示

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

STM32F103rb_delay_us.zip


Ymodem協(xié)議

  • 具體流程可自行查找相關(guān)文檔, 這兒提供一個我找到的 XYmodem.pdf.

  • Ymodem協(xié)議相關(guān)介紹可參考我的這篇教程 STM32F103rb_delay_us.zip

  • App1源代碼 STM32F103rb_App1.zip

  • 代碼的下載

    • 由下圖可知兩份代碼的下載區(qū)域是不一樣的,所以他們下載的區(qū)域也不一樣。

    watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    BootLoader的下載

    • BootLoader的代碼默認是最開始的所以不需要特別設(shè)置代碼的下載位置

    • 按照下圖, 修改擦除方式為Erase Sectors, 大小限制在0X5000(20K)

    watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    • 燒錄代碼

    • 運行, 通過串口1打印輸出, 會看到以下打印消息

    • 說明BootLoader已經(jīng)成功運行

    watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    App1的下載

    • App1稍微復(fù)雜一點, 需要將代碼的起始位置設(shè)置為0x08005000

    • 同時也要修改擦除方式為Erase Sectors, 見下圖

    watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    • 燒錄代碼

    • 運行, 通過串口1打印輸出, 會看到以下打印消息

    • 說明BootLoader已經(jīng)成功跳轉(zhuǎn)到版本號為0.0.1的App1

    watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    生成App2的.bin文件

    • Keil如何生成.bin文件, 請參考這篇博文 Keil如何生成.bin文件

    • 修改代碼, 把版本號改為0.0.2, 并且編譯并且生成.bin文件

    • 生成好之后你會得到一個.bin結(jié)尾的文件, 這就是我們待會兒YModem要傳輸?shù)奈募?/p>

    watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    使用Xshell進行文件傳輸

    • 打開Xshell

    • 代碼中, 串口1進行調(diào)試信息的打印, 串口2進行YModem升級的

    • 所以使用Xshell打開串口2進行文件傳輸, 串口1則可以通過串口調(diào)試助手查看調(diào)試消息, 具體過程如下

    download.gif

    • 你會看到App的版本成功升級到0.0.2了.

    • 如果你到了這一步.

    • 那么恭喜你! 你已經(jīng)能夠使用在線升級了!


    5. 總結(jié)

    通過本幾節(jié)的教程, 想必你已經(jīng)會使用在線升級了, 只要原理知道了其他的問題都可以迎刃而解了, 除了使用YModem協(xié)議傳輸.bin文件, 你還可以通過藍牙, WIFI,等其他協(xié)議傳輸, 只要能夠?qū)?bin文件傳輸過去, 那其他的部分原理都差不多.

    關(guān)鍵字:STM32  在線升級  OTA 引用地址:STM32在線升級OTA

    上一篇:STM32CubeMX + STM32F1系列開發(fā)時遇到的四個問題及解決
    下一篇:STM32CubeMX | 28 - STM32片內(nèi)Flash的使用

    推薦閱讀

    CIMdata總裁Peter Bilello曾在 《PLM現(xiàn)狀:今天的市場與主流趨勢》主題報告中指出:2016年,全球PLM市場總體增長為5.2%,達到407億美元;其中,cPDm市場增長6.4%,達到141億美元,服務(wù)增長低于軟件增長;工具市場增長4.5%,達到259億美元,AEC市場拉低總體工具市場增長;數(shù)字化制造市場增長10.3%,達到6.98億美元,高于往年的增長。Peter指出:企業(yè)要實...
    中國儲能網(wǎng)訊:7月以來,華北地區(qū)持續(xù)出現(xiàn)高溫高濕天氣,華北電網(wǎng)負荷持續(xù)攀升。截至7月22日,華北電網(wǎng)負荷達23340萬千瓦,同比增長1.5%,山東電網(wǎng)負荷達8312萬千瓦,同比增長8.7%,均創(chuàng)歷史新高;京津唐電網(wǎng)負荷為6005萬千瓦,達到歷史最大負荷的92.6%;河北南網(wǎng)負荷達3638萬千瓦,為歷史最大負荷的99.5%,創(chuàng)年內(nèi)新高。 迎峰度夏以來,河北南網(wǎng)和山東...
    新浪數(shù)碼訊 7月23日早間消息,三星Galaxy新品發(fā)布會將在北京時間8月5日舉行,預(yù)計會發(fā)布Note 20系列、折疊屏幕手機Fold 2等產(chǎn)品。目前外媒Winfuture曝光了Note 20 系列的詳細配置還有幾張渲染圖?! ∠葋砜纯礃藴士畹娜荊alaxy Note 20,預(yù)計采用6.7英寸FHD+ 60 Hz平面屏幕,分辨率為2400x1080,擁有金屬邊框 + 塑料背板,搭載Exyno...
    這四個問題是我在使用STM32F103C8T6 + STM32CubeMX做項目時遇到的,給大家分享一下,以下四個問題重要程度依次降低,分別是:① 調(diào)試選項問題(默認會造成下載器無法下載);② 定時器設(shè)置占空比的函數(shù)找不到報錯的問題;③ 硬件iic的一個小bug(親測oled可以正常顯示);④ 串口寄存器與其它系列不一樣的問題;1. 調(diào)試選項問題1.1. 問題描述使用S...

    史海拾趣

    問答坊 | AI 解惑

    cadence16.2學習.pdf

    很不錯的資料 ,希望對大家有所幫助…

    查看全部問答∨

    降低汽車用PCB缺陷率的六個方案

     汽車電子市場是繼電腦、通訊之后PCB的第三大應(yīng)用領(lǐng)域。隨著汽車從傳統(tǒng)意義上的機械產(chǎn)品,逐步演化、發(fā)展成為智能化、信息化、機電一體化的高技術(shù)產(chǎn)品,電子技術(shù)在汽車上的應(yīng)用已十分廣泛,無論是發(fā)動機系統(tǒng),還是底盤系統(tǒng)、安全系統(tǒng)、信息系 ...…

    查看全部問答∨

    stm32 usart打印的問題

    情況是這樣,我用TCPUDP工具給STM32發(fā)數(shù)據(jù),然后通過USART在電腦上顯示出來。比如我發(fā)送123456,但為什么打印出來的是ascii碼? 急求答案,先謝謝了?!?

    查看全部問答∨

    發(fā)明者電子設(shè)計寶典

    本帖最后由 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 ...…

    查看全部問答∨

    si446x芯片

    業(yè)內(nèi)最高性能,靈敏度高達-126dBm,抗干擾達到60dBm模塊,正在測試,模塊采用SILICON LABS 最新的si446x芯片。深圳市安美通科技,正在調(diào)試SI446X的芯片,預(yù)計3月中旬樣片會出來,各位感興趣的可以加QQ125344386溝通,交流 [ 本帖最后由 suwei0071 ...…

    查看全部問答∨

    富士通工業(yè)測控DIY板硬件說明

    富士通DIY工業(yè)控制板原理圖及PCB發(fā)布     已經(jīng)1周多了,當初就打算寫個硬件說明什么的,讓大家使用“富士通DIY工業(yè)控制板” 時更加方便。也能讓大家明白電路當初那么做的一些意圖。上一周基本上已經(jīng)寫好,為了讓大家看起 ...…

    查看全部問答∨

    STM3210B--電機控制入門套件 FOC 程序庫(sensorless)

    附件中的庫已經(jīng)驗證在demo板上,運行正常。 [ 本帖最后由 安_然 于 2013-1-30 16:02 編輯 ]…

    查看全部問答∨

    富士通FRAM心得提交

    最近項目需要,換了富士通FRAM在用,但還是存在老問題——FRAM與CPLD連接,每次第一次給CPLD下載完邏輯之后FRAM就會壞掉,無法使用,更換一個新的后馬上就好了,而且再次下載邏輯都不會壞。以為是以前用RAMTRON的FRAM導致的,看來不是,還真是FRAM ...…

    查看全部問答∨

    這禮物是誰送的?

    為什么德州儀器經(jīng)常給我寄禮品啊,這次寄了個MSP430FR5969的光盤,還有一記事本。上次是一幅電容觸摸的手套,寄過來的單位是德州儀器配送倉庫。收了人家東西我總要知道是誰送的啊,不知道其他朋友有沒有收到德州儀器類似的禮品。我想問下是不是論壇 ...…

    查看全部問答∨
    小廣播
    設(shè)計資源 培訓 開發(fā)板 精華推薦

    最新單片機文章

     
    EEWorld訂閱號

     
    EEWorld服務(wù)號

     
    汽車開發(fā)圈

     
    機器人開發(fā)圈

    電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved