亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于STM32處理器的WSN節(jié)點固件在線系統(tǒng)升級方法

        2016-06-08 05:48:55蔣存波
        計算機應用與軟件 2016年5期
        關鍵詞:方法

        蔣存波 焦 陽

        (桂林理工大學信息科學與工程學院 廣西 桂林 541004)

        ?

        基于STM32處理器的WSN節(jié)點固件在線系統(tǒng)升級方法

        蔣存波焦陽

        (桂林理工大學信息科學與工程學院廣西 桂林 541004)

        摘要為滿足無線傳感網(wǎng)中節(jié)點設備的功能升級和系統(tǒng)重構(gòu)需要,研究基于Cortex-Mx核的嵌入式系統(tǒng)固件IAP更新升級方法。利用命令請求加身份驗證的方式觸發(fā)升級,利用分拆函數(shù)將代碼拆分成128字節(jié)信息塊并將其組成138字節(jié)的ModBus報文進行傳輸,利用CRC進行數(shù)據(jù)校驗,采用應答機制實現(xiàn)流量控制,利用Flash識別函數(shù)區(qū)分不同的Flash類型,利用Flash寫入函數(shù)滿足片內(nèi)片外Flash、不同參數(shù)NorFlash和NandFlash編程需要。經(jīng)實驗測試,該方案能夠?qū)崿F(xiàn)WSN節(jié)點的固件升級與WSN在系統(tǒng)動態(tài)重構(gòu)需要。

        關鍵詞嵌入式系統(tǒng)WSN固件在線升級ModBus協(xié)議

        0引言

        隨著現(xiàn)代電子技術、計算機技術、控制技術的發(fā)展,物聯(lián)網(wǎng)技術得到迅速發(fā)展及應用。在物聯(lián)網(wǎng)系統(tǒng)中有許多基于ARM-Cortex-Mx(x=0,1,3)核的WSN節(jié)點,這些節(jié)點在布置完畢后,依據(jù)應用要求的變化需要在線進行固件更新升級[1,2],由于固件大小差異很大,一些可存儲于片內(nèi)Flash中,還有一些需要存儲于外擴NorFlash或NandFlash中。ISP(in-system programming)方法可以實現(xiàn)在系統(tǒng)編程,但需要配置處理器的boot引腳,不適用WSN節(jié)點等的在系統(tǒng)升級要求。ST提供的IAP方法,不支持Flash擴展,亦不能完全滿足用戶對產(chǎn)品的升級需要。本文介紹一種IAP方法,可以在應用系統(tǒng)中實現(xiàn)處理器片內(nèi)Flash和片外擴展Flash固件的在線升級,可滿足WSN節(jié)點的在線固件更新與WSN在系統(tǒng)動態(tài)重構(gòu)需要。

        1STM32處理器在線編程特點

        STM32F*使用Cortex-Mx內(nèi)核,具有體積小、功耗低、實時性好、處理能力強、支持多種可編程IO接口的特點[3],STM32F*片內(nèi)具有64~512 KB 的Flash和8~64 KB的SRAM,基于M3內(nèi)核的大容量產(chǎn)品利用FSMC還可以擴展外部Flash。

        STM32可使用ISP和IAP兩種在線編程方法。ISP方法需要通過配置boot引腳激活,使用USART接口下載程序。IAP方式通過設計者設計的操作命令進入,通過執(zhí)行IAP功能程序利用MCU支持的所有通信接口(I/Os,USB,CAN,UART,I2C,SPI等)接收命令、更新數(shù)據(jù)或代碼[4]。

        2IAP軟件設計

        2.1Flash編程方法

        STM32的片內(nèi)Flash以扇區(qū)為單位設置寫保護,每扇區(qū)4 KB,根據(jù)Flash容量不同,頁大小分為1和2 KB兩種情況。復位后,F(xiàn)lash存儲器默認為寫保護狀態(tài),也可通過軟件設置FLASH_CR寄存器中的LOCK位進行寫保護。在寫保護狀態(tài)下只能按序在FLASH_KEYR寄存器中寫入控制字CW1=0x45670123和CW2=0xCDEF89AB才能開啟對FLASH_CR的訪問權限。Flash需要擦除后再編程,最小擦除單位為頁,也可以整片擦除,編程后將Flash進行上鎖保護以防止意外寫入。STM32通過FSMC對NorFlash進行編程,由FSMC的NorFlash控制器進行管理和控制,片外NandFlash的編程方法類似于片內(nèi)Flash[5,6]。本方法采用按頁擦除的方式。片內(nèi)Flash編程函數(shù)采用(頁號+頁內(nèi)偏移)形式的邏輯地址,處理器使用線性物理地址訪問片內(nèi)Flash,需要將其轉(zhuǎn)換成邏輯地址,兩者之間的關系為:物理地址=Flash基地址+頁地址+頁內(nèi)偏移。具體可由式(1)得出:

        (1)

        其中Oreal表示Flash基地址偏移,Waddr為實際寫入地址,F(xiàn)base為Flash基地址,Pno為頁號,Psize為頁容量,Poffset為頁內(nèi)偏移,‘’為取余,Premain為頁內(nèi)剩余的半字容量。

        片外NorFlash使用物理線性地址[7],片外NandFlash的編程函數(shù)采用(單元號:塊號:頁號)形式的邏輯地址,編寫NAND_ADDRESS結(jié)構(gòu)體,通過配置結(jié)構(gòu)體確定寫入位置。

        2.2IAP設計思路

        圖1 User Flash空間分配

        將User Flash劃分為三個區(qū)域,Boot區(qū)、File區(qū)和Code區(qū)[8,9],Boot區(qū)用于存放IAP相關功能程序[10]:基本硬件驅(qū)動程序、Flash操作相關程序、通信接口管理程序、通信協(xié)議棧等,在線升級禁止對該區(qū)域進行擦除與寫操作。File區(qū)用于存放文件記錄表,大小為一頁,本文只有一條記錄,存放了應用程序的文件名和起始地址。Code區(qū)存放WSN相關功能程序、用戶其它應用程序。STM32F*中的用戶程序塊劃分如圖1所示。程序在更新過程中若出現(xiàn)掉電,失聯(lián)等情況,系統(tǒng)仍可運行Boot區(qū)的代碼,保證系統(tǒng)的穩(wěn)定性。

        在需要更新程序時,發(fā)送方服務器通過選定的通信方式向特定設備地址(ID)發(fā)送升級命令,升級命令采用RTU形式的ModBus報文傳輸,選擇功能碼42H作為升級報文,命令字CV=01作為升級命令,如表1所示。設備收到升級命令后向用戶發(fā)送身份驗證報文,在成功驗證身份后可獲得對設備的升級權限,被尋址設備進入IAP功能,以此提高程序更新的安全性。采用ModBus協(xié)議進行數(shù)據(jù)傳輸,設備在收到2 KB有效數(shù)據(jù)時進行Flash編程操作。

        表1 命令報文

        對于一個任意長度的數(shù)據(jù)文件,發(fā)送方服務器利用報文組織函數(shù)Protocol_Packed(*pBuffer)將其拆分成n個128 bit的信息塊,并為每個信息塊添加首部和校驗值組織成138 bit的RTU形式的ModBus數(shù)據(jù)幀[10],*pBuffer為數(shù)據(jù)文件的首地址。通過應答機制實現(xiàn)發(fā)送方與接收方的速度傳輸協(xié)調(diào),實現(xiàn)流量控制。

        接收方利用解包函數(shù)Protocol_Unpacked()得到有效數(shù)據(jù),并將其存儲到SRAM的緩沖池中,緩沖池大小為2 KB,緩沖池滿即將數(shù)據(jù)寫入Flash。利用Flash識別函數(shù)Flash_rec(Flash_ID,Psize)識別片內(nèi)Flash、擴展NorFlash和NandFlash,F(xiàn)lash_ID為Flash類型號,0表示片內(nèi)Flash,1表示NandFlash,2表示NorFlash,Psize為頁大小。通過配置不同的存儲器訪問時序參數(shù)匹配不同F(xiàn)lash的寫入速度,考慮到最大的讀/寫訪問時間,F(xiàn)SMC內(nèi)部各部分的延遲,存儲器內(nèi)部各部分的延遲,NorFlash由式(2)、式(3)得出,NandFlash由式(2)、式(3)、式(4)得出。

        (2)

        (3)

        (4)

        其中,Twc,Trc為所選芯片的寫/讀操作周期長度,Twp為所選信號的寫信號持續(xù)長度,TAVQV為地址有效到數(shù)據(jù)有效的時間域,Tsu(Data_NE),Ttv(A_NE)為STM32特征參數(shù),分別表示從數(shù)據(jù)有效到FSMC片選有效與從FSMC片選有效到地址有效。

        根據(jù)Flash_rec的識別的結(jié)果調(diào)用不同的Flash寫函數(shù)STMFLASH_Write(WriteAddr,*pBuffer,NumToWriter)寫入Flash,若為片內(nèi)Flash,WriteAddr需由式(1)轉(zhuǎn)換為邏輯地址,若為NorFlash,WriteAddr為物理線性地址,若為NandFlash,WriteAddr為NAND_ADDRESS結(jié)構(gòu)體指針。*puffer為數(shù)據(jù)指針,NumToWriter為數(shù)據(jù)長度。利用STMFLASH_Read(WriteAddr,*pBuffer,NumToRead)進行回讀校驗,在數(shù)據(jù)傳輸完畢后調(diào)用庫函數(shù)中的上鎖函數(shù)設置寫保護并返回成功標志,完成本次升級。

        2.3數(shù)據(jù)傳輸協(xié)議及校驗機制

        數(shù)據(jù)傳輸使用的協(xié)議為半雙工傳輸?shù)膕end-ack模式,基于ModBus協(xié)議[11]的RTU傳輸模式,利用留給用戶的功能編號41H~48H定義:傳輸命令與應答等用戶報文。選擇功能碼F_C=65(41H)作為傳輸命令與應答報文,其報文格式如表2、表3所示。

        表2 數(shù)據(jù)幀報文

        表3 響應幀報文

        發(fā)送方服務器發(fā)送數(shù)據(jù)幀,并在成功發(fā)送一幀后將幀序號自動增加,范圍為0~65 536。其數(shù)據(jù)幀長度最短為11字節(jié),最長為259字節(jié)。

        本方法采用循環(huán)冗余校驗(CRC)和延時重傳機制保證數(shù)據(jù)的可靠性。接收方調(diào)用Protocol_Unpacked()函數(shù)進行解包操作得到幀序號、有效數(shù)據(jù)長度、有效代碼、校驗值。于此同時計算數(shù)據(jù)幀的CRC16校驗碼,以幀序號和校驗值作為解包成功的判定條件。若解包成功,則發(fā)送響應報文,提示發(fā)送方準備發(fā)送下一幀,若解包失敗,則不發(fā)送響應報文,發(fā)送方在超過1000 ms仍未收到響應就會啟用重傳機制,在連續(xù)發(fā)送十次數(shù)據(jù)仍得不到響應報文的情況下則執(zhí)行報錯機制。

        2.4程序設計

        在keil Vision4 IDE中使用C語言進行程序設計,使用ST為用戶提供的庫函數(shù)進行軟件編寫,本方法所需的目標代碼bin文件由keil內(nèi)部的fromelf工具進行轉(zhuǎn)換。IAP軟件的功能主要包括ModBus報文的接收處理和響應報文的發(fā)送,F(xiàn)lash的擦除和重寫等,F(xiàn)lash編程函數(shù)流程如圖2所示,軟件的協(xié)議傳輸流程如圖3所示。

        圖2 Flash編程函數(shù)流程圖

        圖3 協(xié)議傳輸流程圖

        利用通信接口中斷接收更新代碼,通過解包操作獲得有效數(shù)據(jù)字段,并將有效數(shù)據(jù)存入緩沖池,調(diào)用Flash編程函數(shù),完成代碼的更新和維護工作。

        3實驗驗證

        選擇芯片核心為STM32F103ZET6的設備使用 IAP方法進行下載升級,為設備外接藍牙模塊,外接AM29LV800BB與K9F8G08U0M-P兩塊Flash芯片,分別對片內(nèi)和片外的Flash進行測試,使用PC機發(fā)送測試代碼與測試數(shù)組,每組試驗經(jīng)過兩次測試。代碼的BIN文件大小與測試結(jié)果如表4所示,測試數(shù)組為從0x5A開始的遞增序列,數(shù)組大小與測試結(jié)果如表5所示,表中Y表示進行了實驗測試,N表示未進行試驗測試。

        表4 代碼測試結(jié)果

        表5 數(shù)組測試結(jié)果

        試驗結(jié)果表明,該IAP方法可以在藍牙環(huán)境下,通過軟件觸發(fā)的方式實現(xiàn)不同長度代碼的更新,能保證傳輸?shù)目煽啃?,能夠滿足片內(nèi)片外Flash程序升級的需要。

        4結(jié)語

        本文基于STM32芯片平臺設計了一種IAP在線升級方法,該方法使用ModBus協(xié)議,采用應答機制及延時重傳機制將代碼進行分段傳輸,能夠支持片內(nèi)片外Flash的編程操作,并且無需改變硬件配置,解決了WSN中節(jié)點設備固件在線升級的問題,滿足了WSN在系統(tǒng)動態(tài)重構(gòu)需要。而且此方法還可以適用于其它基于Cortex-Mx核的嵌入式產(chǎn)品。不足的是該方法只能適用于點對點的數(shù)據(jù)傳輸,日后可繼續(xù)改進,使其適用于廣播式數(shù)據(jù)傳播。

        參考文獻

        [1] 朱曉瑞,陶先平,謝宏偉,等.一種面向無線傳感網(wǎng)應用重編程的邏輯式編程語言[J].軟件學報,2014,25(2):326-340.

        [2] Gursel Serpen,Jiakai Li.AI-WSN:Adaptive and Intelligent Wireless Sensor Network[J].Procedia Computer Science,2013(20):406-413.

        [3] 李鵬.簡化家電和工業(yè)控制應用開發(fā)任務意法半導體(ST)發(fā)布STM32F0系列[J].家電科技,2012(6):28.

        [4] 張舞杰,南亦民.基于STM32F103VB的應用編程技術的實現(xiàn)[J].計算機應用,2009,29(10):2820-2822.

        [5] Guanying Wu,Ping Huang.Reducing SSD access latency via NAND flash program and erase suspension[J].Journal of Systems Architecture,2013,12(2):345-356.

        [6] 劉洲洲,張捷.基于嵌入式系統(tǒng)的NANDFlash壞塊處理和FMM實現(xiàn)[J].計測技術,2006(6):42-44.

        [7] 鄧中亮,孫靜.嵌入式設備在線系統(tǒng)升級的設計與實現(xiàn)[J].計算機工程與設計,2009,30(13):3085-3087.

        [8] 蔣建春,王正樹,馮輝宗,等.基于軟件觸發(fā)的在應用編程在線升級技術的設計與實現(xiàn)[J].計算機應用,2012(6):1721-1723.

        [9] 彭亮,沈安文,張寧,等.基于無線IAP的工業(yè)嵌入式系統(tǒng)升級技術應用[J].儀表技術與傳感器,2013(12):36-38.

        [10] 蔡利平,任家富,童銳,等,基于ARM的Nand Flash啟動分析與移植[J].計算機工程與設計,2012(3):931-935.

        [11] 劉桂臣,陽憲惠.Modbus報文有線/無線混合傳輸?shù)膶崿F(xiàn)[J].清華大學學報:自然科學版,2008(S2):1844-1847.

        ONLINE SYSTEM UPGRADING METHOD FOR WSN NODE FIRMWARE BASED ON STM32 PROCESSOR

        Jiang CunboJiao Yang

        (SchoolofInformationScienceandEngineering,GuilinUniversityofTechnology,Guilin541004,Guangxi,China)

        AbstractIn order to meet the needs of function upgrade and system reconstruction of the node devices in WSN (wireless sensor network), we studied the Cortex-Mx core-based renewing and upgrading method for embedded system firmware IAP. It triggers the upgrade by using the way of command requests plus authentication, splits the code into 128 byte information block by utilising partition function and then composes them into ModBus packet with 138 bytes for transmission. It employs CRC for data checking, adopts response mechanism to achieve flow control, utilises Flash recognition function to distinguish different Flash types, and applies Flash writing function to meet the programming needs of internal and external Flash, different parameters of NorFlash and NandFlash. By testing with experiment, this scheme can realise the upgrade of WSN nodes firmware and the need of WSNs in dynamic system reconstruction.

        KeywordsEmbedded systemWSNOnline firmware upgradeModBus protocol

        收稿日期:2014-12-15。蔣存波,教授,主研領域:嵌入式系統(tǒng)及應用,自動檢測與控制裝置,計算機應用。焦陽,碩士生。

        中圖分類號TP368.1

        文獻標識碼A

        DOI:10.3969/j.issn.1000-386x.2016.05.056

        猜你喜歡
        方法
        中醫(yī)特有的急救方法
        中老年保健(2021年9期)2021-08-24 03:52:04
        高中數(shù)學教學改革的方法
        河北畫報(2021年2期)2021-05-25 02:07:46
        化學反應多變幻 “虛擬”方法幫大忙
        變快的方法
        兒童繪本(2020年5期)2020-04-07 17:46:30
        學習方法
        可能是方法不對
        用對方法才能瘦
        Coco薇(2016年2期)2016-03-22 02:42:52
        最有效的簡單方法
        山東青年(2016年1期)2016-02-28 14:25:23
        四大方法 教你不再“坐以待病”!
        Coco薇(2015年1期)2015-08-13 02:47:34
        賺錢方法
        av福利资源在线观看| a亚洲va欧美va国产综合| 久久国产精品不只是精品| 青青草针对华人超碰在线| 草逼视频免费观看网站| 亚洲av永久无码一区二区三区| 亚洲精品久久久无码av片软件| www.日本一区| 亚洲中文字幕一区精品| 精品九九人人做人人爱| 日本在线观看| 日韩精品精品一区二区三区| 午夜精品久久99蜜桃| 国产成人a在线观看视频免费| 国产午夜激无码av毛片| 黑人巨大亚洲一区二区久| 日韩av一区二区不卡| yw尤物av无码国产在线观看| 97se亚洲国产综合自在线图片| 精品午夜一区二区三区| 国产熟女一区二区三区不卡| 成l人在线观看线路1| 在线观看视频亚洲| 视频一区二区免费在线观看| 日本一本免费一二区| 亚洲老妇色熟女老太| 久久国产精品免费一区六九堂| 网站在线观看视频一区二区| 亚洲av日韩aⅴ无码色老头| 亚洲欧美另类自拍| 在线观看日韩精品视频网站| 精品亚洲一区二区三区四区五区 | 久久久久久久波多野结衣高潮| 爽妇网国产精品| 免费国产自拍视频在线观看| 夫妻免费无码v看片| 97午夜理论片在线影院| 亚洲欧美成人久久综合中文网 | 天堂在线资源中文在线8| 国产成人无码精品午夜福利a | 日日人人爽人人爽人人片av|