日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > > 大橙子瘋嵌入式


前言

關(guān)于 IAP 技術(shù),做過(guò) bootloader 的想必很熟悉(IAP全稱 In Application Programming,即應(yīng)用編程),和 ISP(全稱 In System Programming,即系統(tǒng)編程)不同,ISP 一般都是通過(guò)專業(yè)的調(diào)試器或者下載器對(duì)單片機(jī)內(nèi)部的 Flash 存儲(chǔ)器進(jìn)程編程(如JTAG等),而 IAP 技術(shù)是從結(jié)構(gòu)上將 Flash 儲(chǔ)存器映射分為兩個(gè)或者多個(gè)分區(qū),在一個(gè)分區(qū)中對(duì)其他分區(qū)進(jìn)行編程,這個(gè)分區(qū)通常稱為 bootloader。

OTA(全稱 Over The Air Technology,即云端下載技術(shù),也叫做“空中下載技術(shù)”),其基礎(chǔ)是 IAP 技術(shù), 可以簡(jiǎn)單理解為 IAP 的另一種實(shí)現(xiàn)方式,通常采用的是無(wú)線升級(jí)方式(串口、CAN 等屬于“直接線控升級(jí)”),如通過(guò)藍(lán)牙近距離無(wú)線升級(jí)、ESP8266 網(wǎng)絡(luò)升級(jí)等

IAP 技術(shù)方案

關(guān)于 ISP 技術(shù)這里不過(guò)多介紹,有興趣的朋友可以自己找資料看看。

在實(shí)現(xiàn) IAP 技術(shù)時(shí),針對(duì)通過(guò) bootloader 更新 app 程序通常會(huì)有多種實(shí)現(xiàn)方式,可不僅僅只是 Flash 劃分兩個(gè)分區(qū),然后用 bootloader 對(duì) app 分區(qū)編程這一種方式。

劃分兩個(gè)分區(qū),只有bootloader和app分區(qū),這個(gè)是最簡(jiǎn)單也是最基本的功能;而在實(shí)際產(chǎn)品開(kāi)發(fā)過(guò)程中,需要考慮多種因素和需求,如:升級(jí)失敗了該怎么辦?想恢復(fù)出廠的版本怎么辦?等等一系列的問(wèn)題。

開(kāi)發(fā)IAP時(shí),最基本的功能就是要有接收新程序的通信協(xié)議(用來(lái)接收固件程序,以下簡(jiǎn)稱通信協(xié)議棧),下面介紹幾種常見(jiàn)的實(shí)現(xiàn)方式:

bootloader 程序集成通信協(xié)議棧

以下方案是由 bootlodaer 集成通信協(xié)議棧,編程操作均在 bootloader 中實(shí)現(xiàn),APP 程序中基本不涉及編程操作。

優(yōu)點(diǎn):在沒(méi)有 APP 程序或者 APP 程序異常的時(shí)候也能更新程序
缺點(diǎn):bootloader 相對(duì)復(fù)雜,且程序 Flash 占用空間大

方案一:更新程序時(shí),發(fā)送升級(jí)指令給到 MCU ,MCU 通過(guò)復(fù)位或者跳轉(zhuǎn)的方式進(jìn)入 bootloader 中,bootloader 首先擦除當(dāng)前 APP 程序后,開(kāi)始接收新的 APP 程序并直接寫(xiě)入 APP 分區(qū)中。

| booloader Flash | app Flash |

方案二:更新程序時(shí),發(fā)送升級(jí)指令給到 MCU ,MCU 通過(guò)復(fù)位或者跳轉(zhuǎn)的方式進(jìn)入 bootloader 中,bootloader 不會(huì)擦除當(dāng)前 APP 程序,而是將接收到的新 APP 程序?qū)懭雱澐趾玫目瞻?Flash 中,等全部接收完成并校驗(yàn)成功時(shí),才開(kāi)始擦除當(dāng)前 APP 程序,并將接收完成的新 APP 程序?qū)懭搿?

| booloader Flash | app Flash | 空白Flash |

方案三:更新程序時(shí),發(fā)送升級(jí)指令給到 MCU ,MCU 通過(guò)復(fù)位或者跳轉(zhuǎn)的方式進(jìn)入 bootloader 中,bootloader 不會(huì)擦除當(dāng)前 APP 程序(APP1),而是將接收到的新 APP 程序?qū)懭胍巡脸?APP2 中,等全部接收完成并校驗(yàn)成功時(shí),將 APP1 程序有效標(biāo)志清除,設(shè)置 APP2 程序有效標(biāo)志,bootloader 根據(jù)有效標(biāo)志選擇需要進(jìn)入的 APP 程序 (同理:APP2下次更新程序時(shí),先擦除 APP1 的無(wú)效程序,然后將接收的程序?qū)懭?APP1,接收完成并互轉(zhuǎn)有效標(biāo)志)。

| booloader Flash | app1 Flash | app2 Flash |


App 程序集成通信協(xié)議棧

以下方案是由 app 集成通信協(xié)議棧,編程操作在 bootloader 程序中和 APP 程序中基本都涉及;且以下方案至少需要?jiǎng)澐秩龎K區(qū)域。

優(yōu)點(diǎn):bootloader 程序 Flash 占用空間小。
缺點(diǎn):在沒(méi)有 APP 程序的情況下無(wú)法實(shí)現(xiàn)更新,且 Flash 容量需求大;由于 APP 程序迭代快,可能容易出現(xiàn) bug,無(wú)法對(duì)程序進(jìn)行更新。

方案四:更新程序時(shí),app 開(kāi)始接收新的 APP 程序并直接寫(xiě)入劃分好的空白 Flash 中,等全部接收完成并校驗(yàn)成功時(shí),通過(guò)復(fù)位或者跳轉(zhuǎn)的方式進(jìn)入 bootloader 中,由 bootloader 開(kāi)始擦除當(dāng)前 APP 程序(可能有朋友要問(wèn),為啥不能在 app 程序中實(shí)現(xiàn)呢?請(qǐng)問(wèn)你能踩著左右腳上天嗎?。?,并將接收完成的新 APP 程序?qū)懭耄?span style="color:#FF0000;">此方案 APP 和 bootloader 均涉及編程操作)。

| booloader Flash | app Flash | 空白Flash |

方案五:更新程序時(shí),app 開(kāi)始接收新的 APP 程序并直接寫(xiě)入已擦除的 APP2 中,等全部接收完成并校驗(yàn)成功時(shí),將 APP1 程序有效標(biāo)志清除,設(shè)置 APP2 程序有效標(biāo)志,復(fù)位后,bootloader 根據(jù)有效標(biāo)志選擇需要進(jìn)入的 APP 程序 (同理:APP2下次更新程序時(shí),先擦除 APP1 的無(wú)效程序,然后將接收的程序?qū)懭?APP1,接收完成并互轉(zhuǎn)有效標(biāo)志)(此方案只有 APP 涉及編程操作

| booloader Flash | app1 Flash | app2 Flash |

總結(jié)

其中:
方案三和方案五由于程序運(yùn)行地址不同,因此需要對(duì) APP 分別進(jìn)行編譯鏈接,可應(yīng)用性大打折扣。
OTA 升級(jí)由于采用的無(wú)線升級(jí)方式,因此相對(duì)于“直接線控升級(jí)”來(lái)說(shuō)斷連的可能性較高,出錯(cuò)的情況也較高,不適合 MCU 每次接收完一幀數(shù)據(jù)后立馬寫(xiě)入。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