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