資料介紹
此開源參考設(shè)計演示了如何通過支持 LwIP 的微控制器系統(tǒng)上的嵌入式 Web 服務(wù)器安全、穩(wěn)健和專業(yè)地更新固件。
使用stm32-secure-patching-bootloader作為后端固件更新引擎,該設(shè)計通過 HTML 多部分/表單數(shù)據(jù)文件上傳方法提供簽名和加密的固件更新補丁或完整圖像文件。大多數(shù)瀏覽器都原生支持此方法。后端多部分表單處理已集成到現(xiàn)有的 FreeRTOS 和支持 LwIP-netconn 的 Web 服務(wù)器應(yīng)用程序中。
該項目在 NUCLEO-F429ZI 開發(fā)板上運行。它價格低廉,隨時可用,并且包括 USB OTG 和以太網(wǎng)端口。
什么是多部分表單文件上傳?它是如何工作的?
以下 HTML 代碼被插入到網(wǎng)頁中并提供給瀏覽器。瀏覽器自動生成一個文件選擇器按鈕并將另一個按鈕綁定到表單提交操作(按下時生成 POST 請求)。不需要javascript。
id="form" action="upload" method="post" enctype="multipart/form-data"> id="file" type="file" name="binary" accept=".sfb,.sfbp"/> type="submit">upload
服務(wù)器將在 /upload URL 處看到一個 HTTP POST 請求。請求中有一些常用的 HTTP 協(xié)議標(biāo)頭,包括預(yù)期長度(文件八位字節(jié)數(shù)據(jù)加上 HTTP 數(shù)據(jù))和內(nèi)容類型指示符。來自表單的每個“部分”在標(biāo)題中都有自己的內(nèi)容類型指示符。我們正在尋找的是Content-Type:application/octet-stream后跟 HTTP 標(biāo)頭終止符“\r\n”。此后在 LwIP 緩沖區(qū)中接收到的所有數(shù)據(jù)都是固件更新文件字節(jié)并按原樣使用。
?
POST /upload HTTP/1.1\r\n ... Content-Length: 129773\r\n ... Content-Type: multipart/form-data; ... Content-Type: application/octet-stream\r\n \r\n
?
在 Web 服務(wù)器源代碼 (httpserver-netconn.c) 中,我構(gòu)建了一個狀態(tài)機來解析此數(shù)據(jù)流并適當(dāng)?shù)厥褂?SE_PATCH_Init和SE_PATCH_Data API 。
本質(zhì)上,當(dāng)找到并驗證 HTTP 標(biāo)頭時,將調(diào)用 SE_PATCH_Init 函數(shù)。這個函數(shù)只是重置和準(zhǔn)備補丁引擎內(nèi)部狀態(tài)機。然后作為“八位字節(jié)流”的一部分接收到的所有字節(jié)都被送入 SE_PATCH_Data 函數(shù)。修補引擎管理字節(jié)計數(shù)器以及擦除和寫入閃存以及執(zhí)行修補(如果使用 .sfbp 文件)的所有細節(jié),因此除了在 Web 服務(wù)器中正確解析接收到的網(wǎng)絡(luò)數(shù)據(jù)包之外,更新固件真的沒有什么可做的處理循環(huán)。
修補引擎首先使用 ECDSA 簽名驗證來驗證固件更新文件頭(256 字節(jié)),然后再接受任何其他字節(jié)。當(dāng)滿意有效的固件更新文件正在發(fā)送時,它將累積字節(jié)并將它們寫入下載槽(使用 .sfb 文件)或?qū)⑺鼈兣c現(xiàn)有固件映像組合以重新創(chuàng)建新的固件映像內(nèi)部閃存中的下載槽(using.sfbp 文件)。
當(dāng)所有字節(jié)都被正確接收和處理后,修補引擎可以立即重啟或由用戶手動重啟。我選擇手動重新啟動,以便可以將“成功”消息發(fā)送回客戶端瀏覽器并在重新啟動前關(guān)閉連接?!俺晒Α表撁姘粋€重定向計時器,用于在延遲顯示更新后的固件版本后自動重新加載固件更新頁面。
需要重新啟動,因為實際上是stm32-secure-patching-bootloader在下載槽 (SLOT1) 中獲取更新映像候選并覆蓋 SLOT0 中的活動固件映像。它只有在所有簽名、解密和 SHA256 哈希都經(jīng)過檢查時才會這樣做,這使得它非常健壯,非常適合任何打包的交付框架,如以太網(wǎng)、wifi、藍牙、lora、lorawan、CAN、modbus、UART 等。
在存儲庫中,您可以使用 bin 目錄中的預(yù)構(gòu)建文件立即測試更新,或者您可以使用 STM32CubeIDE 和包含的項目文件自行構(gòu)建更新文件。有關(guān)如何執(zhí)行此操作的更多說明,請參閱項目 readme.txt。
使用網(wǎng)絡(luò)更新界面
打開連接到 Nucleo 的 STLINK 的終端,這樣您就可以看到分配給它的 IP 地址:
?
[ 0.000] Bootloader starting up. STM32 Secure Patching Bootloader. github.com/firmwaremodules/stm32-secure-patching-bootloader Build: v1.3.0 Registered to: unregistered Target: NUCLEO-F429ZI UID: 175053388a356f20 Clock:HSE,8,168 Crypto:SW UART:3,115200,N81 SLOT0:08020000 SLOT1:08060000 SIZE:40000 APP RAMSTART:20002700 VTOR:08020200 [ 0.029] Target check: CPUID:410FC241 IDCODE:20036419 FLASHSZ:0800 .. OK. [ 0.288] Verify bootloader. [ 0.315] SHA256: 3e8790d4724c52e5f5f2352bc6b132f1c8320134e0c89de983b98904c80e73a5 Valid [ 0.323] UART loader check trigger. [ 1.328] Check USB flash media. [ 2.330] No valid firmware found on flash media, status=1 [ 2.336] Verify slot 1 header. [ 2.339] Slot 1 is empty. [ 2.341] Verify slot 0. [ 2.343] Verify slot 0 header. [ 2.484] Verify slot 0 signature. [ 2.535] Verify slot 0 ready. [ 2.538] Verify slot 0 fw ver. [ 2.679] Slot 0 has valid active firmware version 1.0.0 [ 2.684] Preparing to launch application in slot 0. LwIP_HTTP_Server_Netconn_RTOS - NUCLEO-F429ZI Built FW_UPDATE_VERSION=1 Firmware Version: 1.0.0 Bootloader Version: v1.3.0 State: Looking for DHCP server ... IP address assigned by a DHCP server: 192.168.1.75
?
使用 Chrome 或兼容的瀏覽器,轉(zhuǎn)到 http://
單擊固件更新選項卡。
使用文件選擇器按鈕選擇要上傳的更新文件。然后單擊“上傳”按鈕,它將從那里開始。
選擇器只允許選擇 .sfb(全圖)或 .sfbp(補?。O旅骘@示了可供選擇器使用的預(yù)構(gòu)建圖像。
?
- 嵌入式web服務(wù)器系統(tǒng),嵌入式Web服務(wù)器的設(shè)計與實現(xiàn)
- 嵌入式web服務(wù)器系統(tǒng)設(shè)計,基于-ARM簡單嵌入式WEB服務(wù)器系統(tǒng)設(shè)計.doc
- 嵌入式web服務(wù)器系統(tǒng)設(shè)計,嵌入式Web服務(wù)器的設(shè)計與實現(xiàn)
- 嵌入式設(shè)備web服務(wù)器比較
- 嵌入式web服務(wù)器
- 學(xué)習(xí)Spring Boot 嵌入式服務(wù)器
- 基于ARM的嵌入式Web服務(wù)器設(shè)計方案 20次下載
- 基于ARM的嵌入式Web服務(wù)器的設(shè)計方案 27次下載
- 基于Android的嵌入式Web服務(wù)器設(shè)計 177次下載
- 嵌入式Web服務(wù)器的實現(xiàn)及其CGI應(yīng)用 79次下載
- 嵌入式Web服務(wù)器的設(shè)計與研究
- 基于SOPC的嵌入式Web服務(wù)器設(shè)計與實現(xiàn)
- 嵌入式Web服務(wù)器Boa的移植及其應(yīng)用
- 嵌入式Web 服務(wù)器的分析與研究
- 基于ARM的嵌入式uClinux系統(tǒng)設(shè)計與Web服務(wù)器應(yīng)用的
- 如何通過瀏覽器訪問Web頁面進行固件更新的方法? 1043次閱讀
- 基于ESP32的簡易web服務(wù)器設(shè)計 3305次閱讀
- 小型和受限嵌入式系統(tǒng)的固件驗證 1304次閱讀
- 基于雙以太網(wǎng)處理器Jupiter實現(xiàn)嵌入式設(shè)備網(wǎng)絡(luò)的設(shè)計 3673次閱讀
- 基于STM32F103RB微處理器和W5100芯片實現(xiàn)嵌入式Web服務(wù)器的設(shè)計 4013次閱讀
- 通過采用WEB服務(wù)器實現(xiàn)視頻監(jiān)控系統(tǒng)的應(yīng)用方案 4484次閱讀
- 采用嵌入式WEB服務(wù)器技術(shù)實現(xiàn)鐵路分布式監(jiān)控管理系統(tǒng)的設(shè)計 775次閱讀
- 基于以太網(wǎng)和現(xiàn)場總線控制系統(tǒng)實現(xiàn)嵌入式HTTP服務(wù)器的設(shè)計 813次閱讀
- 基于嵌入式操作系統(tǒng)與Internet網(wǎng)絡(luò)實現(xiàn)智能終端控制系統(tǒng)的設(shè)計 1045次閱讀
- 基于Web服務(wù)器和S3C2410處理器實現(xiàn)溫室茶樹培養(yǎng)監(jiān)測系統(tǒng)的設(shè)計 798次閱讀
- 嵌入式Web服務(wù)器BOA移植與測試設(shè)計概述 1693次閱讀
- 基于嵌入式系統(tǒng)的Web服務(wù)器建立設(shè)計 3223次閱讀
- 基于MicroBlaze軟核處理器的嵌入式Web服務(wù)器設(shè)計詳解 1126次閱讀
- 基于嵌入式Linux的機房信息視頻監(jiān)測系統(tǒng) 2097次閱讀
- 一種嵌入式Web服務(wù)器的設(shè)計方案 4151次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多