• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      嵌入式終端IAP斷點(diǎn)續(xù)傳的研究與實(shí)現(xiàn)

      2014-09-25 03:05:38朱孟江聶云杰
      關(guān)鍵詞:用戶程序指針字節(jié)

      朱孟江,聶云杰

      (南京南瑞集團(tuán)公司,南京211100)

      引 言

      在線應(yīng)用編程(In-Application Programming,IAP)技術(shù)是用戶自己的程序在運(yùn)行過程中對(duì)User Flash的部分區(qū)域進(jìn)行燒寫,目的是為了在產(chǎn)品發(fā)布后方便地通過服務(wù)通信端口對(duì)產(chǎn)品中的固件程序進(jìn)行更新升級(jí)。

      目前電力市場的電能數(shù)據(jù)采集終端、集中抄表終端等設(shè)備之間通信都是通過GPRS,在一些偏遠(yuǎn)或者信號(hào)覆蓋較少地區(qū)GPRS存在一定的不穩(wěn)定性,會(huì)出現(xiàn)數(shù)據(jù)傳輸中斷等現(xiàn)象。傳統(tǒng)IAP方式?jīng)]有考慮傳輸中斷和傳輸誤碼等問題,采取傳統(tǒng)方式對(duì)設(shè)備進(jìn)行升級(jí),如果升級(jí)過程中出現(xiàn)中斷,不僅導(dǎo)致APP程序區(qū)遭到破壞,還會(huì)因?yàn)樯?jí)中斷而再次重復(fù)升級(jí),產(chǎn)生大量GPRS流量,因此急需一種行之有效的方法來解決這類問題。

      本文將以ST公司的STM32F103RBT6為平臺(tái),闡述IAP斷點(diǎn)續(xù)傳的方案及其優(yōu)化。該方案解決了升級(jí)過程中意外中斷、遠(yuǎn)程升級(jí)數(shù)據(jù)傳輸誤碼等關(guān)鍵性技術(shù)問題,保證了待升級(jí)終端內(nèi)部應(yīng)用程序的正確運(yùn)行。該方案方便快捷,避免了傳統(tǒng)應(yīng)用程序升級(jí)所帶來的復(fù)雜繁瑣過程,節(jié)約了大量人力資源,已在電力集抄系統(tǒng)中得到廣泛的應(yīng)用。

      1 IAP原理

      1.1 STM32F103RBT6芯片簡介[1]

      STM32F103RBT6是一款以Cortex-M3為內(nèi)核的32位CPU,帶有20KB的靜態(tài)RAM以及128KB的Flash存儲(chǔ)器,最高主頻可達(dá)72MHz,外部擁有豐富的外設(shè)資源和通信端口,為在線升級(jí)端口提供更多選擇。

      1.2 傳統(tǒng)IAP編程原理

      對(duì)MCU而言,其程序都是一系列二進(jìn)制代碼,并存儲(chǔ)在Flash空間。當(dāng)MCU上電之后,內(nèi)核把存儲(chǔ)在Flash內(nèi)部的數(shù)據(jù)映射到RAM空間執(zhí)行。因此在線編程可以看作是MCU對(duì)Flash空間的數(shù)據(jù)進(jìn)行讀/寫操作。

      傳統(tǒng)IAP原理是在用戶程序(APP)運(yùn)行過程中,當(dāng)接收到升級(jí)的命令后,把用戶數(shù)據(jù)保存到EEPROM或上傳到主站,然后跳轉(zhuǎn)到升級(jí)區(qū),對(duì)APP程序區(qū)進(jìn)行升級(jí),當(dāng)程序升級(jí)完畢,再跳轉(zhuǎn)到APP區(qū)執(zhí)行APP程序。正常情況下,這種升級(jí)方法沒有問題;但是當(dāng)升級(jí)過程中出現(xiàn)中斷,則整個(gè)APP數(shù)據(jù)區(qū)被破壞,即使下次升級(jí)成功,中間也會(huì)出現(xiàn)一段空白期。在電力儀表中,這種空白期將產(chǎn)生很大的影響,不僅丟失大量電能表數(shù)據(jù),還會(huì)對(duì)用戶產(chǎn)生一系列的影響。

      傳統(tǒng)升級(jí)流程圖如圖1所示。

      1.3 IAP斷點(diǎn)續(xù)傳原理

      斷點(diǎn)續(xù)傳能夠很好地解決傳統(tǒng)升級(jí)方式的不足,該方法主要原理是把Flash分成不同區(qū)域,每個(gè)區(qū)域存儲(chǔ)不同的數(shù)據(jù)或者用戶程序。以STM32F103RBT6為例,把內(nèi)部Flash分成4個(gè)區(qū)域,如表1[2]所列。

      圖1 傳統(tǒng)IAP流程圖

      表1 STM32RBT6內(nèi)部Flash區(qū)域劃分

      第1個(gè)區(qū)域?yàn)镮AP斷點(diǎn)續(xù)傳程序區(qū),當(dāng)終端上電或接收到升級(jí)命令時(shí),程序指針跳轉(zhuǎn)到0x08000000處開始執(zhí)行,等待接收升級(jí)數(shù)據(jù)包;第2個(gè)區(qū)域存儲(chǔ)一些升級(jí)相關(guān)的信息,每個(gè)信息表示上一次升級(jí)的狀態(tài),以結(jié)構(gòu)體形式存放。如:

      第3和第4個(gè)區(qū)域分別存儲(chǔ)的是低區(qū)用戶程序和高區(qū)用戶程序。這樣做的目的是當(dāng)升級(jí)其中一個(gè)用戶程序時(shí)候,即使升級(jí)被中斷,也可以到另外一個(gè)用戶區(qū)去執(zhí)行相應(yīng)用戶程序,保證用戶數(shù)據(jù)能夠得到及時(shí)有效處理,該方法在電力集抄系統(tǒng)中顯得尤為重要。假如某次系統(tǒng)升級(jí)被破壞,還可以運(yùn)行原有的程序,繼續(xù)電能量的采集。但是采用傳統(tǒng)方式升級(jí)系統(tǒng),假如升級(jí)過程被中斷,就會(huì)導(dǎo)致整個(gè)終端系統(tǒng)崩潰,不僅造成國家大量電能量的流失,而且會(huì)影響用戶的日常生活。

      斷點(diǎn)續(xù)傳原理流程圖如圖2所示。

      2 程序設(shè)計(jì)

      2.1 中斷向量表設(shè)置

      中斷向量表關(guān)系到終端的穩(wěn)定運(yùn)行,正常情況下終端設(shè)備復(fù)位后,設(shè)備程序指針自動(dòng)指向0x00000004處,但是我們修改了用戶程序的起始地址,因此要相應(yīng)地把中斷向量表的起始地址進(jìn)行偏移。以低區(qū)用戶程序?yàn)槔?/p>

      2.2 通信協(xié)議

      這里用串口對(duì)終端設(shè)備進(jìn)行升級(jí),協(xié)議幀結(jié)構(gòu)如下:

      圖2 斷點(diǎn)續(xù)傳流程圖

      報(bào)文頭設(shè)備ID幀類型控制碼報(bào)文長度報(bào)文內(nèi)容校驗(yàn)位報(bào)文結(jié)尾2字節(jié)2字節(jié)1字節(jié)1字節(jié)2字節(jié)數(shù)據(jù)1字節(jié)1字節(jié)

      報(bào)文頭:0x5A 0xA5。

      設(shè)備ID:設(shè)備號(hào)。

      幀類型:預(yù)留用來判斷幀的作用,暫定0x01。

      控制碼:用來表明報(bào)文的作用,暫定下行是0x9X,上行是0x1X。

      報(bào)文長度:是“報(bào)文內(nèi)容”的長度。

      校驗(yàn)位:校驗(yàn)位之前所有字符CRC(即從報(bào)文頭至校驗(yàn)位之前的所有位的CRC)。

      報(bào)文結(jié)尾:0xA5。

      在通信協(xié)議里面加入CRC校驗(yàn),能夠很好地解決傳輸誤碼的問題;當(dāng)接收方對(duì)接收到的數(shù)據(jù)進(jìn)行校驗(yàn)時(shí),如果校驗(yàn)值不正確,則丟棄本包數(shù)據(jù),同時(shí)告訴主站重新發(fā)送該包數(shù)據(jù)。

      2.3 Flash讀寫操作

      Flash讀數(shù)據(jù)直接從相應(yīng)地址讀取相應(yīng)數(shù)據(jù)內(nèi)容,即地址所指向的內(nèi)容就是要讀取的數(shù)據(jù)。Flash寫操作需要注意在寫之前應(yīng)該先把寫保護(hù)去除,否則導(dǎo)致寫入失敗。寫入操作如下:

      2.4 程序跳轉(zhuǎn)設(shè)計(jì)

      PC指針成功跳轉(zhuǎn)是升級(jí)的關(guān)鍵。在跳轉(zhuǎn)之前先關(guān)閉全局中斷,保證PC指針指向非中斷服務(wù)程序。跳轉(zhuǎn)之后,首先把地址傳入PC指針,然后初始化堆棧指針[3]。實(shí)現(xiàn)方式如下:

      結(jié) 語

      本文提出了一種基于STM32平臺(tái)的嵌入式終端斷點(diǎn)續(xù)傳升級(jí)的新方法,該方法省去了傳統(tǒng)應(yīng)用程序升級(jí)所帶來的復(fù)雜繁瑣步驟,同時(shí)又規(guī)避了升級(jí)失敗所帶來的風(fēng)險(xiǎn)。隨著國家對(duì)智能電網(wǎng)改造的推進(jìn),該方法也在電力集抄終端等設(shè)備得到大面積應(yīng)用,便捷,可靠,具有極高的實(shí)用價(jià)值。

      [1] ST.STM32F103XXX User Guide,2009.

      [2] ST.STM32F10XXX閃存編程手冊(cè),2009.

      [3] ST.STM32F10x_IAP_AN,2007.

      猜你喜歡
      用戶程序指針字節(jié)
      No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
      變速箱控制系統(tǒng)Bootloader設(shè)計(jì)與實(shí)現(xiàn)
      No.10 “字節(jié)跳動(dòng)手機(jī)”要來了?
      偷指針的人
      嵌入式設(shè)備遠(yuǎn)程升級(jí)方案設(shè)計(jì)
      為什么表的指針都按照順時(shí)針方向轉(zhuǎn)動(dòng)
      簡談MC7字節(jié)碼
      基于改進(jìn)Hough變換和BP網(wǎng)絡(luò)的指針儀表識(shí)別
      電測與儀表(2015年5期)2015-04-09 11:30:42
      C8051F410單片機(jī)BootLoader的實(shí)現(xiàn)
      ARM Cortex—MO/MO+單片機(jī)的指針變量替換方法
      铜山县| 通海县| 蚌埠市| 内乡县| 榆社县| 普兰县| 清新县| 平和县| 准格尔旗| 林周县| 诏安县| 遂平县| 陈巴尔虎旗| 出国| 双牌县| 德江县| 白玉县| 庆安县| 普宁市| 迁安市| 哈巴河县| 宁夏| 扶绥县| 东丰县| 湖南省| 左贡县| 浦江县| 湘潭市| 延安市| 岢岚县| 永嘉县| 扶沟县| 丹凤县| 云林县| 山西省| 漳州市| 宣威市| 思茅市| 大理市| 赫章县| 深州市|