ARM和GPRS相配合的軟件無線升級系統(tǒng)
1 軟件無線升級系統(tǒng)方案
基于無線通信的遠(yuǎn)程監(jiān)控系統(tǒng)(如遠(yuǎn)程電網(wǎng)質(zhì)量監(jiān)控系統(tǒng)、水情測報(bào)系統(tǒng)和城市路燈監(jiān)控系統(tǒng)等)應(yīng)用越來越廣泛,而在實(shí)際使用過程中,由于需求的變化,經(jīng)常要對其終端設(shè)備軟件進(jìn)行修改或升級。一般情況下,無線監(jiān)控系統(tǒng)與終端距離較遠(yuǎn),終端分散且工作環(huán)境較差。如果維護(hù)人員到現(xiàn)場進(jìn)行軟件升級,不但維護(hù)費(fèi)用很高,而且還可能使終端設(shè)備長時(shí)間不能正常工作。
為解決這一難題,本文提出一種利用ST公司的STR710FZ2T6作為終端微控制器,融合IAP(In Application Programming,在應(yīng)用編程)技術(shù)和GPRS無線網(wǎng)絡(luò)通信技術(shù)的軟件升級系統(tǒng)方案。軟件無線升級系統(tǒng)整體框圖如圖1所示。
圖1 軟件無線升級系統(tǒng)整體框圖
2 系統(tǒng)硬件和軟件設(shè)計(jì)
2.1 硬件設(shè)計(jì)
本文選用的是ST公司的一款工業(yè)級微控制器STR710FZ2T6。它是基于ARM7TDMI的32位RISC CPU,擁有豐富的外設(shè)和增強(qiáng)的I/O功能,并提供高達(dá)33 MHz的直接存取速度以及50 MHz零等待狀態(tài)的序列閃存;具有(256 KB+16 KB) Flash 和64 KB SRAM,內(nèi)部Flash可重復(fù)擦寫10萬次,數(shù)據(jù)保持20年,支持自編程;外部存儲器接口(EMI)可支持4個SRAM、Flash、ROM等存儲類型;芯片有多種boot方式。另外,STR710FZ2T6能夠通過運(yùn)行在Flash中的程序來對自身的Flash進(jìn)行更新。這個功能使其能夠通過CAN、UART、USB、無線通信等接口將程序下載到自身的Flash中。
系統(tǒng)結(jié)構(gòu)如圖2所示。根據(jù)微控制器STR710FZ2T6的特點(diǎn)以及無線監(jiān)控終端的功能要求,硬件設(shè)計(jì)包括由電源電路、復(fù)位電路、JTAG接口電路、晶振電路組成的芯片工作最小系統(tǒng),以及在最小系統(tǒng)上擴(kuò)展的串行接口模塊、外存儲器模塊、數(shù)據(jù)顯示模塊、數(shù)據(jù)采集模塊和SIM300 GSM/GPRS通信模塊。其中,擴(kuò)展的外存儲器包括SST公司的具有16位數(shù)據(jù)寬度的Flash存儲器SST39VF1601和ISSI公司的SRAM存儲器IS61LV25616AL。
圖2 軟件無線升級系統(tǒng)結(jié)構(gòu)框圖
2.2 終端軟件設(shè)計(jì)
系統(tǒng)終端軟件的設(shè)計(jì)包括終端引導(dǎo)程序設(shè)計(jì)和終端應(yīng)用程序的設(shè)計(jì)。引導(dǎo)程序和應(yīng)用程序在STR710FZ2T6中所存放的位置不同。將啟動模式配置為從片內(nèi)Flash引導(dǎo)之后,系統(tǒng)終端微控制器將復(fù)位,啟動之后先執(zhí)行引導(dǎo)程序。引導(dǎo)程序在執(zhí)行過程中決定是否啟動IAP升級程序;應(yīng)用程序?qū)崿F(xiàn)終端的各種功能,如命令和數(shù)據(jù)的接收、發(fā)送,以及新版本應(yīng)用程序升級包的下載。
2.2.1 終端引導(dǎo)程序設(shè)計(jì)
系統(tǒng)設(shè)計(jì)時(shí),終端引導(dǎo)程序通過JTAG接口燒寫到STR710FZ2T6的Flash扇區(qū)起始位置(0x40000000)處。整個引導(dǎo)程序占用Flash的前兩個扇區(qū),通過啟動模式的選擇,將這塊Flash映射到0x00000000,保證系統(tǒng)上電后自動運(yùn)行引導(dǎo)程序。終端重新啟動時(shí),STR710FZ2T6從0x40000000地址開始讀取指令并執(zhí)行。
經(jīng)過實(shí)驗(yàn)證明:將IAP升級程序存放在用戶引導(dǎo)部分是非常合理的,能夠避免由于應(yīng)用程序升級失敗而造成的系統(tǒng)崩潰。由于終端引導(dǎo)程序在產(chǎn)品出廠前固化,若Flash編程失敗,微控制器將重新啟動,IAP程序利用存儲器SST39VF1601中保存的最新版本的應(yīng)用程序,重新對Flash進(jìn)行編程。由于引導(dǎo)程序有多次編程Flash扇區(qū)的能力,系統(tǒng)應(yīng)用程序代碼的完整性以及應(yīng)用程序升級的可靠性才得以保證。引導(dǎo)程序流程如圖3所示。
圖3 終端引導(dǎo)程序流程 存儲器相關(guān)文章:存儲器原理
終端引導(dǎo)程序的主要函數(shù)說明:
?、?main()主函數(shù)。用于初始化UART接口,PLL設(shè)定等,根據(jù)升級標(biāo)志和新版本號判斷是否繼續(xù)執(zhí)行IAP。若升級標(biāo)志置位,且新版本號大于當(dāng)前的版本號,則啟動IAP升級程序,否則運(yùn)行終端應(yīng)用程序。
評論