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

基于STM32的Bootloader實驗系統設計

2019-11-28 06:18:48顧東袁傅曉婕陳愛軍
實驗技術與管理 2019年11期
關鍵詞:嵌入式指令程序

顧東袁,傅曉婕,陳愛軍,盧 瑾

基于STM32的Bootloader實驗系統設計

顧東袁1,傅曉婕2,陳愛軍1,盧 瑾1

(1. 浙江工業大學 信息工程學院,浙江 杭州 310023;2. 浙江長征職業技術學院 計算機與信息技術系,浙江 杭州 310023)

設計了一套基于STM32的Bootloader實驗系統。該系統主要完成引導加載和用戶交互兩大功能,存儲方式采用“多系統存儲”的結構設計,引導加載過程中設計了3種不同的工作模式,用戶交互部分分權限設計了不同的指令。該系統為不同層次的學生提供相應難度的實踐鍛煉,引導學生鞏固理論知識、積極探索、提高創新能力。

嵌入式系統;實驗系統;STM32;Flash

嵌入式系統是一門把“硬件、軟件融合在一起”和具有較強實踐性的課程,傳統的8051單片機教學和“ARM+Linux”的嵌入式教學方式亟待改進,當前嵌入式已成為消費電子領域的主流技術,課程實驗的內容更應體現互聯網、物聯網時代的最新應用[1]。

隨著近年來物聯網的飛速發展,具有聯網功能的智能硬件設備不斷涌現,設備中的固件需頻繁在線更新,在此類應用中Bootloader發揮著非常重要的作用[2-4]。目前Bootloader大多針對高性能處理器和存儲器資源充裕的嵌入式平臺,功能強大、全面,但相對復雜[5],對于實驗教學來說很難做到讓學生全面、深入地了解,大多僅停留在使用層面,無法滿足實驗教學的要求[6-7]。

為此,本文結合當前主流的高性能、低成本、低功耗的STM32微處理器,設計了一套面向低端嵌入式平臺的Bootloader實驗系統。該系統采用“多系統存儲”的結構設計,同時結合物聯網應用中的特點,對傳統的引導加載過程進行了優化調整,進一步保證嵌入式硬件設備運行可靠性??紤]到實驗中的難易程度,在軟件實現上對一些操作進行了函數封裝供學生調用,滿足不同層次學生的實驗要求。

1 工作原理和實驗平臺

1.1 Bootloader工作原理

嵌入軟件系統一般由引導加載程序(Bootloader)和用戶應用系統這兩部分代碼構成,Bootloader是設備上電后最初要運行的代碼[8]。一般首先要完成硬件資源的初始化,實現處理器內部寄存器和部分相關設備的初始化,使其處于確定和可訪問狀態。初始化完成后,Bootloader系統會主動獲取設備的狀態,并根據各狀態選擇直接引導至用戶應用系統或啟動Bootloader主程序,進入用戶交互界面。其引導基本過程見圖1。

圖1 Bootloader程序引導過程

1.2 實驗硬件平臺

在嵌入式系統應用環境中,Bootloader對于硬件配置有很強的依賴性。因此,在嵌入式應用環境中建立一個通用的Bootloader幾乎是不可能[8-9]。實驗過程中將使用自制的STM32實驗開發板作為硬件平臺,實物圖見圖2。該實驗開發板主要面向互聯網創新應用實驗和學生創新實踐,采用了ST公司基于ARM Cortex-M4內核的STM32F427作為主控MCU,該MCU具有高達180 MHz處理速度和1 MB片內存儲,同時配置了片外Flash存儲和TF存儲。片外Flash存儲采用華邦SPI Flash芯片W25Q64,將用于存儲程序和數據的容量擴展到了8 MB;TF存儲使用常見的micro SD卡,利用MCU提供的SDIO接口實現。上述硬件資源的配置完全滿足Bootloader實驗開展的基本要求。

圖2 實驗平臺設備實物圖

2 系統設計

2.1 總體框架

以往Bootloader通常需完成用戶程序引導和升級固件下載兩塊功能,升級固件下載一般通過USB DFU協議和串口YModem協議等方式實現[10-11]。但在物聯網、互聯網相關應用中,原本Bootloader中的升級固件下載功能基本移到了用戶應用程序中實現,Bootloader僅需在系統重啟后完成新程序的引導[12]。這樣可大大簡化Bootloader的設計,同時可應用于更多的低端MCU中。

