新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于mPSD32xx系列單片機(jī)無線遠(yuǎn)程IAP的實現(xiàn)

基于mPSD32xx系列單片機(jī)無線遠(yuǎn)程IAP的實現(xiàn)

作者: 時間:2013-09-11 來源:網(wǎng)絡(luò) 收藏


的實現(xiàn)
  就是啟動程序把新的用戶程序編程到指定的Flash中。對Flash程序存儲器的讀/寫操作是實現(xiàn)的關(guān)鍵,下面給予詳細(xì)介紹。

  MCU可以像讀ROM器件那樣讀Flash存儲器,但只能使用特殊的擦除和編程指令對Flash存儲器進(jìn)行編程。

  Flash存儲器在被編程之前必須先被擦除。Flash存儲器的一個字節(jié)被擦除為全1(FF h), 通過設(shè)置選擇位為0來編程。MCU可一次擦除所有Flash存儲器或一個扇區(qū),不能按字節(jié)擦除,而MCU可以按字節(jié)編程。一旦MCU 發(fā)出Flash存儲器編程/擦除指令,可以通過幾種方法判斷是否編程/擦除完畢,程序中用到了下面兩種判斷方法來對Flash進(jìn)行編程。

數(shù)據(jù)輪詢法
  數(shù)據(jù)輪詢法的編程由函數(shù)unsigned char? flash_boot_write_ with_poll(volatile uchar xdata* addr, uchar dat)完成。當(dāng)從監(jiān)控中心接收的命令是要求用數(shù)據(jù)輪詢法對舊用戶程序更新時,主程序中就會調(diào)用此函數(shù),MCU發(fā)出一個編程指令,內(nèi)置的算法就開始運行。出錯標(biāo)志(DQ5)位為1標(biāo)志編程周期超時,為0標(biāo)志沒有出錯。MCU可以讀取被編程扇區(qū)任意位置的數(shù)據(jù)輪詢(DQ7)位和出錯標(biāo)志位。

數(shù)據(jù)跳轉(zhuǎn)法
  數(shù)據(jù)跳轉(zhuǎn)法的編程由函數(shù)unsigned char flash_write_with_toggle (volatile uchar xdata* addr, uchar dat)完成。編程周期與數(shù)據(jù)輪詢法大致相同,區(qū)別在于MCU讀的不是DQ7,而是數(shù)據(jù)跳轉(zhuǎn)標(biāo)志(DQ6)位。在編程期間,DQ6位一直跳轉(zhuǎn),直到編程周期完成。DQ5位為1標(biāo)志編程周期超時,為0標(biāo)志沒有出錯。MCU可以讀取被編程扇區(qū)任意位置的DQ6位和DQ5位。

  另外,此芯片還有Flash存儲器扇區(qū)保護(hù)功能:主Flash和第二Flash存儲器的每個扇區(qū)都可以被單獨地保護(hù),防止被編程和擦除。該功能為所有的編程或擦除失效提供了額外的數(shù)據(jù)安全保障。

  在本設(shè)計中,第二Flash的CSBOOT1扇區(qū)保存了門控的一些固定卡號,此扇區(qū)應(yīng)被保護(hù)。第二Flash的其余幾個扇區(qū)都作為備用,保存一些電源或空調(diào)參數(shù)以及需要添加的門控卡號,這些數(shù)據(jù)都是可變的,所以不被保護(hù)??梢酝ㄟ^JTAG 口或器件編程器設(shè)置使Flash存儲扇區(qū)被保護(hù)或解除保護(hù)。MCU可以通過讀扇區(qū)保護(hù)寄存器(CSIOP塊里)來讀取扇區(qū)保護(hù)狀態(tài),但不能改變它。

IAP功能的主程序設(shè)計
  系統(tǒng)上電后,程序首先在啟動扇區(qū)內(nèi)運行,等待上位機(jī)發(fā)來的命令,根據(jù)命令執(zhí)行相應(yīng)操作(見圖2)。超時或沒有命令發(fā)來就自動切換到用戶程序。需要更新用戶程序時,切換回啟動程序。

異常處理
  系統(tǒng)工作中主要有掉電、通信中斷、誤碼這三種情況會導(dǎo)致程序升級失敗。以下簡單介紹本設(shè)計所采取的一些保護(hù)措施。

  第一種情況,考慮到環(huán)境導(dǎo)致的電源穩(wěn)定性差和雷電、繼電器等高壓信號的干擾。系統(tǒng)采用了高隔離度DC/DC電源模塊把外界地和系統(tǒng)地隔離開,并且在容易受干擾的串口部分加入了高速光耦進(jìn)行隔離;第二種情況,系統(tǒng)用到了串口、GPRS/GSM、TCP/IP組合成的復(fù)雜通信網(wǎng)絡(luò)。由于只要有一個通信故障就會造成上、下位機(jī)之間的通信失敗,所以,為了防止因通信失敗而造成系統(tǒng)癱瘓,程序中用Eeprom_Init 函數(shù)在通信失敗或掉電情況下對數(shù)據(jù)進(jìn)行恢復(fù)和修理;第三種情況,在上、下位機(jī)通信過程中,盡管通信正常,但由于數(shù)據(jù)量大,有產(chǎn)生誤碼的可能性。因此,程序中對接收到的每一幀數(shù)據(jù)都先檢驗幀類型,然后對其作4字節(jié)的校驗和判斷。如果校驗有誤,將錯誤信息類型回傳給上位機(jī)重發(fā),直到數(shù)據(jù)完全正確,才將這一幀數(shù)據(jù)保存到Flash相應(yīng)地址里。
  
結(jié)語
  本文所介紹的IAP的實現(xiàn)是基于,且已在無線基站動態(tài)環(huán)境監(jiān)控系統(tǒng)項目中使用,極大地方便了系統(tǒng)程序的及時更新,可靠性也得到了驗證??梢灾苯討?yīng)用到各種電力、水資源和其它無線監(jiān)控系統(tǒng)中。



參考文獻(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.


上一頁 1 2 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