前言
最近拿到了一塊APM32F103VC的MINI開發(fā)板,在學(xué)習(xí)了一段時(shí)間后發(fā)現(xiàn)其有非常豐富的外設(shè)資源,主頻能達(dá)到96Mhz。最近在項(xiàng)目中使用到了IAP(In Application Programming)功能,特來評估一下APM32F103的IAP實(shí)現(xiàn)方式。
在應(yīng)用編程IAP(In-Application Programming)是應(yīng)用在Flash程序存儲器的一種編程模式。它可以在應(yīng)用程序正常運(yùn)行的情況下,通過調(diào)用特定的IAP程序?qū)α硗庖欢纬绦騀lash空間進(jìn)行讀/寫操作,甚至可以控制對某段、某頁甚至某個(gè)字節(jié)的讀/寫操作,這為數(shù)據(jù)存儲和固件的現(xiàn)場升級帶來了更大的靈活性。
話接上回,我們學(xué)習(xí)了如何進(jìn)行對目標(biāo)Flash進(jìn)行編程后,基本已經(jīng)完成了IAP的知識儲備,隨時(shí)可以完成IAP功能。打個(gè)比方,會Flash編程,就是會向一個(gè)池塘里面倒水了,但是現(xiàn)在有一個(gè)問題,我們往池塘倒的水從哪里來?即我們的程序數(shù)據(jù)從那里給到我們。
那我們本章節(jié)就我們程序的來源以及處理的一些方式進(jìn)行一起探討。
1 “水”的來源
我們的固件可以保存在云端,也可以保存在我們的PC上。這個(gè)主要取決于我們的應(yīng)用場景。若我們的產(chǎn)品主要在客戶的手上,為了考慮客戶的使用便捷性,將固件保存在云端,然后在一個(gè)合適的時(shí)間推送至我們的產(chǎn)品進(jìn)行升級,這是一種方式。若考慮到產(chǎn)品的穩(wěn)定性,那我們可以要求客戶一定要在特定的場景下進(jìn)行固件升級,如需要接入升級的主機(jī)設(shè)備(如PC),才能進(jìn)行固件升級。

2 承載“水”的“路徑”
既然我們決定了我們程序的下發(fā)的源頭,我們一般也會選擇使用那種方式了傳輸我們的固件數(shù)據(jù)。就像運(yùn)水到我們的池塘,是用空運(yùn)還陸運(yùn)還是海運(yùn)等方式。如遠(yuǎn)程升級的方式可以選擇以太網(wǎng)、WIFI、藍(lán)牙等方式。若使用有線傳輸?shù)姆绞轿覀兛梢赃x擇USART、I2C、SPI、USB等。
升級方式的選擇也受限于我們的主控MCU,如APM32F103VCT6就沒有WIFI、藍(lán)牙等功能,所以我們可以選擇USART、I2C、SPI、USB等,若我們選擇APM32F407/107我們也可以選擇使用以太網(wǎng)。
3 運(yùn)輸“水”的方式
就像運(yùn)水到我們池塘,我們選擇使用陸運(yùn)的方式后,依舊可以繼續(xù)選擇使用的是小汽車運(yùn),還是貨車運(yùn)。不同的運(yùn)輸方式會有不一樣的要求,這就是我們選擇傳輸固件的“協(xié)議”。
就比如我們選擇使用USART的方式進(jìn)行固件升級,那我們也可以選擇使用Xmodem協(xié)議,還是Ymodem,或者是我們自創(chuàng)的協(xié)議。
而這個(gè)協(xié)議是保證我們固件傳輸數(shù)據(jù)的準(zhǔn)確的。怎么說呢?比如帶校驗(yàn)碼、環(huán)回重復(fù)發(fā)送等功能。
4 小結(jié)
說了那么多,總結(jié)下來就是我們在IAP升級過程中,升級使用的通信接口、通信協(xié)議也是我們需要關(guān)注的。一般而言,通信的接口限制我們的應(yīng)用場景,通信協(xié)議是保證我們在IAP升級過程中固件數(shù)據(jù)準(zhǔn)確的有力保證。
審核編輯 :李倩
-
編程
+關(guān)注
關(guān)注
90文章
3724瀏覽量
97458 -
開發(fā)板
+關(guān)注
關(guān)注
26文章
6433瀏覽量
121217 -
IAP
+關(guān)注
關(guān)注
2文章
169瀏覽量
26191
原文標(biāo)題:APM32芯得 EP.14 | APM32F103_IAP的簡單實(shí)現(xiàn)_固件傳輸
文章出處:【微信號:geehysemi,微信公眾號:Geehy極海半導(dǎo)體】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
國產(chǎn)替代STM32F103CBT6的32位MCU單片機(jī)參考方案
極海APM32F427 MCU在RT-Thread系統(tǒng)上使用LwIP網(wǎng)絡(luò)功能
基于極海APM32F4的Azure RTOS ThreadX移植過程分享
極海APM32F427如何實(shí)現(xiàn)自定義USB HID設(shè)備與PC進(jìn)行通信
基于納芯微實(shí)時(shí)控制MCU NS800RT5039的IAP固件升級指南(2)
基于納芯微實(shí)時(shí)控制MCU NS800RT5039的IAP固件升級指南(1)
在CW32F030的IAP應(yīng)用介紹
極海APM32F427移植CherryUSB實(shí)現(xiàn)自定義USB HID設(shè)備
如何在CW32F030上實(shí)現(xiàn)IAP功能實(shí)現(xiàn)遠(yuǎn)程升級?
使用TFTP實(shí)現(xiàn)IAP的方法
AT32 MCU如何使用IAP
AT32 IAP using the USART
極海APM32F411微控制器硬件FPU使用指南
基于極海APM32E103 MCU的CoreMark測試方法
極海APM32F407IG-Tiny開發(fā)板的DAPLINK固件更新方法
APM32F103_IAP的簡單實(shí)現(xiàn)_固件傳輸
評論