本文設計的Bootloader系統主要完成引導加載和用戶交互兩大功能,存儲方式采用了“多系統存儲”結構設計,可有效地避免因程序更新失敗或其他問題導致嵌入式設備無法啟動。Bootloader整體的架構如圖3所示,交互指令主要以選單(菜單)的方式提供管理、模式設置等功能;引導加載根據參數標志位進行應用程序的重定位;系統在無法進行正常引導的情況下,可恢復出廠設置。

圖3 Boot Loader架構圖

2.2 存儲分區設計

根據“多系統存儲”結構設計和實驗硬件平臺的特點,將實驗開發板中的STM32F427微處理器片內的1 MB Flash分為Bootloader引導加載程序區32 KB、應用程序1區384 KB、應用程序2區384 KB、參數區16 KB以及保留區128 KB,片外W25Q64的8 MB Flash存放出廠固件程序512 KB和參數備份區16 KB。存儲分區結構如圖4所示。

(1)引導加載程序區為Bootloader引導程序,地址為0X08000000-0X08007FFF。

(2)參數區分2塊存儲,一塊位于片內Flash,緊跟Bootloader引導程序,地址為0X08008000- 0X0800BFFF;另一塊為參數的備份區,位于片外Flash,緊跟出廠固件程序,地址為0X080000-0X083FFF。

(3)應用程序區分3塊區域存儲:位于片內Flash中的應用程序1區和應用程序2區,用于升級過程中固件的切換;片外Flash存儲出廠固件,主要用于固件備份。應用程序1區地址0X08020000—0X0807FFFF,應用程序2區地址0X08080000—0X080DFFFF,出廠固件地址0X000000—0X07FFFF。

圖4 存儲分區圖

參數區中存儲的各個參數由應用程序與Bootloader引導程序共同維護,作為兩部分程序通信的橋梁。參數區中各字段含義見表1。

表1 參數區各字段含義說明

2.3 交互指令

在Bootloader程序啟動并完成必要的硬件資源初始化后,等待串口的輸入信息執行不同的指令。系統提供了如表2所示的各類指令。同時考慮到有些指令除了使MCU更好地工作外,也能破壞MCU正常運行及代碼的保護,系統中設置了普通和管理員兩種工作權限。

表2 菜單功能說明表

2.4 引導加載流程

引導加載是Bootloader的核心功能,系統中將加載過程分為3種模式:正常模式、升級模式和異常模式。執行流程如圖5所示,通過檢查參數區中的FlagUpgrade和EnableAPP來決定執行的動作。

圖5 引導加載執行流程

(1)正常模式。正常模式中不對參數區中的參數做任何修改,只根據有效APP號在取得應用程序的首地址后實現跳轉。

(2)升級模式。在應用程序中已實現了新固件的下載、校驗和存儲,該模式中僅需更改參數區的有效APP號,再執行正常模式的流程。

(3)異常模式。當兩塊應用程序區都無法正常運行時,通過異常模式進行預置出廠固件的恢復。該模式中將片外出廠預置的固件拷貝至片內應用程序1區,并更改參數區的各參數,最后通過軟復位重啟設備。如遇預置的出廠固件有問題時,可通過外部TF卡內的固件恢復到出廠固件區,作為最后一道安全保障。

3 軟件設計

本系統開發環境選用MDK KEIL工具軟件,采用C語言編程。考慮到學生實驗過程中對代碼的可復用性,對核心部分的實現代碼進行了不同程度的封裝,整個Bootloader的軟件開發包含了大量的參數邏輯判斷、Flash操作和程序跳轉,對該部分內容做了重點優化設計。

3.1 參數結構體

在Bootloader整個過程中,大部分地方都涉及各類參數的讀取、更新等操作。為了使代碼結構更為清晰、簡潔,對圖5中的各參數用結構體進行如下封裝:

typedef struct _PARM_CONFIG{

uint8_t ucFlagUpgrade;/*升級標志位*/

uint8_t ucEnableAPP; /*當前有效APP號*/

uint32_t unAPP1Version;/*應用程序1區固件版本號*/

……

}parm_config;

3.2 Flash操作

整個開發過程中涉及到片內、片外的Flash寫入、擦除、讀取操作,考慮到STM32的Flash操作比較繁瑣、復雜,對Flash的3種操作進行了函數封裝,學生只需傳入必要的參數即可實現,讓學生的注意力更多地集中在Bootloader工作流程上。

