RM新时代网站-首页

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開發(fā)>基于TFTP協(xié)議實現(xiàn)STM32的IAP資料下載

基于TFTP協(xié)議實現(xiàn)STM32的IAP資料下載

2021-04-15 | pdf | 198.7KB | 次下載 | 3積分

資料介紹

0引言隨著嵌入式技術(shù)以及32位嵌入式微處理器的發(fā)展,嵌入式系統(tǒng)的應(yīng)用日益廣泛,嵌入式產(chǎn)品與人們的生產(chǎn)、生活結(jié)合得越來越緊密。然而,嵌入式系統(tǒng)的設(shè)計不可能一步到位,尤其是嵌入式軟件,需要不斷修改和完善。當(dāng)程序出錯或用戶需求變更時,傳統(tǒng)的方法是安排技術(shù)人員到現(xiàn)場或?qū)⒃O(shè)備回收對控制器芯片重新編程。這種方式費(fèi)時費(fèi)力,效率低下[1]。采用IAP(In-Application Programming)技術(shù)則可以免除拆卸設(shè)備、燒錄MCU(Microcontroller Unit)等繁瑣的過程。IAP即“在應(yīng)用中編程”,是指產(chǎn)品發(fā)布后在運(yùn)行過程中通過預(yù)留的通信接口(如USART、I2C、CANUSB、以太網(wǎng)接口等)對微控制器MCU中的軟件進(jìn)行更新升級。支持IAP技術(shù)的首要前提是微控制器必須基于可重復(fù)編程的閃存。STM32微控制器帶有可編程的內(nèi)置閃存,擁有在數(shù)量上和種類上都非常豐富的外設(shè)通信接口,因此在STM32上實現(xiàn)IAP技術(shù)是完全可行的[2]。本文針對STM32F407型號的微控制器,基于TFTP(Trivial File Transfer Protocol)協(xié)議通過網(wǎng)口實現(xiàn)IAP,可以大大節(jié)省維護(hù)升級成本, 更方便快捷[3]。1IAP工作原理在實現(xiàn)IAP功能時,MCU內(nèi)部需要有兩塊存儲區(qū),BOOT區(qū)和常態(tài)存儲區(qū)。MCU上電先運(yùn)行BOOT區(qū)代碼,檢測是否需要更新軟件,如果不需要更新,程序指針跳到常態(tài)存儲區(qū),開始執(zhí)行放在常態(tài)存儲區(qū)的內(nèi)容;如果需要更新,則先通過外設(shè)通信接口接收新的程序代碼,對常態(tài)存儲區(qū)的內(nèi)容進(jìn)行改寫,然后再跳轉(zhuǎn)執(zhí)行新寫入的程序[4]。相應(yīng)的,軟件程序代碼也分為兩部分:存放在BOOT區(qū)的BootLoader程序和存放在常態(tài)存儲區(qū)的APP程序。BootLoader程序負(fù)責(zé)通過某種通信方式(如USB、USART等)接收程序或數(shù)據(jù),執(zhí)行對APP程序的更新。 APP程序才是真正的功能代碼,完成嵌入式系統(tǒng)需要的各種業(yè)務(wù)功能。 BootLoader程序必須通過JTAG(Joint Test Action Group)編程方式或ISP(InSystem Programming)方式燒入??APP程序可以和BootLoader程序一起燒入,也可以通過BootLoader程序的IAP功能燒入。2系統(tǒng)硬件設(shè)計系統(tǒng)硬件電路主要介紹以太網(wǎng)接口電路的設(shè)計。 STM32F407自帶MAC控制器,只需外接PHY芯片就可以完成以太網(wǎng)通信。PHY芯片選用LAN8720A,內(nèi)置10BASET/100BASETX全雙工傳輸模塊,支持10 Mb/s和100 Mb/s數(shù)據(jù)傳輸。STM32F407采用RMII接口與LAN8720A連接, RMII減少了10/100 Mb/s下微控制器以太網(wǎng)外設(shè)與外部PHY間的引腳數(shù),僅需10根線連接即可[4]。RMII和PHY共用的參考時鐘必須是50 MHz,且必須由外部提供,如有源晶振或STM32F4的MCO輸出。這里,LAN8720A外接25 MHz石英晶振,通過內(nèi)部倍頻到50 MHz,給STM32F407的RMII提供50 MHz參考時鐘,輸出參考時鐘給MAC控制器,這樣可以降低BOM(Bill of Material)成本[5]。3系統(tǒng)軟件設(shè)計本系統(tǒng)中PHY層芯片LAN8720A相當(dāng)于物理層,STM32F407自帶的MAC層相當(dāng)于數(shù)據(jù)鏈路層,而移植的LWIP提供的就是網(wǎng)絡(luò)層、傳輸層的功能,應(yīng)用層需要用戶根據(jù)具體功能去實現(xiàn),即BootLoader和APP程序。STM32F407的內(nèi)部閃存地址起始于0x8000000,一般情況下, BootLoader代碼就從該地址開始存放,APP程序存放在Flash中剩余的空間,并且偏移量為0x200的倍數(shù)。3.1BootLoader程序BootLoader程序主要完成系統(tǒng)初始化、TFTP數(shù)據(jù)通信、更新Flash存儲區(qū)內(nèi)容和執(zhí)行程序的跳轉(zhuǎn)等功能[6]。其工作流程如圖1所示。系統(tǒng)初始化主要完成外部總線控制器的初始化、堆棧的初始化、定時器配置和LAN8720A網(wǎng)卡芯片的初始化、LWIP內(nèi)核初始化等操作。之后,通過監(jiān)測外部按鍵,判斷是否進(jìn)入IAP模式進(jìn)行升級,若超時,則跳轉(zhuǎn)到常態(tài)存儲區(qū),執(zhí)行原來的APP程序[78]。升級過程中文件的傳送采用TFTP協(xié)議。TFTP是一個工作在UDP頂層的簡單文件傳輸協(xié)議,基于C/S結(jié)構(gòu)。一個TFTP客戶端向TFTP服務(wù)器發(fā)起一個文件傳輸請求,服務(wù)器響應(yīng)請求,文件傳輸開始。數(shù)據(jù)以固定尺寸(本系統(tǒng)采用512 B)的幀進(jìn)行傳輸。在下一個數(shù)據(jù)幀傳輸前,接收方必須對剛剛收到的數(shù)據(jù)幀進(jìn)行回應(yīng)。如果接收到的數(shù)據(jù)幀大小小于指定的數(shù)據(jù)幀大小,說明當(dāng)前傳輸?shù)臄?shù)據(jù)幀是最后一個數(shù)據(jù)幀,傳輸結(jié)束。這里PC機(jī)作為客戶端,嵌入式平臺實現(xiàn)TFTP服務(wù)器,TFTP服務(wù)器響應(yīng)PC TFTP客戶端發(fā)送的寫文件請求。由于TFTP基于不可靠的UDP協(xié)議, 因此,在程序中添加能夠保證數(shù)據(jù)有效傳輸?shù)臋C(jī)制來及時處理數(shù)據(jù)丟失的情況。在接收到每個以太網(wǎng)數(shù)據(jù)幀后進(jìn)行CRC校驗,如果有錯誤則通知客戶端重新發(fā)送該數(shù)據(jù)幀, 這樣能有效提高程序更新的可靠性。3.2APP程序APP程序的生成需注意以下幾點:(1)起始地址和存儲空間大小設(shè)置;(2)中斷向量表偏移量設(shè)置;(3)生成.bin文件,用于IAP更新。MDK開發(fā)工具默認(rèn)生成的文件是.hex,但利用IAP寫入的程序文件不能是.hex格式,可利用MDK自帶的格式轉(zhuǎn)換工具fromelf.exe轉(zhuǎn)換成.bin文件。3.3系統(tǒng)軟件設(shè)計需注意的問題系統(tǒng)在軟件設(shè)計中需注意以下幾點:(1)存儲空間的分配。Boot區(qū)和常態(tài)存儲區(qū)的大小可以根據(jù)應(yīng)用的具體情況人為分配,但分配時盡可能使常態(tài)存儲區(qū)最大化,為以后程序的升級留出余量。(2)BootLoader代碼設(shè)計時應(yīng)盡量簡潔,避免使用中斷、復(fù)雜的底層驅(qū)動及算法。(3)BootLoader代碼在使用外設(shè)后,啟動APP代碼之前一定要先初始化該外設(shè),即要讓APP代碼認(rèn)為MCU只是剛上電運(yùn)行,而不是跑完一個系統(tǒng)再調(diào)用自己。如果BootLoader代碼沒有執(zhí)行該動作,當(dāng)APP代碼運(yùn)行時,MCU的外設(shè)處于不確定狀態(tài)(尤其是中斷未關(guān)閉),可能會帶來一些預(yù)料不到的錯誤。(4)數(shù)據(jù)通信過程中, 向STM32發(fā)送程序文件時需考慮STM32對Flash的寫入速度,保證每次傳送的數(shù)據(jù)包都能正確寫入。(5)傳輸過程中,升級文件分段傳送,可能存在數(shù)據(jù)丟失、網(wǎng)絡(luò)不穩(wěn)定等現(xiàn)象。對每段數(shù)據(jù)編號,根據(jù)編號判斷是否有數(shù)據(jù)包丟失,并增加CRC校驗,保證每段數(shù)據(jù)傳輸?shù)恼_性。對于錯誤或丟失的數(shù)據(jù)包,采取重傳機(jī)制,提高IAP的成功率[9]。4結(jié)論本文對基于TFTP協(xié)議的STM32軟件更新進(jìn)行了研究,充分利用以太網(wǎng)的傳輸能力和便捷性,設(shè)計并實現(xiàn)了IAP升級系統(tǒng)。通過實驗測試,基于TFTP 協(xié)議的STM32軟件遠(yuǎn)程升級系統(tǒng)能夠保證數(shù)據(jù)的正確傳輸和存儲,大大降低了對嵌入式系統(tǒng)軟件的升級維護(hù)難度,應(yīng)用廣泛。參考文獻(xiàn)[1] 溫世堅,張偉波.基于STM32的遠(yuǎn)程升級系統(tǒng)的設(shè)計[J].科技廣場,2013,26(5):97100.[2] 李興鶴,蔡亮,宋吉波,等.STM32用戶基于IAP的程序更新技術(shù)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用, 2012,12(1):7475.[3] 王程,周安琳.基于Autofac對乳制品安全風(fēng)險預(yù)警系統(tǒng)的擴(kuò)展設(shè)計[J]. 河北省科學(xué)院學(xué)報,2013,30(1):14,14.[4] 李婉婉,李宏.單片機(jī)IAP升級方法在血液分析儀中的應(yīng)用[J]. 微型機(jī)與應(yīng)用,2014,33(21):1618.[5] 王娜,成彬,郝友帥.水流量遠(yuǎn)程智能監(jiān)測系統(tǒng)的設(shè)計與實現(xiàn)[J]. 河北省科學(xué)院學(xué)報,2011,28(2):3439.[6] 武輝林.模數(shù)轉(zhuǎn)換器AD7791及其應(yīng)用格式[J].河北省科學(xué)院學(xué)報, 2011,28(2):2629.[7] 李俊,王金海.基于TFTP協(xié)議的ARM軟件遠(yuǎn)程更新系統(tǒng)[J].工礦自動化,2010,37(7):2225.[8] 游侃民.嵌入式系統(tǒng)網(wǎng)絡(luò)化BOOTLOADER的設(shè)計與實現(xiàn)[D].廣州:華南理工大學(xué),2010.[9] 許青青.一種輕量級Bootloader(LWBL)的設(shè)計與實現(xiàn)[D].上海:華東師范大學(xué),2012.(mbbeetchina)
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1TC358743XBG評估板參考手冊
  2. 1.36 MB  |  330次下載  |  免費(fèi)
  3. 2開關(guān)電源基礎(chǔ)知識
  4. 5.73 MB  |  6次下載  |  免費(fèi)
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設(shè)計
  8. 0.60 MB  |  3次下載  |  免費(fèi)
  9. 5基于FPGA的光纖通信系統(tǒng)的設(shè)計與實現(xiàn)
  10. 0.61 MB  |  2次下載  |  免費(fèi)
  11. 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計
  12. 0.70 MB  |  2次下載  |  免費(fèi)
  13. 751單片機(jī)窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費(fèi)
  15. 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21548次下載  |  免費(fèi)
  9. 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6653次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537796次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191185次下載  |  免費(fèi)
  13. 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183278次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)
RM新时代网站-首页