技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > AVR嵌入式評估板執(zhí)行固件更新的技巧和訣竅

AVR嵌入式評估板執(zhí)行固件更新的技巧和訣竅

時間:2018-08-06 13:34:42來源:網(wǎng)絡(luò)轉(zhuǎn)載

導(dǎo)語:?幾乎所有的嵌入式系統(tǒng)都需要能夠在現(xiàn)場更新其固件,從而添加新特性或修復(fù)漏洞。然而,固件現(xiàn)場更新可能會頗具挑戰(zhàn)性,因為開發(fā)人員必須編寫自己的引導(dǎo)程序或從第三方元器件供應(yīng)商處購買引導(dǎo)程序。

幾乎所有的嵌入式系統(tǒng)都需要能夠在現(xiàn)場更新其固件,從而添加新特性或修復(fù)漏洞。然而,固件現(xiàn)場更新可能會頗具挑戰(zhàn)性,因為開發(fā)人員必須編寫自己的引導(dǎo)程序或從第三方元器件供應(yīng)商處購買引導(dǎo)程序。

有一個較為簡單的方法。本文將介紹如何使用很多微控制器都會內(nèi)置但通常會被忽視的設(shè)備固件更新(DFU)功能。

固件更新選項

從頭開始開發(fā)引導(dǎo)程序并非易事。開發(fā)人員需要解析他們的閃存空間,以便多個應(yīng)用可以共存。然后,他們還需要開發(fā)幾種方法在不使用編程工具的情況下將其編譯的二進制程序轉(zhuǎn)移到微控制器中。這需要他們開發(fā)自己的通信協(xié)議或者需要添加外部存儲器以存儲新映像而增加了系統(tǒng)的復(fù)雜性。他們還要增加其微控制器上的內(nèi)存容量。

同樣地,軟件本身也會變復(fù)雜,因為引導(dǎo)程序需要設(shè)置系統(tǒng)狀態(tài)及確定跳轉(zhuǎn)到應(yīng)用代碼是否安全。

使用定制引導(dǎo)程序可以為開發(fā)人員提供其應(yīng)用非常需要的靈活性,但很多無需開發(fā)人員工作量的應(yīng)用可以采用一種固件更新標準:USB標準的內(nèi)置設(shè)備固件更新(DFU)類。這可用于通過其USB端口在現(xiàn)場更新微控制器的應(yīng)用代碼,從而大大減少固件升級過程和開發(fā)周期。

DFU已經(jīng)普遍使用,這使得一些微控制器供應(yīng)商(如STMicroelectronics)甚至都提供了執(zhí)行硬編碼到其ROM中的更新所需的軟件。那些沒有提供的,通常會提供如何支持DFU的示例代碼。

選擇適合DFU的微控制器

支持DFU的最簡單方法是選擇一個已經(jīng)在其ROM中包含DFU的微控制器,如STMicroelectronics的STM32IoTDiscovery節(jié)點和STM32F429Discovery套件上的設(shè)備。

圖1:STMicroelectronicsSTM32IoTDiscovery節(jié)點基于運行STM32L475MCU(其中包含用于固件更新的DFU模式功能)的ARM?Cortex?-M4核。此特定設(shè)備設(shè)計用作IoT節(jié)點

STM32IoTDiscovery節(jié)點是一種低成本開發(fā)板,設(shè)計用作IoT傳感器節(jié)點。該開發(fā)板包括幾個不同的接口,用于連接Wi-Fi和藍牙等板。讓人感興趣的是,板載STM32L475為開發(fā)人員提供在設(shè)計用于連接互聯(lián)網(wǎng)的設(shè)備上測試和使用DFU功能的能力。

對于只想在獨立的正常設(shè)備上測試DFU的開發(fā)人員來說,STM32F429Discovery套件是STM32F4系列微控制器的知名、低成本開發(fā)套件。我們來討論開發(fā)人員如何著手開始在這些微控制器上測試DFU。

圖2:STMicroelectronicsSTM32F429Discovery套件基于ARM?Cortex?-M4核。這個低成本開發(fā)板的MCU還包括用于進行固件更新的DFU模式功能。

一個簡單的DFU示例

每個微控制器訪問DFU的方式都不同。通過一個簡單的示例來看一看開發(fā)人員如何在運行STM32L475MCU的設(shè)備上更新其固件。

如前所述,STM32微控制器包括內(nèi)置到其ROM中的DFU引導(dǎo)程序。要訪問該引導(dǎo)程序,開發(fā)人員需要在MCU啟動時拉動其中一個BOOT引腳將其接地。BOOT引腳控制MCU啟動時所處的模式,如從閃存、RAM中啟動,或者我們首選的DFUUSB模式。

使用DFU準備要供用戶下載的應(yīng)用不需要開發(fā)人員進行任何額外的工作。GNU編譯器收集(GCC)以及很多其他工具鏈支持在編譯應(yīng)用時生成DFU文件。在這里,開發(fā)人員的唯一訣竅是確定該文件的存儲位置:跟所有典型應(yīng)用一樣,要找到.dfu文件,可以參見調(diào)試或?qū)ο笪募A。

