<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > C8051F130的遠程在線(xiàn)升級程序設計

C8051F130的遠程在線(xiàn)升級程序設計

作者: 時(shí)間:2010-06-18 來(lái)源:網(wǎng)絡(luò ) 收藏

  1. 引言

  目前,采用FLASH 存儲介質(zhì)來(lái)作為程序存儲器的單片機種類(lèi)越來(lái)越多。和其他類(lèi)型如OTP、EPROM 型單片機比較起來(lái),FLASH 具有可擦寫(xiě)方便,次數多,編程無(wú)需外加高電壓等特點(diǎn)。絕大多數FLASH 型單片機都可在運行時(shí)通過(guò)指令來(lái)直接擦寫(xiě)內部FLASH,提供了IAP、ISP 功能,借助這個(gè)功能,就可以實(shí)現系統底層固件的功能。

   單片機是SILICON LABS推出的完全集成的混合信號片上系統型MCU 芯片,功能十分強大。其采用高速、流水線(xiàn)結構的8051 兼容的CIP-51 內核,內部PLL可倍頻至100MIPS,具有2個(gè)串口,128KB 可在系統編程的FLASH 存儲器,8448(8K+256)字節的片內RAM,并包含了片內JTAG 調試電路。其功能完全滿(mǎn)足實(shí)現遠程在線(xiàn)程序升級系統的條件。

  在專(zhuān)用網(wǎng)絡(luò )系統中實(shí)現遠程在線(xiàn)程序升級,其優(yōu)點(diǎn)顯而易見(jiàn),不僅極大的為系統維護提供了方便,還節省了大量的人力財力。本文詳細介紹了在某直放站系統中實(shí)現的基于的遠程在線(xiàn)程序升級系統的設計思路和方法。

  2. 設計思路

  系統組網(wǎng)拓撲結構如圖1 所示,正常工作時(shí),網(wǎng)管中心通過(guò)有線(xiàn)或無(wú)線(xiàn)通道對所屬各站點(diǎn)下位機狀態(tài)進(jìn)行。網(wǎng)管中心通過(guò)查詢(xún)各站點(diǎn)下位機參數得到下位機固件版本號,如果固件版本號和現有最新固件版本號不同,則直接發(fā)送第一幀程序升級數據啟動(dòng)遠程程序升級過(guò)程。因為系統需要實(shí)時(shí)工作,所以程序的升級也就必須在站點(diǎn)下位機系統工作過(guò)程中完成。在網(wǎng)管中心發(fā)送程序升級數據的過(guò)程中,站點(diǎn)下位機系統依然正常工作,只有全部接收完程序升級數據并校驗通過(guò)后,才跳轉到Bootloader 程序進(jìn)行程序升級。

系統組網(wǎng)拓撲結構

  下位機硬件框圖如圖2 所示,CPU 選擇,其他部分包括控制輸入輸出部分,人機接口電路,RS232 接口,EEPROM 器件24C16 等。RS232 接口作為系統的通訊接口可以外接電話(huà)MODEM或短信MODEM 等標準模塊,和網(wǎng)管中心組成有無(wú)線(xiàn)網(wǎng)絡(luò ),其所采用的具體形式不影響本文所述的遠程升級系統。EEPOM 器件24C16 由于可擦寫(xiě)次數比FLASH 多,用來(lái)存儲系統的關(guān)鍵參數。

下位機硬件框圖

  由于51 系列單片機外部總線(xiàn)地址為16 位,能直接尋址的最大范圍為64KB,所以C8051F130 將內部的128KB FLASH 程序存儲空間被分成了4 塊,BLOCK0、BLOCK1、BLOCK2、BLOCK3。每塊大小為32KB,0x0000~0x7FFF 地址空間始終為BLOCK0,作為公共段??梢酝ㄟ^(guò)設置程序存儲器空間塊選擇寄存器PSBANK 來(lái)選擇常量操作和取指操作地址在0x8000 ~0xFFFF 所指向的塊。

