概述
OTA(Over-The-Air Technology)即空中下載技術(shù),利用OTA技術(shù)可以在不接觸(接線)的情況下對芯片程序進(jìn)行升級。AT32WB415的OTA是通過藍(lán)牙的方式實現(xiàn)的,利用芯片中的藍(lán)牙模塊(BLE)接收上位機發(fā)送的升級命令和程序代碼。OTA分為兩個部分,用戶可以選擇OTA升級BLE模塊APP,也可以選擇OTA升級MCU端。對于MCU端的升級參考了IAP功能的實現(xiàn),需要在設(shè)計固件程序時編寫兩個項目代碼,第一個項目程序不執(zhí)行正常的功能操作,而只是通過串口接收程序或數(shù)據(jù),執(zhí)行對第二部分代碼的更新;第二個項目代碼才是真正的功能代碼。
AT32WB415 OTA程序設(shè)計
地址分布
表1. 地址分布
注:mcu bootloader區(qū)域最后一個扇區(qū),用于存放防止升級過程掉電的flag,用戶編譯修改bootloader時,要保證不覆蓋flag的地址。
上位機軟件設(shè)計
為了方便用戶開發(fā),本應(yīng)用指南提供了可用于AT32WB415升級的上位機OTA軟件,其主要包括掃描、連接藍(lán)牙設(shè)備,獲取設(shè)備信息,打開并下載OTA文件等。軟件流程如下:1) 掃描并連接設(shè)備2) 調(diào)用FFC0服務(wù)中的FFC1特征,發(fā)送0x00,等待BLE端回復(fù)設(shè)備信息數(shù)據(jù),共10bytes,包括2 bytes app版本號,2 bytes app長度,4 bytes uid,2 bytes rom版本號;3) 選擇下載的bin文件,再次調(diào)用FFC1特征,發(fā)送bin文件頭部信息,共16 bytes,等待BLE端接收該信息,并返回2 bytes數(shù)據(jù),返回值為0x0000;4) 調(diào)用FFC2特征,開始發(fā)送bin文件,每次發(fā)送18 bytes,包括2 bytes block number和16 byts bin文件數(shù)據(jù),當(dāng)block number等于bin文件頭部信息中的bit[6:7]/4時,傳輸完成5) 調(diào)用FFC1特征發(fā)送0x5AA5,請求BLE返回OTA結(jié)果,如果返回0,則持續(xù)發(fā)送0x5AA5,如果返回非0值,則發(fā)送0xA55A提示BLE進(jìn)行復(fù)位。BLE端返回值含義:— 0x0000:正在進(jìn)行OTA— 0xFFF0:成功— 0xFFF1:錯誤— 0xFFF2:超時— 其他值:返回值錯誤程序執(zhí)行整體流程框圖如下:圖1. 上位機程序執(zhí)行流程
BEE模塊軟件設(shè)計
對于BLE模塊部分的軟件設(shè)計,boot&stack code部分無需修改,軟件設(shè)計都在app code。主要包含了以下內(nèi)容:1) 接收上位機藍(lán)牙數(shù)據(jù)2) 對藍(lán)牙接收到的bin文件進(jìn)行分析,在bin檔頭部包含了app版本、rom版本、uid等內(nèi)容3) 判斷app版本號,app_version>0x8000,則用于MCUapp升級,否則用于BLE模塊app升級4) MCU app升級時,先發(fā)送0xa55a5aa5到MCU,提示其復(fù)位芯片,進(jìn)入bootloader程序,然后通過串口將接收到的藍(lán)牙數(shù)據(jù)發(fā)送給MCU5) BLE模塊app升級時,直接將接收到的數(shù)據(jù)寫入flash中OTA數(shù)據(jù)存放區(qū)域6) 等待發(fā)送完成,復(fù)位BLE模塊程序執(zhí)行整體流程框圖如下:圖2. BLE程序執(zhí)行流程
MCU軟件設(shè)計
MCU軟件設(shè)計分為Bootloader和App兩部分,應(yīng)用在App中執(zhí)行,升級過程在bootloader中執(zhí)行。Bootloader功能包含:1) 讀取flash中的標(biāo)志判斷是否需要更新app2)如果無需更新則直接跳轉(zhuǎn)app執(zhí)行,需要更新則繼續(xù)執(zhí)行下面的操作3) 接收BLE模塊發(fā)送的串口數(shù)據(jù),將數(shù)據(jù)保存至mcu ota code區(qū)域4) 數(shù)據(jù)接收完成后將OTA數(shù)據(jù)搬運至mcu app code區(qū)域并跳轉(zhuǎn)至app執(zhí)行App功能包含:1) 清除flash中的OTA更新標(biāo)志2) 運行app功能代碼(IO翻轉(zhuǎn))3) 串口持續(xù)監(jiān)測是否收到OTA升級命令(0xa55a5aa5)程序執(zhí)行整體流程框圖如下:圖3. MCU程序執(zhí)行流程
一、bootloader project設(shè)置
1) Keil設(shè)置圖4. bootloader project中address 4在Keil設(shè)置2) bootloader源程序修改Iap.h文件中圖5. bootloader project中address 5在程序中設(shè)置
二、app project設(shè)置
IAP demo提供了2個app程序供測試用,皆以address 5(0x800 4000)為起始地址。app1 LED3閃爍,app2 LED4閃爍。以app2為例,設(shè)計步驟如下:1) Keil工程設(shè)置圖6. app project中address 5在Keil設(shè)置2) app1源程序設(shè)置圖7. app project向量表偏移在程序中設(shè)置3) 編輯generate_app.bat批處理文件文件中的“-v 0x8002”為app程序版本號,可配置為0x8000-0Xffff范圍內(nèi)的任意值。4) 編譯生成bin文件通過User選項卡,設(shè)置編譯后調(diào)用fromelf.exe,根據(jù)axf文件生成bin文件,然后設(shè)置調(diào)用encrypt_app.bat批處理文件,生成OTA升級所需的bin文件。
通過以上3個步驟,我們就可以得到一個APP程序,將bin文件添加到OTA上位機軟件即可實現(xiàn)app程序的更新。
如果在設(shè)計app code過程中需要對app project進(jìn)行單獨調(diào)試,請按照以下操作a)先下載bootloader工程b)再調(diào)試app工程PS. “通過PC上位機OTA升級”及”通過Android APP OTA升級”案例可點擊文末”閱讀原文”查看AN0144關(guān)于雅特力雅特力科技于2016年成立,是一家致力于推動全球市場32位微控制器(MCU)創(chuàng)新趨勢的芯片設(shè)計公司,專注于ARM Cortex-M4/M0+的32位微控制器研發(fā)與創(chuàng)新,全系列采用55nm先進(jìn)工藝及ARM Cortex-M4高效能或M0+低功耗內(nèi)核,締造M4業(yè)界最高主頻288MHz運算效能,并支持工業(yè)級別芯片工作溫度范圍(-40°~105°)。雅特力目前已累積相當(dāng)多元的終端產(chǎn)品成功案例:如微型打印機、掃地機、光流無人機、熱成像儀、激光雷達(dá)、工業(yè)縫紉機、伺服驅(qū)控、電競周邊市場、斷路器、ADAS、T-BOX、數(shù)字電源、電動工具等終端設(shè)備應(yīng)用,廣泛地覆蓋5G、物聯(lián)網(wǎng)、消費、商務(wù)及工控等領(lǐng)域。
-
OTA
+關(guān)注
關(guān)注
7文章
582瀏覽量
35240 -
藍(lán)牙模塊
+關(guān)注
關(guān)注
30文章
575瀏覽量
55743 -
雅特力
+關(guān)注
關(guān)注
0文章
158瀏覽量
8037
發(fā)布評論請先 登錄
相關(guān)推薦
評論