《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于CDMA網絡的嵌入式設備遠程升級系統
基于CDMA網絡的嵌入式設備遠程升級系統
來源:電子技術應用2014年第2期
朱偉斌1,張 濤2,顧海濤2,鄧新欣2
1. 杭州電子科技大學 電子信息學院, 浙江 杭州310018; 2. 聚光科技(杭州)股份有限公司, 浙江 杭州310018
摘要: 針對利用仿真器更新程序繁瑣的問題,提出了一種全新的基于CDMA網絡的遠程升級解決方案。通過特殊的“常量定位”方式,實現引導升級合一和內嵌到應用程序的目的。采用虛擬復位技術,簡化了升級流程。上位機通過Internet和CDMA網絡與終端通信,支持數據包的斷點續傳,通過查看數據窗口中解析的數據包,實時了解升級的進度。測試結果表明,該方案提高了固件升級的便捷性,降低了升級的成本,有一定的參考價值。
中圖分類號: TN92
文獻標識碼: B
文章編號: 0258-7998(2014)02-0135-04
Embedded device remote upgrade system based on CDMA network
Zhu Weibin1, Zhang Tao2, Gu Haitao2, Deng Xinxin2
1. Department of Electrical Information, Hangzhou Electronic and Information University, Hangzhou 310018, China;2. Focused Photonics(Hangzhou), Inc., Hangzhou 310018, China
Abstract: In this paper, we propose an absolutely new remote upgrade solution for embedded device based on CDMA network in order to solve the problem of fussy process in using the emulator. The method can reach the goal of the combination of bootloader and upgrading program. At the same time, they can be embedded into application program by special“constant position” pattern. What’s more, we simplify the upgrading process by adopting virtual reset technology. The upper computer will communicate with terminal via Internet and CDMA network, support breakpoint resume and can achieve the updating schedule viewing parsed packets in data window. The experimental results prove that the solution is useful to improve the facility of firmware upgrade and can reduce the cost.
Key words : embedded device; remote upgrade; virtual reset; breakpoint resume ;CDMA

    近年來,隨著計算機技術及集成電路技術的發展,嵌入式設備廣泛應用于通信、網絡、工控、醫療、電子等領域。隨著用戶需求的提升,設備的升級越來越頻繁。然而有些設備安裝在高空高壓環境下,作業危險性很大。因此,需要一套行之有效的設備管理及升級方案,讓操作人員可以通過無線的方式[1]進行產品的升級和維護。
    本文的軟件升級方案以TI公司的MSP430F5438A[2]為例,通過片內Flash備份,引導升級合一,常量定位,虛擬復位等方式,避免了程序升級需要上電復位及設備意外掉電導致升級失敗等風險,使終端設備實現了軟件升級遠程化,無需引導等待,掉電可恢復,數據包可斷點續傳,穩定可靠的目的。
1 基本原理
1.1遠程升級系統介紹

    CDMA2000 1X是CDMA2000第三代無線通信系統的第一個階段,完全兼容IS-95,采用碼分和頻分結合的多址技術。CDMA2000 1X的空中信道支持的調制方式在兼容CDMAOne的基礎上進行了極大的增強,單個用于傳輸分組數據的空中信道的最大傳輸速率可以達到307.2 kb/s,是真正意義上的第三代移動通信系統[3]。如圖1所示,本方案中上位機作為網絡服務器,將升級代碼借助Internet、CDMA網絡發送到遠程終端的CDMA模塊中。MSP430讀取模塊中的緩存,存入到內部的Flash中,待遠程終端接收完全部的升級代碼并校驗正確后開始升級。

1.2 升級實現原理介紹
    本方案將程序存儲空間劃分為Boot區、Code區、Temp區、Flag區和Vector區。Boot區存放基本的Flash讀寫、標志判斷等代碼(不含通信處理及基本操作);Code區存放完整的應用程序工程代碼(含通信處理及基本操作);Temp區用于備份程序區的代碼;Flag區是專門存放升級標志位的特殊區域;Vector區用于備份程序區的中斷向量。其中Boot區代碼使用特殊的“常量定位”方式添加到應用程序中,與Code區的應用程序一次編譯完成,且Boot區提供UpdateAPI函數供Code區調用。
    MSP430F543A的Code Flash最多為256 KB,共128段,擦除的時候必須按段擦除,寫入或者讀出的時候按字或者字節進行操作。在Main Flash 中每段seg均為512 B,在Information Flash中每段為128 B。由于BankA分為0x40000-0x45bff和0x5c00-0xffff兩部分,段擦除會將兩部分都擦除,故在BankA中不使用0x40000-0x45bff(共23 KB),用戶中斷向量和備份中斷向量各為512 B,占據1 KB,Boot區分配16 KB。由于要程序升級可恢復,故做成備份的模式,這樣就達到了Temp區和Code區均為(256 KB-23KB-1 KB-16 KB)/2=108 KB的最佳效果。
    在應用程序中下載完代碼并校驗正確后置位升級進度,通過虛擬復位跳轉到Boot區,讀取升級標志位來選擇相應的處理。如果置位的是下載完成標志,則按照分塊交換的理念,逐個相對應地交換,待全部交換完成,則跳轉到應用程序入口,開始執行交換后的新應用程序,如圖2所示。

 

 