Flash擦除函數:IoT_Flash_Erase(eiot_partition partition, uint32_t off_set, uint32_t size);

Flash寫入函數:IoT_Flash_Write(eiot_partition partition, volatile uint32_t* off_set, uint8_t* inbuffer, uint32_t inbuffer_length);

Flash讀取函數:IoT_Flash_Read(eiot_partition partition, volatile uint32_t* off_set, uint8_t* outbuffer, uint32_t outbuffer_length);

3.3 程序跳轉

程序跳轉是Bootloader最基本且最重要的功能,參照官方STM32的IAP技術原理,使用匯編語言編寫[13],跳轉函數為Iap_Load_App(uint32_t appxaddr)。

void Iap_Load_App(uint32_t appxaddr){

if(((*(vu32*)appxaddr) & 0x2FFE0000) == 0x20000000){

/*確定復位中斷向量起始地址*/

MSR_MSP(*(vu32*)appxaddr);

Jump_to_App(); //跳轉到用戶程序

}

}

4 實驗結果

實驗過程中,需事先編寫好2個簡單的應用程序bin文件,如通過GPIO控制LED燈的常亮和常滅,并將編譯好的bin文件通過仿真器燒錄到起始地址為0X08020000和0X08080000兩塊區域中。計算機通過USB數據線與開發板的串口USB連接,使用串口助手進行監聽,實驗場景如圖6所示。Bootloader程序啟動后會在串口助手中打印出提示信息并等待用戶指令的輸入,根據輸入不同的指令實現所設計的功能,最終實現用戶應用程序的引導。圖7為普通權限的指令界面,圖8為管理員權限指令界面,實現了應用程序區和出廠固件區中固件的相互拷貝復制功能。

圖7 普通權限的指令執行界面

.

5 結語

基于STM32的Bootloader實驗系統已在本科生創新實踐環節和研究生必選的工程實踐課中應用,取得了良好的效果。通過設計不同難度梯度的實驗內容,可適用不同層次的學生,也為學生在既定的實驗內容下預留了一定的拓展空間。該實驗系統緊密結合物聯網、互聯網相關應用,能很好調動學生的積極性,通過實際動手操作來鞏固嵌入式系統等課程的理論知識,引導學生積極探索、提高其創新能力。

[1] 周世杰,李玉柏,李平,等.新工科建設背景下“互聯網+”復合型精英人才培養模式的探索與實踐[J].高等工程教育研究,2018(5): 11–16.

[2] 李強,羅超,夏威,等. FPGA遠程更新系統[J].儀表技術與傳感器,2014(7): 72–74.

[3] SHEN L, LI N, WANG S. Optimization on ZigBee OTA Technique[C]//Advanced Information Management, Communicates, Electronic & Automation Control Conference. IEEE, 2017: 119–122.

[4] KANG Y, CHEN J, LI B. Generic Bootloader Architecture Based on Automatic Update Mechanism[C]//2018 IEEE 3rd International Conference on Signal and Image Processing (ICSIP). IEEE, 2018: 586–590.

[5] GUO J, CHEN W. BOOTLOADER Analysis Construction and U-BOOT Porting Based on S3C2440[C]//2018 2nd IEEE Advanced Information Management, Communicates, Electronic and Automation Control Conference (IMCEC). IEEE, 2018: 1893–1897.

[6] 陳凱,魏文博,鄧明.嵌入式系統教學實驗板開發[J].實驗技術與管理,2016, 33(1): 82–85.

[7] 姚莉,倪波.基于OBE的嵌入式Linux系統開發課程教學改革研究[J].軟件導刊(教育技術),2017, 16(12): 7–11.

[8] 范蟠果,邢保毫,米曉亮,等.基于嵌入式S3C2440系統Bootloader設計與實現[J].計算機測量與控制,2016, 24(9): 12–14.

[9] KANG Y, CHEN J, LI B. Generic Bootloader Architecture Based on Automatic Update Mechanism[C]//2018 IEEE 3rd International Conference on Signal and Image Processing (ICSIP). IEEE, 2018: 586–590.

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

[11] 陳紹煒,魏剛,王子. TMS320C6416程序以太網遠程更新技術研究[J].現代電子技術,2014, 37(12): 125–128.

[12] CHANDRA H, ANGGADJAJA E, WIJAYA P S, et al. Internet of Things: Over-the-Air (OTA) firmware update in Lightweight mesh network protocol for smart urban development[C]// Communications (APCC), 2016 22nd Asia-Pacific Conference on. IEEE, 2016: 115–118.

