您現(xiàn)在的位置:
中國傳動網(wǎng)
>
技術(shù)頻道
>
應(yīng)用方案
>
基于ARM和GPRS的嵌入式遠(yuǎn)程IAP在配變監(jiān)控終端上的實現(xiàn)
時間:2006-12-14 11:39:00來源:wangsl
IAP(In-Application Programming)是應(yīng)用在Flash程序存儲器的一種編程模式。即在應(yīng)用程序控制下,對程序某段存儲空間進行讀取、擦除、寫入操作。與ISP操作非常相似,具有在線編程功能。且克服了ISP不足之處,它可以在應(yīng)用程序正常運行的情況下對另外一段程序Flash進行讀寫操作,甚至可以控制對某段、某頁、甚至某個字節(jié)的讀寫操作。這為數(shù)據(jù)存儲和固件的現(xiàn)場升級帶來了極大的靈活性。
3 IAP功能的硬件設(shè)計
由以上分析可知,使用IAP對Flash存儲器進行編程是合適的方案。下面介紹一種基于GPRS的遠(yuǎn)程IAP系統(tǒng)方案,系統(tǒng)框圖如圖1所示。
AT45DB041B為4MB串行Flash存儲器,兼有ROM的掉電數(shù)據(jù)保存和RAM的讀寫速度,最快支持20MHz的時鐘頻率,擦寫次數(shù)達(dá)10000次,內(nèi)配置了兩個264BSRAM緩沖器,使得對主存儲體的編程可以連續(xù)進行,省去編程等待時間;AT45DB041B采用CASON-8封裝,支持2.5~3.6V低電壓,操作功耗低,支持模式0和3的SPI總線接口,與MCU接口簡單,穩(wěn)定可靠。非常適用于數(shù)字語音、圖像、程序代碼和數(shù)據(jù)的存儲應(yīng)用中。
GPRS模塊使用Siemens公司生產(chǎn)的MC35i,雙頻GPRS/GSM模塊(EGSM900/1800MHz或EGSM900/1900MHz),內(nèi)置TCP/IP,與標(biāo)準(zhǔn)AT指令完全兼容;其設(shè)計開發(fā)符合ETSI GSM Phase2+標(biāo)準(zhǔn)。
4 IAP功能的軟件設(shè)計
4.1 IAP編程接口
LPC2114的IAP程序位于Boot扇區(qū),復(fù)位后整個Boot扇區(qū)被映射到存儲地址0x7FFFE000~0x7FFFFFFF處,而IAP的入口地址為0x7FFFFFF0,程序為Thumb代碼。IAP編程命令使用RAM的最高端32B,所以應(yīng)用程序應(yīng)保留這部分RAM。在使用IAP擦除/編程操作過程中,片內(nèi)Flash存儲器不可訪問。當(dāng)用戶應(yīng)用程序運行時,用戶Flash區(qū)域的中斷向量有效,所以在調(diào)用Flash擦除/寫IAP之前,用戶應(yīng)當(dāng)禁止中斷或確保用戶中斷向量在RAM中有效和中斷處理程序位于RAM中。IAP代碼不使用或禁止中斷。
4.2 IAP編程C語言實現(xiàn)
對于在應(yīng)用編程,LPC2114是通過寄存器RO中的字指針指向RAM存儲單元包含的命令代碼和參數(shù)來調(diào)用IAP程序。IAP命令的結(jié)果返回到寄存器R1所指向的RAM空間。
LPC2114的IAP調(diào)用可使用如下C語言代碼調(diào)用:
(1)定義IAP程序入口地址。
# define IAP_ LOCATION 0x7FFFFFF1
(2)定義數(shù)據(jù)結(jié)構(gòu)來傳遞IAP命令表和結(jié)果給IAP程序。
unsigned long Command[5];//輸入?yún)?shù)最多為5個
unsigned long Result[2];//輸出參數(shù)最多為2個
(3)定義函數(shù)類型指針,函數(shù)包括兩個參數(shù),無返回值。
typedef void (*IAP) (unsigned int[ ],unsigned int[ ]);
IAP iap_entry;//定義函數(shù)指針
(4)設(shè)置函數(shù)指針。
iap_entry = (IAP)IAp_ LOCATION;
(5)使用下面的語句來調(diào)用IAP。
iap_entry (command, result);
本系統(tǒng)是基于LPC2114工程模板上進行移植,在ASD1.2嵌入式軟件開發(fā)平臺上用C語言直接調(diào)用IAP程序代碼實現(xiàn)IAP編程,IAP的命令碼、狀態(tài)碼和命令詳解以及IAP功能的詳細(xì)應(yīng)用見文獻(xiàn)[2]。
5 LPC2114的IAP遠(yuǎn)程升級在用電現(xiàn)場監(jiān)控終端的應(yīng)用
終端軟件系統(tǒng)的設(shè)計包括用戶引導(dǎo)程序設(shè)計(與Boot裝載程序有區(qū)別,前者由用戶設(shè)計,后者由芯片生產(chǎn)商設(shè)計并固化)和應(yīng)用程序的設(shè)計。它們在LPC2114中的入口地址不同,終端正常復(fù)位后,則首先執(zhí)行用戶引導(dǎo)程序,由用戶引導(dǎo)程序決定是否啟動IAP升級程序;應(yīng)用程序完成終端的各種功能,包括新版本應(yīng)用程序升級包的下載。
5.1 終端用戶引導(dǎo)程序設(shè)計
終端用戶引導(dǎo)程序是基于文件系統(tǒng)的思想來設(shè)計的,用戶引導(dǎo)程序設(shè)計成單獨的程序,裝載于LPC2114的Flash扇區(qū)起始位置處,終端重新啟動時,LPC2114總是從0地址開始讀取指令并執(zhí)行,將IAP升級代碼安排到用戶引導(dǎo)部分,實驗證明這種安排是合理的。如果采用應(yīng)用程序調(diào)用的方式執(zhí)行IAP命令編程Flash,當(dāng)Flash編程遇到失敗時,整個系統(tǒng)就完全崩潰,應(yīng)用程序代碼被破壞,再無能力遠(yuǎn)程更新。采用本文的升級方式可完全避免這種情況的出現(xiàn),用戶引導(dǎo)程序出廠后固化,而外圍存儲器AT45DB041B中始終保存一份最新的應(yīng)用程序代碼備份,引導(dǎo)程序有能力多次編程Flash扇區(qū),確保應(yīng)用程序代碼的完整性,增加了升級的可靠性。
終端用戶引導(dǎo)程序運行執(zhí)行后,首先檢查應(yīng)用程序升級標(biāo)志和版本號,當(dāng)升級標(biāo)志被置位且出現(xiàn)新版本號時,MCU通過SPI接口從AT45DB041B中讀取應(yīng)用程序升級代碼,然后調(diào)用IAP命令執(zhí)行Flash編程,實現(xiàn)對應(yīng)用程序的升級,當(dāng)升級任務(wù)完成后,清除升級標(biāo)志和更新應(yīng)用程序版本,最后轉(zhuǎn)移到應(yīng)用程序入口并執(zhí)行應(yīng)用程序代碼,引導(dǎo)過程流程圖如圖2所示。
5.2 終端應(yīng)用程序設(shè)計
終端應(yīng)用程序負(fù)責(zé)完成終端的各項功能,其中包括接收前置機的遠(yuǎn)程升級命令。終端接收到前置機的遠(yuǎn)程升級命令后,應(yīng)用程序?qū)⑸壈凑諑姆绞酵ㄟ^GPRS Modem從前置機下載到終端,并保存到終端的AT45DB041B存儲器,下載成功后置位升級標(biāo)志和記錄升級包版本號以備用戶引導(dǎo)程序升級。
在升級包的下載過程中可看成是數(shù)據(jù)傳輸過程,應(yīng)用程序可同步完成終端的其他各種功能,不影響終端的正常運行。應(yīng)用程序升級包下載成功后,終端進行必要的現(xiàn)場保存并主動復(fù)位,從而執(zhí)行用戶引導(dǎo)程序升級的最后一步——Flash編程。另外也可以在終端里配置升級時間,避開終端任務(wù)重負(fù)荷階段,使得升級過程對終端正常工作影響降低到最低程度。應(yīng)用程序升級包的下載流程如圖3所示。
5.3 通信協(xié)議的設(shè)計
GPRS與Internet連接建立后,進人數(shù)據(jù)透明傳輸階段。本系統(tǒng)在完善的TCP/IP機制基礎(chǔ)上設(shè)計用戶應(yīng)用層協(xié)議。為實現(xiàn)對系統(tǒng)某個終端的系統(tǒng)軟件升級,前置機將要升級的程序代碼轉(zhuǎn)化為寫終端升級代碼幀,接入Internet到GPRS網(wǎng)絡(luò),透明傳輸下載到目標(biāo)終端[8]。參照通信規(guī)約,自定義了前置機升級請求幀、升級代碼數(shù)據(jù)幀和終端回應(yīng)幀,幀格式如表2所示。
在通信協(xié)議的幀格式中,三種數(shù)據(jù)幀的前五項相同,起始字符表示幀的開始,固定用68H表示;終端邏輯地址在通信時用來唯一識別一個通信的最終發(fā)起端和接收端,它包括地市區(qū)碼和終端地址碼兩部分;主站地址在通信時用來唯一識別通信的主站端對象;控制碼表示要求執(zhí)行的操作,8AH表示升級代碼下載操作;數(shù)據(jù)長度則表示此項直到校驗符的前項的所有數(shù)據(jù)字節(jié)數(shù);廠商編號是與本終端匹配前置機的唯一編號;權(quán)限等級和密碼應(yīng)用于前置機升級請求幀和升級代碼數(shù)據(jù)幀中,權(quán)限和密碼保護機制保證升級幀的可靠性;在升級請求幀中還包括升級軟件版本號,總長度和總校驗和,是升級文件的相關(guān)信息;在升級代碼數(shù)據(jù)幀中還包括當(dāng)前的幀序號和本幀的數(shù)據(jù)內(nèi)容,數(shù)據(jù)長度固定為792B,不足補OOH;在終端回應(yīng)幀中給出錯誤信息和下一幀序號,以便前置機的后續(xù)傳輸處理;檢驗碼CS和幀尾是三種共同的部分,校驗碼是幀頭與校驗碼之間字節(jié)累加和,幀尾固定用16H表示。
6 遠(yuǎn)程IAP應(yīng)用的可靠性探討
終端應(yīng)用程序的升級過程不免要受到環(huán)境的干擾,如終端掉電、異常的終端復(fù)位、網(wǎng)絡(luò)通信阻塞等故障,都會導(dǎo)致終端遠(yuǎn)程升級包下載或者IAP編程的失敗,因此必須提供一套可靠的軟硬件機制來保證終端IAP過程的正常工作。本系統(tǒng)中采取的措施[7]如下。
(1)終端掉電及異常復(fù)位處理 由于終端的停電及電網(wǎng)波動等干擾引起的終端復(fù)位都將中止終端的升級過程,導(dǎo)致升級失敗。本系統(tǒng)采用下載和IAP過程完全分離的升級方式,IAP部分位于用戶引導(dǎo)程序部分,不被擦除,AT45DB041B中總是備份最新版本終端應(yīng)用程序,所以任何階段操作失敗都能保證終端的正常工作。另外,在終端配備蓄電池和充電電路,在終端主電源來電時對蓄電池充電,使得終端掉電時也可正常運行,遠(yuǎn)程IAP過程更為可靠。
(2)遠(yuǎn)程通信的誤碼處理數(shù)據(jù)傳輸過程產(chǎn)生的誤碼。通用的、有效的解決辦法就是用CRC循環(huán)冗余效驗和重傳機制。數(shù)據(jù)校驗碼校驗正確后存入AT45DB041B,錯誤時返回錯誤編碼發(fā)和幀序號請求重發(fā),直到檢測到結(jié)束幀。結(jié)束幀數(shù)據(jù)長度不夠,用00填充,不影響校驗碼。
(3)網(wǎng)絡(luò)阻塞、故障處理 由于地形和環(huán)境因素的影響,GPRS網(wǎng)絡(luò)在遠(yuǎn)程IAP的通信過程中可能出現(xiàn)阻塞或斷開的情況,這時終端和前置機對無回應(yīng)幀采用延時重發(fā)的機制,連續(xù)五次不成功則斷開GPRS網(wǎng)并重新連接,終端保存升級的下載斷點信息,以待網(wǎng)絡(luò)恢復(fù)后繼傳數(shù)據(jù)。
7 結(jié)束語
該設(shè)計方案基本解決了本系統(tǒng)的遠(yuǎn)程代碼升級的困難,提高了系統(tǒng)軟件維護的方便性,加快了新產(chǎn)品的上市時間,也為用戶提供了更安全、快捷的服務(wù),提高了產(chǎn)品搶占市場的競爭力。用GPRS網(wǎng)絡(luò)為傳輸通道,對接入Internet困難的邊遠(yuǎn)地區(qū)的現(xiàn)場用電監(jiān)控終端的遠(yuǎn)程維護提出了一種全新的、可靠的設(shè)計方案。
來源:電氣應(yīng)用
標(biāo)簽:
上一篇:智能閥門定位器在石油化工裝...
傳動網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為傳動網(wǎng)(www.cdcst56.com)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。
產(chǎn)品新聞
更多>2025-09-08
華為昇騰Atlas800iA2 910B服務(wù)器Deepsee...
2025-09-04
2025-08-06
2025-07-08
調(diào)機師傅的"外掛神器"!維宏「一鍵調(diào)機...
2025-06-30
顛覆傳統(tǒng)加工!維宏VHTube一鍵實現(xiàn)變徑...
2025-06-16