2 關鍵技術
2.1 常量定位技術

    一個函數的入口地址稱為函數的指針。可以用一個指針變量指向函數,然后通過該指針變量調用此函數。而Const常量定位技術就是從此衍生出來的。
 在本方案中首先建立一個完整的工程,編寫Boot區代碼。開辟一段專門空間(0x5c00-0x5cff)來存儲Boot區函數的入口地址,得到Boot區txt格式的文件,轉換成16進制數據文件后,通過靜態存儲的方式定位到實際運行程序中在Boot區開辟的固定區間內(0x5c00-0x9bff),Code區通過Boot區提供的UpdateAPI函數入口地址,將其轉換成Code區函數后供自己調用。
    為了防止誤升級,在Boot區定義一個讀取軟件版本信息的函數int s_Boot_GetUpdateVersion( ),此函數在Boot區的入口地址是56 6d,把它存放在0x5c00-0x5c01的空間內。在Code區中加入轉換后的Boot區代碼后,再自定義函數int(*Boot_GetUpdateVersion)(),然后將存儲在0x5c00-0x5c01處的s_Boot_GetUpdateVersion入口地址賦給該函數,接著調用Code區的(*Boot_GetUpdateVersion)()函數即可實現軟件版本信息讀取的功能。
   可見通過常量定位這種方式,可以將應用程序和Boot程序一次編譯完成,Boot區提供UpdateAPI函數供Code區調用。
2.2 虛擬復位技術
    所謂的虛擬復位不是通過產生外部的復位信號來迫使單片機復位,而是通過改變PC指針實現程序的跳轉。通常的方法是在C語言中內嵌匯編語言來實現。只要在需要復位的地方嵌入匯編語言[4] asm("mov &0xFFFE,PC")即可實現虛擬復位[3]。然而內嵌匯編總是存在諸多麻煩,因此,提出一種新的虛擬復位方法:
    ((void (*)(void))0x5d00)();
    由于0x5d00是復位地址,故把它強制轉換成指向函數的指針,然后調用此函數,達到程序復位的目的。同時這種方法也解決了升級中存在的一個比較嚴重的問題:由于虛擬復位是通過內嵌的方式提供API函數供Code區函數調用的,而Code區的起始地址是0x9c00,則虛擬復位后的PC指針指向就是0x9c00,而不是Boot區的0x5d00。所以Code區的應用程序在執行虛擬復位時,無法跳轉到Boot區,這樣在Boot區要完成的代碼交換也將無法進行。可見此種無需嵌入匯編的方法,簡單方便且切實可行。
2.3 斷點續傳技術
    UDP協議被稱為一種不可靠的傳輸協議,因為從發送方到接收方的傳遞過程中出現數據包的丟失,協議本身并不能做出任何檢測和提示,但具有TCP所望塵莫及的速度優勢。為了使遠程升級系統既獲得實時的性能,又獲得相對可靠性,必須在上層應用程序中完成安全和排序等功能,并建立可靠傳遞機制。
    在本方案設計中,專門在Information Flash中開辟一段空間0x1800—0x187f,用來記錄當前經過CRC16校驗正確后的數據包數。為了保證Flash擦除的方便和穩定,規定數據包中數據的長度必須為128 B、256 B或者512 B,若所要傳輸的數據小于規定字節數,需在數據包中填充0xff方法以保證數據的一致性。當由于網絡不穩定或者斷電等突發情況下導致升級失敗時,若再次啟動升級,終端設備要首先讀取當前數據包數,擦除Flash中空余的存儲空間,然后發送含有當前數據包數的升級配置數據包給上位機,上位機在獲得當前命令包后計算下一數據包在解析文件中的位置,并組包發送。從而避免了相同數據包的重復發送和Flash的全部擦除。
3 上位機軟件設計
 上位機方案采用Visual C++中的MFC對話框編程,其中的關鍵是對升級文件TXT文件的處理。@為地址引導符,其后數據為地址,即接下來代碼所存入的Flash地址起始位置。如果地址為0xFF80-0xFFFF,則為中斷向量地址,特別@后面的FFFE是應用程序中斷向量表中的復位地址。q為結束字符,表明文件結束。
    上位機完成對文件的解析后,通過數據包與終端進行交互。數據包定義如表1所示。

    其中命令碼是用來區分數據包所要執行的具體操作。由于尋址范圍超過了64 KB,故采用4 B來表示地址信息。
