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

基于STM32系列電子產品的IAP研究

2017-11-18 19:57:30康燕萍程小輝黃鵬
現代電子技術 2017年22期

康燕萍 程小輝 黃鵬

摘 要: 研究一種基于STM32系列單片機實現IAP升級固件的方案,此方案對比ST官網IAP升級固件方案有較大的改進。電子產品出廠燒錄固件時無需額外燒錄BootLoader引導代碼,出廠后的電子產品可使用USB線與電腦連接,通過USB接口把需要升級的固件拷貝到電子產品自帶的外部FLASH中。STM32讀取外部FLASH中的固件對自身的FLASH數據進行升級,整個升級過程中不受斷電影響。此升級方案可應用于智能家居產品、醫療電子產品、智能家電產品等。

關鍵詞: STM32; 在線應用編程; 固件; USB; 閃存

中圖分類號: TN911?34; TP311 文獻標識碼: A 文章編號: 1004?373X(2017)22?0142?03

Abstract: A research scheme of IAP firmware upgrading based on SCMs in STM32 series is introduced, which is improved greatly in comparison with the IAP firmware upgrading scheme shown in ST official website. The electronic product factory doesn′t need to burn the BootLoader guidance code in its electronic products additionally when burning the products′ firmwares. The final electronic product is connected with computer via USB cable. The firmware needing upgrade is copied into the external FLASH built?in electronic products through USB interface. The FLASH data of the firmware itself in external FLASH is read by means of STM32 for upgrade, and the whole upgrade process isn′t affected by power outage. This upgrade scheme can be applied to the intelligent household products, medical electronic products and intelligent appliances.

Keywords: STM32; IAP; firmware; USB; FLASH Memory

0 引 言

STM32控制器內嵌ARM Cortex?M3內核,具有高性能、低成本、低功耗等特點,受到越來越多電子開發人員青睞。STM32具有IAP功能,可實現用戶或售后技術人員對出廠后的電子產品進行固件升級。

IAP的具體應用可通過不同方式實現。對比文獻[1]方案和ST官網的IAP方案:文獻[1]方案與ST官網的IAP方案相同,將BootLoader代碼存放在FLASH中,執行BootLoader之前先將BootLoader代碼拷貝到單片機的RAM中執行,對整片FLASH進行數據升級[1];ST官網方案的缺點是固件升級過程中不能斷電,如果斷電將損壞原有的固件,導致STM32不能正常啟動。文獻[2?3]在ST官網的方案上進行改進,BootLoader代碼存放在FLASH中,并在FLASH中執行BootLoader代碼,固件升級時跳過BootLoader代碼存儲區,對BootLoader存儲區域之外的FLASH進行數據升級,確保BootLoader代碼的完整性,可解決固件升級過程中斷電損壞原有固件的問題[2?3]。但使用PC機的超級終端中的Ymodem協議通過串口發送固件。此方案在使用過程中存在較大的局限性,其要求PC機必須要有串口。如果PC機有串口,那么使用IAP升級的意義不大,因為通過串口可使用STM32已固化的BootLoader代碼進行ISP操作。文獻[4?5]對方案進一步改進使用SD卡或USB接口進行固件升級,這樣可以解決PC機串口局限性問題[4?5],但仍然使用兩個固件的方案,對于產品生產而言增加了固件燒錄的工作量,也不便于固件的維護。文獻[6]對兩個固件進行手工合并,將兩個固件合并成一個固件,可以解決固件燒錄的工作量大的問題[6]。但是由于手工操作,降低了固件合并的可靠性。文中方案對比上述方案有進一步改進。文中的改進方案在程序設計時也使用兩個工程,但最終將BootLoader程序工程的固件通過編譯器鏈接到應用程序工程代碼中,最終生成一個固件,減少產品生產燒錄固件的工作量。由于固件合并是由編譯器自動完成,增加了固件合并的可靠性。IAP升級固件時通過PC機的USB端口拷貝固件到電子產品的外部FLASH中,然后進行升級固件,解決了PC機要求有串口的局限性。BootLoader存放在0x08000000~0x08004FFF地址區域,上電后先執行BootLoader代碼,滿足條件才跳轉至應用程序執行,固件升級過程中跳過BootLoader存儲區域進行數據升級,保證BootLoader代碼的完整性,解決了固件升級過程中斷電損壞固件的問題。若STM32為互聯型產品可通過U盤連接到電子產品USB端口進行升級固件。文中以STM32F103VCT6[7]控制器為例,對IAP升級固件方案做詳細介紹。

1 硬件設計框圖

文中介紹的IAP升級固件方案需要一定的硬件電路支持。支持IAP升級固件的硬件框圖如圖1所示。endprint