PSBANK寄存器

  COBANK:常量操作存儲塊選擇位。

  這兩位選擇常量操作(MOVC 和FLASH MOVX)地址在0x8000 ~0xFFFF 范圍的FLASH 存儲塊。

  •   00:常量操作指向存儲塊0(注意,塊0 也映射到地址0x0000 ~0x7FFF)。
  •   01:常量操作指向存儲塊1。
  •   10:常量操作指向存儲塊2。
  •   11:常量操作指向存儲塊3。

  IFBANK:取指操作存儲塊選擇位這兩位選擇取指操作(地址在0x8000 ~0xFFFF 范圍)的FLASH 存儲塊。這兩位只能由位于BLOCK0 的程序改寫(xiě)。

  •   00:從存儲塊0 取指令(注意,塊0 也映射到地址0x0000 ~0x7FFF)。
  •   01:從存儲塊1 取指令。
  •   10:從存儲塊2 取指令。
  •   11:從存儲塊3 取指令。

  FLASH 的設計分配方案如下:

C8051F130的遠程在線(xiàn)升級程序設計

  BLOCK0、BLOCK1 作為默認的64KB 程序存儲區空間,存儲正常工作時(shí)的固件程序。我們所使用的程序不會(huì )超過(guò)60KB,0x0000~0xEFFF 地址區60KB 空間用于存儲系統主程序,0xF000~0xFFFF 地址地址區4KB 空間用于存儲Bootloader 程序。

  BLOCK2、BLOCK3 作為64KB 常量存儲區,用于存儲系統運行過(guò)程中接收到的程序升級數據。

  如果要遠程對某指定站點(diǎn)的固件進(jìn)行升級時(shí),網(wǎng)管中心對該站點(diǎn)分幀發(fā)送程序升級數據,升級數據協(xié)議格式如下:

升級數據協(xié)議格式

  網(wǎng)管中心發(fā)送程序升級數據幀時(shí),每幀數據大小固定為512 字節,幀序號從1 開(kāi)始。從功能標志處起到數據部分最后一字節做累加和作為校驗碼。最后一幀不足512 字節部分加0xFF 補足。在發(fā)送過(guò)程中,由于每幀數據以0x1002 開(kāi)始,0x1003 結束,中間碰到0x10 時(shí),要再補發(fā)0x10。接收時(shí)除了幀頭幀尾,在幀中間時(shí)如果連續接收到兩個(gè)0x10,則需要去掉一個(gè)。

  指定站點(diǎn)在成功接收完一幀程序升級數據后,如果校驗通過(guò)則擦除對應的BLOCK2 或者BLOCK3中的扇區。這里需要注意的是,C8051F130 的FLASH 扇區大小是1024 字節,而我們的數據幀大小定為512 字節,所以應該接收到每?jì)蓭瑪祿挪脸龑纳葏^。將程序升級數據寫(xiě)入FLASH 中,同時(shí)對每幀512 字節的程序升級數據做累加,并將其累加和作為校驗碼寫(xiě)入EEPROM 指定位置,最后給出正確回應。如果校驗錯誤,則回應錯誤。網(wǎng)管中心接收到錯誤回應時(shí)應該重發(fā)上一幀數據,否則繼續發(fā)送下一幀數據。如果幀序號等于總幀數,說(shuō)明指定站點(diǎn)接收到最后一幀數據,置需要進(jìn)行程序升級標志,此標志至關(guān)重要,因此將其存儲在EEPROM 中,為增加其可靠性,另外還存儲其反碼作為校驗,然后直接跳轉Bootloader 程序,以升級主程序。

流程圖

  程序跳轉到Bootloader 程序執行后,首先必須要檢查程序升級標志,如果為真,再檢查其校驗碼,只有兩者都符合預設的值,才認為確實(shí)需要進(jìn)行程序升級。否則跳轉到主程序區執行。

  程序升級過(guò)程如下:首先讀出24C16 中存儲的程序升級數據的總幀數,為防止寫(xiě)入到BLOCK2/3中的程序升級數據有錯誤,從BLOCK2/3 中讀出每一幀512 字節的數據進(jìn)行累加,檢查其是否和存儲在24C16 中的對應數據幀的累加校驗碼相等。如果所有的的程序升級數據校驗都通過(guò),則說(shuō)明數據正確,開(kāi)始擦除主程序區FLASH,并再次讀出BLOCK2/3 中的程序升級數據寫(xiě)入主程序區FLASH。完成后擦除程序升級標志,跳轉到主程序區開(kāi)始執行新版本固件程序。在讀出校驗過(guò)程中,只要有一幀數據校驗通不過(guò),則認為寫(xiě)入到BLOCK2/3 的程序升級數據發(fā)生錯誤,為保證系統安全,擦除程序升級標志,跳轉到主程序區執行原版本程序,并等待下一次升級。


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>