連接的流程圖STM32F103VET6與GPRS模塊的數(shù)據(jù)交互通過串口來完成,終端與服務(wù)器的連接建立的過程如圖4所示。建立連接后,MCU可以發(fā)送報(bào)文A1向服務(wù)器請(qǐng)求新固件。服務(wù)器收到此報(bào)文后,把要發(fā)送的BIN格式的新固件按照表1所示的報(bào)文格式發(fā)送至終端。幀長度是包含從類型到校驗(yàn)位的總長度。這里考慮到G510傳輸每幀數(shù)據(jù)的最長字節(jié)數(shù)和Flash寫操作的方便性,設(shè)定數(shù)據(jù)區(qū)的最大長度為1024 B。服務(wù)器端打開BIN格式的文件,并且按照表1所示的幀格式把數(shù)據(jù)裝載成幀A2,然后發(fā)送。用幀計(jì)數(shù)來避免因?yàn)榫W(wǎng)絡(luò)擁堵等問題造成的數(shù)據(jù)傳輸錯(cuò)誤。采用應(yīng)答式的交互方式,終端每次收到一條固件幀,就以正確幀R1或者錯(cuò)誤幀R2回應(yīng)。R1和R2中包含幀計(jì)數(shù)和服務(wù)器端設(shè)置延時(shí),發(fā)送完一幀數(shù)據(jù)后,延時(shí)5 s,在這段時(shí)間內(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所示。
先使用JTAG把IAP驅(qū)動(dòng)和GPRS通信的代碼寫入到Flash的起始地址008000000處,然后復(fù)位終端,等待終端與服務(wù)器建立好連接。服務(wù)器使用圖6所示的客戶端界面形成規(guī)范的報(bào)文,然后發(fā)送到終端,實(shí)現(xiàn)終端固件的遠(yuǎn)程更新。
4結(jié)論
通過實(shí)驗(yàn),用戶代碼被正常執(zhí)行,說明遠(yuǎn)程更新已經(jīng)正常實(shí)現(xiàn)。因此,IAP 技術(shù)為遠(yuǎn)程更新用戶代碼提供了極大的方便,不僅能夠提高產(chǎn)品性能,增強(qiáng)產(chǎn)品的功能,而且大大降低了企業(yè)產(chǎn)品運(yùn)營和維護(hù)的成本,是一門實(shí)用性很強(qiáng)的技術(shù),在將來的3G、4G等嵌入式產(chǎn)品中將會(huì)被廣泛地使用。