《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 基于GPRS通信的MCU固件遠(yuǎn)程更新技術(shù)的實現(xiàn)
基于GPRS通信的MCU固件遠(yuǎn)程更新技術(shù)的實現(xiàn)
2016年微型機與應(yīng)用第14期
唐洪富,,王肖楠
(華北計算機系統(tǒng)工程研究所,,北京 100083)
摘要: 在闡述STM32F103VET6微處理器的存儲空間和在應(yīng)用中編程(IAP)技術(shù)原理的基礎(chǔ)上,以GPRS通信的方式,,實現(xiàn)了MCU固件在線遠(yuǎn)程更新,,提高了固件維護(hù)的方便性,縮短了終端系統(tǒng)的開發(fā)周期,,降低了成本,。
關(guān)鍵詞: STM32F103 GPRS IAP 固件更新
Abstract:
Key words :

  唐洪富,王肖楠

 ?。ㄈA北計算機系統(tǒng)工程研究所,,北京 100083)

  摘要:在闡述STM32F103VET6微處理器的存儲空間和在應(yīng)用中編程(IAP)技術(shù)原理的基礎(chǔ)上,以GPRS通信的方式,,實現(xiàn)了MCU固件在線遠(yuǎn)程更新,,提高了固件維護(hù)的方便性,縮短了終端系統(tǒng)的開發(fā)周期,,降低了成本,。

  關(guān)鍵詞:STM32F103;GPRS,;IAP,;固件更新

0引言

  在以物聯(lián)網(wǎng)、大數(shù)據(jù),、云計算為代表的信息科技爆炸式發(fā)展的今天,,嵌入式產(chǎn)品越來越豐富,并且版本的升級迭代速度非???。但是通常的嵌入式產(chǎn)品都是用燒寫器將代碼燒寫到嵌入式主控制器或者其他存儲芯片中,在產(chǎn)品交付給用戶以后,,如果需要對軟件代碼進(jìn)行升級,,或者生產(chǎn)廠家想要對產(chǎn)品進(jìn)行修改,就必須到現(xiàn)場重新燒寫程序。這樣,,從時間到成本都造成了很大的開銷,,非常不靈活。因此遠(yuǎn)程更新MCU的固件就成為解決這一問題的有效手段,。本文以STM32F103VET6 為平臺,,使用GPRS通信方式和IAP 技術(shù)實現(xiàn)MCU固件的遠(yuǎn)程更新。該技術(shù)對于具備GPRS通信的嵌入式產(chǎn)品有很好的幫助,,對3G或者4G的嵌入式產(chǎn)品也有借鑒的意義,。

1系統(tǒng)的硬件設(shè)計

001.jpg


  本系統(tǒng)的結(jié)構(gòu)如圖1所示。MCU使用芯片STM32F103VET6,,該處理器是意法半導(dǎo)體(ST)公司發(fā)布的基于CortexM3內(nèi)核的增強型系列處理器,工作頻率最高達(dá)到72 MHz,,帶有片內(nèi)RAM,、片內(nèi)Flash和豐富的外設(shè)。GPRS模塊的型號是G510,。MCU通過串口,,使用AT命令與G510模塊進(jìn)行數(shù)據(jù)交互。USB轉(zhuǎn)串口模塊作為PC與MCU的數(shù)據(jù)交互的有效手段,,通過打印數(shù)據(jù)信息就可以知道MCU的工作狀態(tài),。電源模塊產(chǎn)生兩種電壓,包括為MCU和USB模塊供電的3.3 V電壓和為GPRS模塊供電的4.0 V電壓,。

2MCU的地址

002.jpg

  STM32F103VET6的內(nèi)核是CortexM3,,它的存儲系統(tǒng)采用統(tǒng)一尋址方式,程序存儲器,、數(shù)據(jù)存儲器,、寄存器和輸入輸出接口被組織在同一個4 GB的線性地址空間內(nèi)。存儲空間被分成8個主要塊,,每個塊為512 MB,。以STM32F103VET6處理器為例, 圖2為代碼塊和片內(nèi)SRAM的地址映射圖,。STM32F103VET6有512 KB的Flash存儲空間,,地址從0x08000000至0x0807ffff;有64 KB的SRAM,地址從0x20000000到0x2000ffff,。

  通過設(shè)置BOOT[1:0]引腳值為00,,使STM32F103 VET6上電后從Flash的0x08000000地址處開始執(zhí)行代碼。