[13] “STM32F427/437”[EB/OL]. [2019-01-16]. https://www.st.com/ en/microcontrollers/stm32f427-437.html?querycriteria=productId=LN1789.

Design of Bootloader experimental system based on STM32

GU Dongyuan1, FU Xiaojie2, CHEN Aijun1, LU Jin1

(1. College of Information Engineering, Zhejiang University of Technology, Hangzhou 310023, China; 2. Department of Computer and Information Technology, Zhejiang Changzheng Vocational and Technical College, Hangzhou 310023, China)

A set of Bootloader experimental system based on STM32 is designed. This system mainly completes two functions such as the boot loading and user interaction. The storage mode adopts the structure design of “multi-system storage” to design the three different working modes in the boot loading process and set up different instructions in the user interaction part with different privileges. This system provides practical exercises with corresponding difficulty for students at different levels, and guides them to consolidate theoretical knowledge, actively explore and improve their innovative ability.

embedded system; experimental system; STM32; Flash

TP368.2;G642

A

1002-4956(2019)11-0089-05

10.16791/j.cnki.sjg.2019.11.022

2019-03-11

浙江省自然科學基金項目(LY16F050009);浙江省公益技術應用研究計劃項目(2017C33149);浙江工業大學創新性實驗項目(“基于互聯網的積木式嵌入式系統實驗設計”);浙江工業大學課堂教學改革項目(KG201814)

顧東袁(1980—),男,浙江海寧,碩士,實驗師,主要研究方向為嵌入式系統、物聯網技術。E-mail: star918@163.com

猜你喜歡
嵌入式指令程序
聽我指令:大催眠術
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
搭建基于Qt的嵌入式開發平臺
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
Altera加入嵌入式視覺聯盟
主站蜘蛛池模板: 99re在线观看视频| 国内精品伊人久久久久7777人| 98超碰在线观看| www欧美在线观看| 欧美日韩理论| 欧美乱妇高清无乱码免费| 伊人色综合久久天天| 久久久久无码国产精品不卡| 国产精品七七在线播放| 米奇精品一区二区三区| 久热中文字幕在线观看| 喷潮白浆直流在线播放| 精品一区二区三区四区五区| 五月激情婷婷综合| 精品视频91| 91视频青青草| 欧美日韩国产系列在线观看| 色婷婷在线影院| 超清无码一区二区三区| 久久这里只有精品23| 国产乱视频网站| 91精品综合| 久久久久88色偷偷| 日韩AV手机在线观看蜜芽| 久久国产黑丝袜视频| 激情综合婷婷丁香五月尤物| 免费无遮挡AV| 国产午夜精品鲁丝片| 成年人国产网站| 青青操国产视频| 午夜国产精品视频| 午夜不卡福利| 精品久久香蕉国产线看观看gif| 欧美特黄一免在线观看| 国产91视频观看| 日韩a级片视频| 欧美一级99在线观看国产| 高清国产在线| 久久国产免费观看| 天堂在线www网亚洲| 澳门av无码| 午夜福利免费视频| 色网站免费在线观看| 色综合久久无码网| 国产乱码精品一区二区三区中文 | 国产高清在线精品一区二区三区 | 手机在线免费不卡一区二| 欧美日韩亚洲国产主播第一区| 国产成人免费视频精品一区二区| 综合久久五月天| 国产精品9| 老司机精品一区在线视频| 色综合天天娱乐综合网| 成人在线观看不卡| 色综合天天娱乐综合网| 99在线视频网站| 中文字幕第1页在线播| 欧美区一区二区三| 欧美精品在线免费| 日韩黄色在线| 午夜毛片免费观看视频 | 美女被操91视频| 国产精品毛片在线直播完整版| 特级精品毛片免费观看| 成人无码区免费视频网站蜜臀| 亚洲国产黄色| 日韩高清一区 | 麻豆精品视频在线原创| 久久精品日日躁夜夜躁欧美| 午夜性刺激在线观看免费| 亚洲国产av无码综合原创国产| 国产精品黑色丝袜的老师| 欧美日本在线观看| 亚洲制服丝袜第一页| 亚洲色图综合在线| 人妻一区二区三区无码精品一区 | 精品无码一区二区三区电影| 99视频国产精品| 国产鲁鲁视频在线观看| 成人在线观看一区| 国内精品久久久久鸭| 国产欧美日韩一区二区视频在线|