由圖1可見所需要的硬件電路比較簡單:需要將STM32F103VCT6內嵌USB模塊的USB接口引出,用于連接PC機傳輸數據;增加一個外部的FLASH存儲器。AT45DB041的最大存儲容量[8]為528 KB。此容量應大于STM32的FLASH容量,在IAP升級固件過程中用于存儲要升級的固件。

2 程序設計

2.1 程序架構

程序設計時分為兩個工程,分別為BootLoader程序工程和應用程序工程,程序架構如圖2所示。

BootLoader代碼里需要包含SPI驅動,AT45DB041器件驅動,Fats文件系統。BootLoader代碼是通過檢查AT45DB041存儲器中是否存在update.bin文件來判斷是否需要進行固件升級操作。由于BootLoader代碼最終需要鏈接到應用程序中執行,應用程序的中斷被重新映射到0x08005000地址開始,因此BootLoader代碼里面需要關閉所有中斷,SPI模塊也只能通過查詢方式進行數據收發。

應用程序中需包含SPI驅動,AT45DB041器件驅動,Fats文件系統,還需包含USB驅動。應用程序執行過程中,若有用戶需要對電子產品進行固件升級,應用程序將啟動USB模塊,將電子產品用USB線連接到電腦,將固件改名為update.bin后拷貝到AT45DB041的模擬U盤中,重啟后可執行固件升級操作。

2.2 FLASH存儲區域劃分

STM32F103VCT6為大容量產品,具有256 KB FLASH,48 KB RAM[7]。256 KB的FLASH存儲區共分為128頁,每頁大小為2 KB。將存儲區域分為兩部分,地址0x08000000~0x08004FFF共20 KB空間用于存放BootLoader代碼,地址0x08005000~0x0803FFFF共236 KB的空間用于存放電子產品實現功能的應用程序代碼。BootLoader程序代碼與應用程序代碼用兩個不同的工程編譯。BootLoader編譯完成之后生成bin固件,使用IAR編譯器鏈接到應用程序的工程文件中,最后生成一個最終的bin文件。最后的這個文件為產品生產或產品固件升級的程序固件。STM32 FLASH區域劃分如圖3所示。

2.3 固件升級流程

STM32系列的MCU上電啟動后會自動跳轉到0x08000000地址開始執行[9]。由于BootLoader代碼位于0x08000000地址開始,因此每次上電都應開始運行BootLoader代碼。在BootLoader代碼里檢查是否有升級固件文件,若有則進行升級操作,升級完成后將固件文件刪除;若沒有則跳轉至應用程序代碼執行[10]。固件升級工作流程如圖4所示。升級固件時需要注意一下幾點:

(1) 打開update.bin文件后讀取前20 KB數據丟棄,因為前20 KB數據是BootLoader代碼,此部分代碼不需要升級。

(2) 升級固件時應該從0x08005000地址開始寫FLASH,不能對0x08000000~0x08004FFF的地址區域進行寫FLASH操作,此區域為BootLoader代碼區域,如果進行寫操作,則會導致整個固件損壞[11]。

3 IAR編譯器相關配置

3.1 icf文件配置

每一款芯片的程序使用IAR編譯器編譯時都會使用到一個.icf后綴名的文件。此文件的作用是定義芯片的內存區域,一般情況下不需要修改此文件。STM32F103VCT6的FLASH被劃分為2個區域,分別用于存放不同功能的程序代碼。為了能將程序代碼存放到指定的FLASH區域,需要修改icf文件。由于BootLoader代碼與應用程序為不同的程序工程,因此需要修改2份icf文件。BootLoader程序工程的icf文件修改如下:

3.2 bin文件鏈接

改進方案的優點在于將BootLoader的bin文件使用IAR編譯器鏈接到應用程序的工程中,最終生成一個bin文件。減少產品在生產上的程序燒錄工作和程序維護工作。將BootLoader工程生成的bin文件改名為bootloader.bin。并將此文件拷貝到應用程序的工程目錄下。然后打開應用程序工程,在workspace窗口選擇工程名,單擊鼠標右鍵選擇Option?>Linker?>Input。Bin文件鏈接配置如圖5所示。

Keep symbols可隨意填寫,文中填寫bootloader,此處與下面的symbols編輯框填寫一致。由于bootloader.bin放置在應用程序工程目錄文件路徑應該填寫$PROJ_DIR$\bootloader.bin。Section編輯框填寫.bootloader,與icf文件中配置的一致。鏈接后對工程進行編譯,如果不報錯,說明鏈接成功,可打開.map文件查看鏈接bin文件的地址分配。

4 結 語