3IAP技術(shù)的實現(xiàn)

  3.1IAP技術(shù)原理[1]

  在應(yīng)用編程(IAP)技術(shù)是指MCU在執(zhí)行用戶程序的過程中對片內(nèi)Flash 的部分區(qū)域進(jìn)行擦寫,,把真正的用戶二進(jìn)制代碼燒寫到Flash中,。在這里,IAP的程序要實現(xiàn)兩個功能: 一是通過GPRS通信接收已經(jīng)編譯鏈接好的二進(jìn)制的應(yīng)用代碼到內(nèi)存;二是將應(yīng)用代碼燒寫到片內(nèi)Flash 中,。系統(tǒng)復(fù)位后,,MCU首先執(zhí)行IAP和GPRS通信程序,此段代碼必須使用硬件燒寫器,,比如JLink燒寫到MCU中,;等待MCU接收并燒寫好真正的功能代碼后,跳轉(zhuǎn)至此段代碼開始執(zhí)行用戶程序,。這兩段代碼都是燒寫在片內(nèi)Flash中,,必須保證兩段代碼的存放區(qū)域不能重疊,否則會出現(xiàn)程序覆蓋,,將無法正確執(zhí)行用戶程序,。通過設(shè)置標(biāo)志位,并且存儲到Flash中,,來判斷上電后執(zhí)行的是IAP程序還是用戶程序,。

  3.2燒寫文件格式

  IAP驅(qū)動和GPRS通信程序是用MDK編譯器生成的HEX文件,通過JTAG燒寫到STM32F103VET6的Flash中,,起始地址是0x08000000,。由于MDK產(chǎn)生的是HEX文件,因此需要使用轉(zhuǎn)換工具將用于通過GPRS通信方式從服務(wù)器端下發(fā)到終端的固件代碼由HEX文件格式轉(zhuǎn)換成BIN文件格式,。終端將新的固件代碼寫入到Flash中,,起始地址設(shè)為0x08020000。

  3.3軟件實現(xiàn)

  由于要更新的固件的存儲地址是0x08020000,,因此需要調(diào)整新固件的中斷向量表的地址:NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x08020000)[2],。使用起始地址為0x0807f800最后一頁Flash存儲字符型變量Update_Flag,該變量的值保存了固件更新的狀態(tài),。當(dāng)Update_Flag等于0時,,代表無應(yīng)用程序,MCU執(zhí)行IAP驅(qū)動和GPRS通信程序,;當(dāng)Update_Flag等于1時,,代表應(yīng)用程序是已經(jīng)寫入Flash中的有效代碼,則MCU執(zhí)行新的固件程序,。系統(tǒng)的軟件流程如圖3所示,。 

  連接的流程圖STM32F103VET6與GPRS模塊的數(shù)據(jù)交互[3]通過串口來完成,,終端與服務(wù)器的連接建立的過程如圖4所示,。建立連接后,MCU可以發(fā)送報文A1向服務(wù)器請求新固件,。服務(wù)器收到此報文后,,把要發(fā)送的BIN格式的新固件按照表1所示的報文格式發(fā)送至終端,。幀長度是包含從類型到校驗位的總長度。這里考慮到G510傳輸每幀數(shù)據(jù)的最長字節(jié)數(shù)和Flash寫操作的方便性,,設(shè)定數(shù)據(jù)區(qū)的最大長度為1 024 B,。服務(wù)器端打開BIN格式的文件,并且按照表1所示的幀格式把數(shù)據(jù)裝載成幀A2,,然后發(fā)送,。用幀計數(shù)來避免因為網(wǎng)絡(luò)擁堵等問題造成的數(shù)據(jù)傳輸錯誤。采用應(yīng)答式的交互方式,,終端每次收到一條固件幀,,就以正確幀R1或者錯誤幀R2回應(yīng)。R1和R2中包含幀計數(shù)和服務(wù)器端設(shè)置延時,,發(fā)送完一幀數(shù)據(jù)后,,延時5 s,在這段時間內(nèi),,沒有收到回應(yīng)的數(shù)據(jù)則重發(fā),。服務(wù)器發(fā)送完最后一幀固件數(shù)據(jù),并且收到正確的回答后,,再發(fā)送一幀結(jié)束數(shù)據(jù)A3,使終端知道固件已經(jīng)全部發(fā)送完畢,。具體的服務(wù)器和終端的數(shù)據(jù)傳輸?shù)牧鞒虉D如圖5所示,。

006.jpg

  先使用JTAG把IAP驅(qū)動和GPRS通信的代碼寫入到Flash的起始地址0x08000000處,然后復(fù)位終端,,等待終端與服務(wù)器建立好連接,。服務(wù)器使用圖6所示的客戶端界面形成規(guī)范的報文,然后發(fā)送到終端,,實現(xiàn)終端固件的遠(yuǎn)程更新,。

005.jpg

007.jpg

4結(jié)論

  通過實驗,用戶代碼被正常執(zhí)行,,說明遠(yuǎn)程更新已經(jīng)正常實現(xiàn),。因此,IAP 技術(shù)為遠(yuǎn)程更新用戶代碼提供了極大的方便,,不僅能夠提高產(chǎn)品性能,,增強產(chǎn)品的功能,而且大大降低了企業(yè)產(chǎn)品運營和維護(hù)的成本,,是一門實用性很強的技術(shù),,在將來的3G、4G等嵌入式產(chǎn)品中將會被廣泛地使用,。

參考文獻(xiàn)

 ?。?] 曹欲曉,韓冬,徐金寶.一種基于CPUID 和AES 算法的STM32 固件升級方案[J].電子技術(shù)應(yīng)用,,2015,,41(3):2830.

  [2] 陳峰峰,,胡毅,,許艷.STM32F10x 在應(yīng)用中編程的實現(xiàn)方法[J].技術(shù)縱橫,2009(9):2531.

 ?。?] Fibocom Wireless Inc. G5family at commands user manual[Z].2013.


此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。