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