經測試可用此方案對STM32F103VCT6進行固件升級。固件升級過程中對電子產品進行人為斷電,重新上電后可繼續重新升級,不受斷電影響。整個固件升級過程需要約1 min。對此方案還可進行延伸改進,如果STM32為互聯型產品,USB可支持OTG功能,可使用U盤連接到電子產品,將固件文件從U盤中拷貝到AT45DB041中,無需PC機參與。也可將AT45DB041改用SD卡,先將固件文件拷貝到SD中,再將SD卡插到電子產品中進行固件升級。

參考文獻

[1] 陳峰峰,胡毅,許艷.STM32F10x在應用中編程的實現方法[J].單片機與嵌入式系統應用,2009(9):25?27.

[2] 張舞杰,南亦明.基于STM32F103VB的應用編程技術的實現[J].計算機應用,2009,29(10):2820?2822.

[3] 李興鶴,蔡亮,宋吉波,等.STM32用戶基于IAP的程序更新技術[J].單片機與嵌入式系統應用,2012(1):74?75.

[4] 王黨利,寧生科,馬保吉.基于STM32F10x引導程序實現USB在應用中編程[J].應用天地,2010,29(11):68?70.

[5] 顏秋男,胡毅.STM32F103VB的SD卡在應用編程設計[J].單片機與嵌入式系統應用,2012(2):29?31.

[6] 唐小平,廖美英,張祥.基于STM32平臺的IAP設計實現[J].兵工自動化,2014,33(9):94?96.

[7] 陳宮,王三勝,張慶榮,等.基于STM32F103VCT6的微位移控制系統設計[J].現代電子技術,2012,35(3):144?146.

[8] 張杏珍,孫健.IC卡芯片AT45DB041的原理及應用[J].現代電子技術,2005,28(10):17?19.

[9] 程霄.基于邊坡監測系統的無線傳感器網絡關鍵技術研究[D].重慶:重慶大學,2014:56.

[10] 周天兵,劉國忠.單片機程序遠程升級技術[J].儀表技術,2011(9):25?27.

[11] 李靜波.嵌入式系統固件升級的設計[J].今日電子,2013(10):53?55.endprint

主站蜘蛛池模板: 动漫精品中文字幕无码| 91麻豆精品视频| 国产资源免费观看| 成人另类稀缺在线观看| 国产女人综合久久精品视| 亚洲欧美另类视频| 三级欧美在线| 欧美日韩动态图| 久久99精品久久久大学生| 亚洲欧美日韩色图| 又爽又大又黄a级毛片在线视频| 欧美国产日产一区二区| 怡春院欧美一区二区三区免费| 99视频只有精品| 日本a级免费| 精品福利国产| 国产精品青青| 国产成人综合亚洲网址| 国产综合精品一区二区| 国产亚洲欧美另类一区二区| 呦视频在线一区二区三区| 91无码视频在线观看| 国产美女无遮挡免费视频网站| 一本久道热中字伊人| 无码AV日韩一二三区| 免费国产高清精品一区在线| 国产极品美女在线| 国产精品天干天干在线观看| 亚洲天堂2014| 伊人蕉久影院| 免费xxxxx在线观看网站| 伊人久久婷婷| 污网站在线观看视频| 欧美天堂在线| 中文字幕在线一区二区在线| 国产永久在线观看| 亚洲欧美激情另类| 亚洲精品中文字幕午夜| 国产午夜福利在线小视频| 欧美激情综合| 国产啪在线| 欧美国产在线看| 九九久久精品国产av片囯产区| 日韩欧美中文| 色国产视频| 亚洲乱亚洲乱妇24p| 国产精品极品美女自在线网站| 台湾AV国片精品女同性| 亚国产欧美在线人成| 国产乱子伦无码精品小说| 在线精品自拍| 永久在线精品免费视频观看| 亚洲色图综合在线| 亚洲动漫h| 欧美a级完整在线观看| 免费国产小视频在线观看| 91热爆在线| 精品视频福利| 性色一区| 91av国产在线| 97人人做人人爽香蕉精品| 免费一极毛片| 精品亚洲欧美中文字幕在线看 | 久久亚洲中文字幕精品一区 | 国产精品久久国产精麻豆99网站| 四虎永久免费在线| 国产午夜人做人免费视频| 国产精品久久久久久久伊一| 欧美视频免费一区二区三区| 中文字幕佐山爱一区二区免费| 免费视频在线2021入口| 亚洲 欧美 日韩综合一区| 精品91在线| 中文字幕啪啪| 又污又黄又无遮挡网站| 性视频一区| 婷婷激情亚洲| 福利一区在线| 国产精品福利尤物youwu| 91免费国产高清观看| 精品国产电影久久九九| 精品夜恋影院亚洲欧洲|