在管理物聯(lián)網設備方面,無線(OTA)固件更新發(fā)揮著關鍵作用。產品制造商借助OTA,通過漏洞修復,功能增強和安全補丁功能遠程更新連接設備。
如果您正在對Silicon Labs(亦稱“芯科科技”)的某一EFM32 32位MCU型號進行評估,例如嵌入式Giant GeckoGG11入門套件(SLSTK3701A),并希望學習一種簡單的方法來啟用OTA固件更新。那么本文將通過以下展示示例進行演示:
圖1. 以太網上的固件更新
圖1-(1): 嵌入式應用程序充當HTTP客戶端,將被連接到您的Web服務器以發(fā)送GET請求下載固件更新文件(myupgrade.gbl)
圖1-(2): 服務器開始使用固件更新文件(myupgrade.gbl)并對其進行響應
圖1-(3): 下載文件myupgrade.gbl后,嵌入式應用程序將使用引導加載程序接口API對其進行存儲,緊接著重新編程引導加載程序的存儲區(qū)域。
圖1-(4): 嵌入式應用程序將使用引導加載程序接口API驗證固件更新映像并升級當前應用程序。
固件更新映像顯現(xiàn)有以下幾個標準:
myupgrade.gbl為有效文件,這需要嵌入式應用程序使用引導加載程序接口API進行確認。
嵌入式應用程序檢查myupgrade.gbl中存儲的固件更新映像的版本。如果嵌入式應用程序的版本與正在運行的應用程序的版本相同或為舊版本,圖像文件則不會顯現(xiàn)。
如果出現(xiàn)以下情況,引導加載程序存儲區(qū)域將被刪除。嵌入式應用程序將嘗試建立新的HTTP / HTTPS連接:
加載的.gbl圖像文件無效。
存儲的圖像版本與運行版本相同或為舊版本。
HTTP / HTTPS協(xié)議出現(xiàn)任何問題。
硬件要求
EFM32 Giant Gecko GG11入門套件SLSTK3701A
Web服務器托管固件更新文件
軟件要求
32位MCU SDK
Micrium OS內核
Micrium OS網絡
入門介紹
1.從官網或經銷商處訂購EFM32 Giant Gecko GG11入門套件SLSTK3701A
2.安裝Simplicity Studio
下載并安裝最新版本的Simplicity Studio:http://www.silabs.com/simplicity-studio
下載軟件并按照安裝說明進行操作。
登錄時,請輸入您在Silicon Labs官網的用戶名和密碼。如果您還沒有帳戶,請注冊。這是訪問所有軟件組件所必需的條件。
登錄后,使用Simplicity Studio注冊您的套件。如果套件未注冊,Simplicity Studio僅允許訪問Micrium內核;如果套件已注冊,Simplicity Studio還可允許訪問所有其他適用的Micrium組件。許可證編號可參考套件包裝盒上編碼。
3.連接電路板,如下圖所示:
圖2. 硬件連接
4.從Launcher面板打開Simplicity Studio,選擇SLSTK3701A_micriumos_httpcloader的示例,如下所示:
圖3.選擇示例
5.打開位于Project Explorer中/ src文件夾中的文件httpclient.c,然后輸入計劃進行的托管固件更新映像的完整URL:
#define FULL_URLhttp://mywebserver.com/myupgrade.gbl
如果使用中的網絡服務器是安全的(即https),那么此演示也包括mbedTLS一部分。只需確保網站所需的證書在位于Project Explorer的/ src文件夾中的文件ssl_certificates.c中的SSL_ROOT_CA []。
您可能還必須通過在配置文件config-ssl中設置MBEDTLS_ECP_MAX_BITS和MBEDTLS_MPI_MAX_SIZE中的正確大小來調整與您的網站證書匹配的位數(shù)和字節(jié)數(shù) -
httpcloader.h位于C: SiliconLabs SimplicityStudio v4 developer sdks gecko_sdk_suite v2.5 app mcu_example SLSTK3701A_EFM32GG11 micriumos_httpcloader config-ssl-httpcloader.h
#defineMBEDTLS_MPI_MAX_SIZE 256
#defineMBEDTLS_ECP_MAX_BITS 384
6.打開Project Explorer的/ src文件夾中的application_properties.c文件,并將嵌入式應用程序的版本號設置為2以模擬固件升級:
#define APP_PROPERTIES_VERSION2
7.構建項目
8.通過打開位于C: SiliconLabs SimplicityStudio v4 developer adapter_packs commander的實用程序Simplicity Commander并將二進制文件.s37的路徑提供給與此類似的命令行,生成固件更新文件myupgrade.gbl
commander.exe gbl createmyupgrade.gbl --app"C:Users[YourUsername]SimplicityStudiov4_workspaceSLSTK3701A_micriumos_httpcloaderGNUARM v7.2.1 - DebugSLSTK3701A_micriumos_httpcloader.s37"
圖4. 創(chuàng)建固件更新文件(.gbl)
9.將文件myupgrade.gbl上傳到您的Web服務器
10.打開Project Explorer的/ src文件夾中的application_properties.c,并將嵌入式應用程序的版本號設置回1:
#define APP_PROPERTIES_VERSION1
11.再次構建項目
12.如之前圖2所示連接入門工具包
13.在Windows中打開“設備管理器”,查找列為J-Link CDC UART端口的USB設備的COM端口號
14.打開串行控制臺應用程序(如PuTTY)便于在運行時查看調試消息
15.從調試適配器列表中選擇項目J-Link Silicon Labs,單擊右鍵打開上下文菜單,然后選擇upload application,如下所示:
圖5. 上傳嵌入式應用程序和Bootloader映像
16.在“Application Image Path”字段中,通過瀏覽項目所在的工作文件夾,選擇構建的文件SLSTK3701A_micriumos_httpcloader.s37,路徑類似于以下內容:
C:Users[YourUsername]SimplicityStudiov4_workspaceSLSTK3701A_micriumos_httpcloaderGNUARM v7.2.1 - DebugSLSTK3701A_micriumos_httpcloader.s37
勾選“Upload a Bootloader image”復選框,然后通過在相似路徑中瀏覽到文件bootloader-storage-internal-single-combined.s37選擇示例附帶的引導加載程序:
C:SiliconLabsSimplicityStudiov4developersdksgecko_sdk_suitev2.5appmcu_exampleSLSTK3701A_EFM32GG11micriumos_httpcloaderootloader-storage-internal-single-combined.s37
圖6. 上傳嵌入式應用程序和Bootloader映像
17.點擊“OK”按鈕后,兩個圖像將會顯現(xiàn)。引導加載程序映像將在Flash的保留區(qū)域中,從此處可以簡單地從Simplicity Studio啟動調試會話,從而使用不同的應用程序映像對設備進行編程。因為引導加載程序映像被存儲在Flash的保留區(qū)域中,除非您使用此工具或使用Simplicity Commander的命令行覆蓋它,否則映像不會被刪除。
18.當嵌入式應用程序啟動以太網接口時,觀察串行終端,連接到網站下載文件myupgrade.gbl并在新升級的嵌入式應用程序上重新啟動該文件。
圖7. 成功升級時的調試消息
延伸閱讀
此示例中描述的固件更新情況基于無身份驗證情況下,同時也沒有加密固件更新文件。但是,我們的系統(tǒng)支持這些功能以及安全啟動,但這超出了本文范圍。如需簽署和加密固件更新文件,您可以按一下方式使用Simplicity Commander:
commander.exe gbl create --app--bootloader --metadata --compress --encrypt --sign --force
有關如何使用Simplicity Commander,請參閱以下文檔的第34頁上的GBL命令部分:
UG162:Simplicity Commander參考指南https://www.silabs.com/documents/public/user-guides/ug162-simplicity-commander-reference-guide.pdf
有關Gecko Bootloader的更多內容,請參閱以下文檔:
UG266:Gecko Bootloader用戶指南https://www.silabs.com/documents/public/user-guides/ug266-gecko-bootloader-user-guide.pdf
UG103.6:Bootloader基礎知識https://www.silabs.com/documents/public/user-guides/ug103-06-fundamentals-bootloading.pdf
-
物聯(lián)網
+關注
關注
2911文章
44802瀏覽量
375009 -
應用程序
+關注
關注
37文章
3284瀏覽量
57773 -
嵌入式應用
+關注
關注
0文章
58瀏覽量
18476
原文標題:【設計應用】以太網助力Giant Gecko 11固件更新
文章出處:【微信號:SiliconLabs,微信公眾號:Silicon Labs】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論