4 風險避免措施
    升級中不可避免地存在各種風險,本方案采取如下措施: (1)將Code區和Temp劃分為若干塊,每次完成塊交換后,都將置備份標志,如果交換過程中有一塊交換不成功則再次虛擬復位,通過升級標志位的判斷進行恢復處理,將已經和Temp交換的部分再次交換回來保證原程序依然可用。(2)在下載代碼的過程中,每一包數據在上位機都計算CRC16校驗值,然后單片機接收數據后重新計算CRC16值,如果兩者相等才認為這包數據正確,給出正確回應[5]。(3)遇到在應用程序中代碼下載不完整或者代碼下載時斷電的情況,可通過讀取升級進度標志,單片機重新復位后不會在Boot區中進行代碼交換。(4)專門劃分一個區域用于記錄升級進度信息,通過修改進度信息來進行相應的處理[5]。(5)在等待升級完成的過程中,發送一定數目的升級完成確認包(地址信息為01 01 01 01,命令碼為88),如果收到回應,則確認升級完成。(6)本方案并不擦除原來的程序,只是將Code區和Temp區互換,所以可以實現升級區變為備份區,備份區變為升級區,等待下次文件的寫入,也可以按照需求還原程序。通過這種校驗、存儲、替換的方式,可以有效地降低由于傳輸錯誤導致升級失敗的風險。
5 測試結果及總結
 為了保證通信的速率和穩定,本測試設置通信超時為5 s,重發次數為5次。即發送的數據包如果5 s內沒有回應,則重發。重發次數最多為5次,否則提示升級失敗。打開端口后,等待設備的登錄,登錄成功且升級文件解析正確后才可進行升級。點擊“程序升級”按鈕,上位機和終端開始交互。終端接收完正確數據后,虛擬復位完成Code區和Temp區的代碼交換。運行新程序后終端重啟CDMA模塊仍然發送包含新IP地址和終端ID的通信連接數據包給上位機。若終端ID前后一致且對升級完成確認包的回應正確,則表明升級成功。測試結果如圖3所示。

    本方案借助Internet、CDMA網絡成功地實現了遠程終端的軟件升級。同時運用常量定位技術達到了升級無需引導等待的目的;虛擬復位、斷點續傳和升級進度標志的應用增加了升級程序抗風險的能力;采用片內Flash備份的方式,支持升級和備份恢復的功能。隨著通信技術和自編程序技術的發展,本方案對嵌入式終端設備的軟件更新具有極大的參考意義。
參考文獻
[1] 唐文, 劉芳伶. MSP430系列單片機軟件在線升級設計與實現[J].通信技術,2012,45(1):144-146.
[2] 美國德州儀器.MSP430 Flash SelfProgramming Technique[Z]. SLLAA103.2004.
[3] 張云. 第三代移動通信技術特點、后續演進及其全球競爭格局[J]. 中國集成電路, 2009(2):67-72.
[4] 孫亞萍, 張慧熙.一種新型DSP軟件在線升級方法的研究與實現[J].微型機與應用,2010,29(5):72-74.
[5] 羅文, 王莉娜, 肖鯤.基于GPRS的嵌入式系統遠程監控和升級[J].電子技術應用, 2010,36(5):159-162.

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 网友自拍第一页 | 女色婷婷网| 伊人天堂在线 | 99视频在线看 | 六月丁香婷婷综合 | run away无删减全集 动漫 | 四虎影片国产精品8848 | 奇米777四色影视在线看 | 日本黄色小视频网站 | 久久久久国产成人精品亚洲午夜 | 久久99热成人精品国产 | 精品国产夜色在线 | 五月婷婷激情综合 | 99热国产这里只有精品免费 | 九九九久久久 | 欧美国产综合视频 | 精品久久久久久久久久久久久久久 | 啪啪免费网站入口链接 | 日韩一级一欧美一级国产 | 国产中文在线视频 | 久草免费在线色站 | 成人精品久久 | 日日操人人 | 国产一国产一级毛片视频在线 | 男人天堂网页 | 五月激情婷婷综合 | 你懂的在线免费视频 | 六月婷婷综合网 | 久久www免费人成一看片 | 五月婷婷六月婷婷 | 四虎成人免费网站在线 | 四虎影院一级片 | 福利一区福利二区 | 国产亚洲精品日韩综合网 | 国产精品久久久久久久y | 激情五月婷婷开心 | 天天做天天爱天天影视综合 | 视频国产免费 | 国产色视频一区 | 欧美激情视频网站 | 97视频在线观看视频最新 |