999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于STM32處理器的WSN節點固件在線系統升級方法

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

蔣存波 焦 陽

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

?

基于STM32處理器的WSN節點固件在線系統升級方法

蔣存波焦陽

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

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

關鍵詞嵌入式系統WSN固件在線升級ModBus協議

0引言

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

1STM32處理器在線編程特點

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

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

2IAP軟件設計

2.1Flash編程方法

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

(1)

其中Oreal表示Flash基地址偏移,Waddr為實際寫入地址,Fbase為Flash基地址,Pno為頁號,Psize為頁容量,Poffset為頁內偏移,‘’為取余,Premain為頁內剩余的半字容量。

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

2.2IAP設計思路

圖1 User Flash空間分配

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

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

表1 命令報文

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

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

(2)

(3)

(4)

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

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

2.3數據傳輸協議及校驗機制

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

表2 數據幀報文

表3 響應幀報文

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

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

2.4程序設計

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

圖2 Flash編程函數流程圖

圖3 協議傳輸流程圖

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

3實驗驗證

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

表4 代碼測試結果

表5 數組測試結果

試驗結果表明,該IAP方法可以在藍牙環境下,通過軟件觸發的方式實現不同長度代碼的更新,能保證傳輸的可靠性,能夠滿足片內片外Flash程序升級的需要。

4結語

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

參考文獻

[1] 朱曉瑞,陶先平,謝宏偉,等.一種面向無線傳感網應用重編程的邏輯式編程語言[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] 李鵬.簡化家電和工業控制應用開發任務意法半導體(ST)發布STM32F0系列[J].家電科技,2012(6):28.

[4] 張舞杰,南亦民.基于STM32F103VB的應用編程技術的實現[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] 劉洲洲,張捷.基于嵌入式系統的NANDFlash壞塊處理和FMM實現[J].計測技術,2006(6):42-44.

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

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

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

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

[11] 劉桂臣,陽憲惠.Modbus報文有線/無線混合傳輸的實現[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。蔣存波,教授,主研領域:嵌入式系統及應用,自動檢測與控制裝置,計算機應用。焦陽,碩士生。

中圖分類號TP368.1

文獻標識碼A

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

猜你喜歡
方法
中醫特有的急救方法
中老年保健(2021年9期)2021-08-24 03:52:04
高中數學教學改革的方法
河北畫報(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
賺錢方法
捕魚
主站蜘蛛池模板: 亚洲天堂自拍| 国产又大又粗又猛又爽的视频| 天天躁狠狠躁| 欧美亚洲一区二区三区导航| 国产流白浆视频| 手机在线免费不卡一区二| 五月婷婷丁香综合| 国产一区二区三区免费观看 | 亚洲色图综合在线| 女人毛片a级大学毛片免费| 久久久久青草线综合超碰| 香蕉视频在线观看www| 99热亚洲精品6码| 亚洲无码免费黄色网址| 2021国产精品自产拍在线观看| 国产区在线看| 国产精品微拍| 欧美精品啪啪| 欧美一区日韩一区中文字幕页| 国产精品毛片一区视频播| 久久人体视频| 免费看美女毛片| 国产在线第二页| 精品国产黑色丝袜高跟鞋| 在线观看国产精品第一区免费 | 欧美日韩国产一级| 国产麻豆精品在线观看| 亚洲色婷婷一区二区| 亚洲日韩国产精品综合在线观看| 亚洲一区二区精品无码久久久| 玩两个丰满老熟女久久网| 四虎永久在线| 精品伊人久久大香线蕉网站| 亚洲国产亚洲综合在线尤物| 五月婷婷丁香综合| 九九这里只有精品视频| 99热国产这里只有精品9九| 国产精品白浆无码流出在线看| 美女扒开下面流白浆在线试听| 精品少妇人妻无码久久| 亚洲成AV人手机在线观看网站| 亚洲最新地址| 亚洲精品成人片在线观看| 色综合久久综合网| 久久综合伊人77777| 精品少妇人妻一区二区| 老司国产精品视频| 大陆精大陆国产国语精品1024 | 亚洲精品自产拍在线观看APP| 激情无码视频在线看| 久久精品人人做人人综合试看| 狠狠色丁香婷婷| 狠狠色丁香婷婷综合| 秋霞一区二区三区| 亚洲一区二区三区麻豆| 久青草免费在线视频| 成人免费一级片| 国产欧美精品午夜在线播放| 色噜噜狠狠色综合网图区| 香蕉久久永久视频| 久久综合五月婷婷| 99久久精彩视频| 国产18在线| 色综合五月婷婷| 色综合久久88色综合天天提莫| 国产真实乱了在线播放| 欧美日韩第三页| 久久精品中文字幕免费| 亚洲开心婷婷中文字幕| 国内熟女少妇一线天| 久久 午夜福利 张柏芝| 99久久精品国产自免费| 91福利免费视频| a级免费视频| 精品偷拍一区二区| 欧美在线视频a| 国产麻豆精品久久一二三| 亚洲高清在线天堂精品| 亚洲精品另类| 成人综合在线观看| 国模视频一区二区| 美女免费精品高清毛片在线视|