DFU文件與二進制格式、s-record格式和十六進制文件等其他應(yīng)用記錄格式非常相似。文件格式包括通過USB中繼轉(zhuǎn)發(fā)、處理、然后寫入閃存內(nèi)指定位置的地址和數(shù)據(jù)信息。該過程無縫連接,使開發(fā)人員很少(如果有的話)需要檢查正被使用的協(xié)議。這些都是在后臺進行的,可幫助降低固件更新過程和開發(fā)工作的復(fù)雜性。

開發(fā)人員可以使用幾個不同的工具通過DFU將他們的應(yīng)用轉(zhuǎn)移到微控制器中。dfu-util是可以使用的一般命令行工具。它在Linux和Windows?上都以開源軟件包形式提供。如果開發(fā)人員使用STM工具鏈,他們就可以利用STMicroelectronics應(yīng)用DfuSe(圖3)。

圖3:STMicroelectronicsDfuSe工具可用于編程由GCC等編譯器生成并加載到適合DFU的微控制器中的DFU文件

DfuSe是WindowsGUI實用工具,可檢測已在DFU模式下通電并通過USB連接到計算機的任何STM32設(shè)備。開發(fā)人員可以檢索編程供應(yīng)商和產(chǎn)品ID等信息。如果沒有對閃存空間采取適當(dāng)?shù)陌踩Wo,他們甚至可以復(fù)制MCU的存儲內(nèi)容并使用上傳操作框?qū)⑵浯鎯υ谟嬎銠C上。

使用DfuSe時,開發(fā)人員一般只使用“升級”或“驗證操作”部分。在此區(qū)域,開發(fā)人員可以選擇其DFU應(yīng)用文件,然后選擇升級按鈕。然后,DfuSe將自動協(xié)調(diào)固件更新過程,直到整個文件已成功加載到MCU。然后,開發(fā)人員可以選擇驗證映像已成功接收。一經(jīng)驗證,BOOT引腳就可以設(shè)置回其默認配置,如引導(dǎo)至閃存,然后選擇‘離開DFU’模式加載并執(zhí)行更新的固件。

在沒有DFU支持的設(shè)備上使用DFU

只是因為微控制器不在ROM內(nèi)提供DFU引導(dǎo)程序,并不意味著開發(fā)人員仍不能利用DFU功能。DFU屬于USB類,在很多USB堆棧中都受支持。這表示,開發(fā)人員同樣能向其應(yīng)用框架簡單的添加DFU功能,且仍能執(zhí)行DFU更新。

例如,MicrochipTechnology的AT32UC3A3不具有內(nèi)置的DFU模式(圖4)。開發(fā)人員可以遵照描述DFU工作原理及開發(fā)人員應(yīng)當(dāng)如何將其微控制器配置為適當(dāng)支持DFU的簡單應(yīng)用說明。

圖4:AT32UC3A3UC3-A3XPLDAVR?32MCU32位AVR嵌入式評估板不包括片載DFU,但可以添加上支持DFU固件更新特性的框架USB代碼

執(zhí)行固件更新的技巧和訣竅

在現(xiàn)場更新固件并不一定只能從適合DFU的微控制器中進行。開發(fā)人員可以決定更新固件的替代方法是否必要或更加實用。在這種背景下,開發(fā)人員應(yīng)記住關(guān)于其固件更新過程的幾個技巧。其中包括:

使用校驗和或哈希驗證將寫入微控制器內(nèi)存的應(yīng)用。

選擇內(nèi)存足夠的微控制器存儲固件的備份件,以便發(fā)生錯誤時可以回滾固件版本。

驗證在微控制器具有內(nèi)置閃存加載程序時,終端用戶不會意外觸發(fā)該程序。

確保任何軟件引導(dǎo)程序均已編譯且針對尺寸進行優(yōu)化。

鎖定閃存外設(shè),使應(yīng)用無法從內(nèi)存中讀取出且不能被反向工程。

務(wù)必確保棧指示器、向量表和程序計數(shù)寄存器均設(shè)置為適當(dāng)?shù)膽?yīng)用值。

考慮按KL46ZFreedom板的演示使用采用了USBMSD的拖放更新之類的替代更新方法(圖5)。

圖5:NXPSemiconductor的KL46ZFreedom板是一種低成本開發(fā)板,默認不支持DFU。開發(fā)人員可以使用USBMSD之類將新固件映像拖放到內(nèi)存中的替代更新方法

總結(jié)

幾乎所有嵌入式系統(tǒng)都需要在現(xiàn)場更新應(yīng)用代碼以避免回調(diào)的方法。從頭開始創(chuàng)建引導(dǎo)程序或者修改現(xiàn)有引導(dǎo)程序可能會增加開發(fā)周期的復(fù)雜性和集成問題。

反之,開發(fā)人員可以使用內(nèi)置到USB標準中的經(jīng)過充分證明的DFU功能來快速、高效、毫不費力的執(zhí)行現(xiàn)場升級。為了讓這個過程順利進行,開發(fā)人員需要仔細檢查其微控制器并確定DFU是否已內(nèi)置到其微控制器中或者它們是否需要包括支持DFU功能的軟件堆棧。

標簽:

點贊

分享到:

上一篇:探索負載點DC/DC轉(zhuǎn)換器性能的...

下一篇:全面解析位移傳感器的分類及...

中國傳動網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動網(wǎng)(www.surachana.com)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負版權(quán)法律責(zé)任。

網(wǎng)站簡介|會員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網(wǎng)-工業(yè)自動化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權(quán)所有
粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報中心 | 粵公網(wǎng)安備 44030402000946號