基于mPSD32xx系列單片機無(wú)線(xiàn)遠程IAP的實(shí)現
IAP的實(shí)現
IAP就是啟動(dòng)程序把新的用戶(hù)程序編程到指定的Flash中。對Flash程序存儲器的讀/寫(xiě)操作是實(shí)現IAP的關(guān)鍵,下面給予詳細介紹。
MCU可以像讀ROM器件那樣讀Flash存儲器,但只能使用特殊的擦除和編程指令對Flash存儲器進(jìn)行編程。
Flash存儲器在被編程之前必須先被擦除。Flash存儲器的一個(gè)字節被擦除為全1(FF h), 通過(guò)設置選擇位為0來(lái)編程。MCU可一次擦除所有Flash存儲器或一個(gè)扇區,不能按字節擦除,而MCU可以按字節編程。一旦MCU 發(fā)出Flash存儲器編程/擦除指令,可以通過(guò)幾種方法判斷是否編程/擦除完畢,程序中用到了下面兩種判斷方法來(lái)對Flash進(jìn)行編程。
數據輪詢(xún)法
數據輪詢(xún)法的編程由函數unsigned char? flash_boot_write_ with_poll(volatile uchar xdata* addr, uchar dat)完成。當從監控中心接收的命令是要求用數據輪詢(xún)法對舊用戶(hù)程序更新時(shí),主程序中就會(huì )調用此函數,MCU發(fā)出一個(gè)編程指令,內置的算法就開(kāi)始運行。出錯標志(DQ5)位為1標志編程周期超時(shí),為0標志沒(méi)有出錯。MCU可以讀取被編程扇區任意位置的數據輪詢(xún)(DQ7)位和出錯標志位。
數據跳轉法
數據跳轉法的編程由函數unsigned char flash_write_with_toggle (volatile uchar xdata* addr, uchar dat)完成。編程周期與數據輪詢(xún)法大致相同,區別在于MCU讀的不是DQ7,而是數據跳轉標志(DQ6)位。在編程期間,DQ6位一直跳轉,直到編程周期完成。DQ5位為1標志編程周期超時(shí),為0標志沒(méi)有出錯。MCU可以讀取被編程扇區任意位置的DQ6位和DQ5位。
另外,此芯片還有Flash存儲器扇區保護功能:主Flash和第二Flash存儲器的每個(gè)扇區都可以被單獨地保護,防止被編程和擦除。該功能為所有的編程或擦除失效提供了額外的數據安全保障。
在本設計中,第二Flash的CSBOOT1扇區保存了門(mén)控的一些固定卡號,此扇區應被保護。第二Flash的其余幾個(gè)扇區都作為備用,保存一些電源或空調參數以及需要添加的門(mén)控卡號,這些數據都是可變的,所以不被保護??梢酝ㄟ^(guò)JTAG 口或器件編程器設置使Flash存儲扇區被保護或解除保護。MCU可以通過(guò)讀扇區保護寄存器(CSIOP塊里)來(lái)讀取扇區保護狀態(tài),但不能改變它。
IAP功能的主程序設計
系統上電后,程序首先在啟動(dòng)扇區內運行,等待上位機發(fā)來(lái)的命令,根據命令執行相應操作(見(jiàn)圖2)。超時(shí)或沒(méi)有命令發(fā)來(lái)就自動(dòng)切換到用戶(hù)程序。需要更新用戶(hù)程序時(shí),切換回啟動(dòng)程序。
異常處理
系統工作中主要有掉電、通信中斷、誤碼這三種情況會(huì )導致程序升級失敗。以下簡(jiǎn)單介紹本設計所采取的一些保護措施。
第一種情況,考慮到環(huán)境導致的電源穩定性差和雷電、繼電器等高壓信號的干擾。系統采用了高隔離度DC/DC電源模塊把外界地和系統地隔離開(kāi),并且在容易受干擾的串口部分加入了高速光耦進(jìn)行隔離;第二種情況,系統用到了串口、GPRS/GSM、TCP/IP組合成的復雜通信網(wǎng)絡(luò )。由于只要有一個(gè)通信故障就會(huì )造成上、下位機之間的通信失敗,所以,為了防止因通信失敗而造成系統癱瘓,程序中用Eeprom_Init 函數在通信失敗或掉電情況下對數據進(jìn)行恢復和修理;第三種情況,在上、下位機通信過(guò)程中,盡管通信正常,但由于數據量大,有產(chǎn)生誤碼的可能性。因此,程序中對接收到的每一幀數據都先檢驗幀類(lèi)型,然后對其作4字節的校驗和判斷。如果校驗有誤,將錯誤信息類(lèi)型回傳給上位機重發(fā),直到數據完全正確,才將這一幀數據保存到Flash相應地址里。
結語(yǔ)
本文所介紹的無(wú)線(xiàn)遠程IAP的實(shí)現是基于mPSD32xx系列單片機,且已在無(wú)線(xiàn)基站動(dòng)態(tài)環(huán)境監控系統項目中使用,極大地方便了系統程序的及時(shí)更新,可靠性也得到了驗證??梢灾苯討玫礁鞣N電力、水資源和其它無(wú)線(xiàn)監控系統中。
參考文獻:
[1].GPRSdatasheethttp://www.dzsc.com/datasheet/GPRS_1594650.html.
[2].DDCdatasheethttp://www.dzsc.com/datasheet/DDC_1870710.html.
[3].Maximdatasheethttp://www.dzsc.com/datasheet/Maxim_1062568.html.
[4].MAX202CPEdatasheethttp://www.dzsc.com/datasheet/MAX202CPE.html.
[5].74LS11datasheethttp://www.dzsc.com/datasheet/74LS11_1493173.html.
[6].Q2406Bdatasheethttp://www.dzsc.com/datasheet/Q2406B_561524.html.
[7].ROMdatasheethttp://www.dzsc.com/datasheet/ROM_1188413.html.
評論