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