91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

電子發(fā)燒友App

硬聲App

掃碼添加小助手

加入工程師交流群

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

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

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>嵌入式Web服務(wù)器的 STM32 固件更新代碼

嵌入式Web服務(wù)器的 STM32 固件更新代碼

2023-06-21 | zip | 0.00 MB | 次下載 | 2積分

資料介紹

此開源參考設(shè)計(jì)演示了如何通過支持 LwIP 的微控制器系統(tǒng)上的嵌入式 Web 服務(wù)器安全、穩(wěn)健和專業(yè)地更新固件。

使用stm32-secure-patching-bootloader作為后端固件更新引擎,該設(shè)計(jì)通過 HTML 多部分/表單數(shù)據(jù)文件上傳方法提供簽名和加密的固件更新補(bǔ)丁或完整圖像文件。大多數(shù)瀏覽器都原生支持此方法。后端多部分表單處理已集成到現(xiàn)有的 FreeRTOS 和支持 LwIP-netconn 的 Web 服務(wù)器應(yīng)用程序中。

該項(xiàng)目在 NUCLEO-F429ZI 開發(fā)板上運(yùn)行。它價(jià)格低廉,隨時(shí)可用,并且包括 USB OTG 和以太網(wǎng)端口。

什么是多部分表單文件上傳?它是如何工作的?

以下 HTML 代碼被插入到網(wǎng)頁(yè)中并提供給瀏覽器。瀏覽器自動(dòng)生成一個(gè)文件選擇器按鈕并將另一個(gè)按鈕綁定到表單提交操作(按下時(shí)生成 POST 請(qǐng)求)。不需要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 處看到一個(gè) HTTP POST 請(qǐng)求。請(qǐng)求中有一些常用的 HTTP 協(xié)議標(biāo)頭,包括預(yù)期長(zhǎng)度(文件八位字節(jié)數(shù)據(jù)加上 HTTP 數(shù)據(jù))和內(nèi)容類型指示符。來自表單的每個(gè)“部分”在標(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)建了一個(gè)狀態(tài)機(jī)來解析此數(shù)據(jù)流并適當(dāng)?shù)厥褂?SE_PATCH_InitSE_PATCH_Data API 。

本質(zhì)上,當(dāng)找到并驗(yàn)證 HTTP 標(biāo)頭時(shí),將調(diào)用 SE_PATCH_Init 函數(shù)。這個(gè)函數(shù)只是重置和準(zhǔn)備補(bǔ)丁引擎內(nèi)部狀態(tài)機(jī)。然后作為“八位字節(jié)流”的一部分接收到的所有字節(jié)都被送入 SE_PATCH_Data 函數(shù)。修補(bǔ)引擎管理字節(jié)計(jì)數(shù)器以及擦除和寫入閃存以及執(zhí)行修補(bǔ)(如果使用 .sfbp 文件)的所有細(xì)節(jié),因此除了在 Web 服務(wù)器中正確解析接收到的網(wǎng)絡(luò)數(shù)據(jù)包之外,更新固件真的沒有什么可做的處理循環(huán)。

修補(bǔ)引擎首先使用 ECDSA 簽名驗(yàn)證來驗(yàn)證固件更新文件頭(256 字節(jié)),然后再接受任何其他字節(jié)。當(dāng)滿意有效的固件更新文件正在發(fā)送時(shí),它將累積字節(jié)并將它們寫入下載槽(使用 .sfb 文件)或?qū)⑺鼈兣c現(xiàn)有固件映像組合以重新創(chuàng)建新的固件映像內(nèi)部閃存中的下載槽(using.sfbp 文件)。

當(dāng)所有字節(jié)都被正確接收和處理后,修補(bǔ)引擎可以立即重啟或由用戶手動(dòng)重啟。我選擇手動(dòng)重新啟動(dòng),以便可以將“成功”消息發(fā)送回客戶端瀏覽器并在重新啟動(dòng)前關(guān)閉連接。“成功”頁(yè)面包含一個(gè)重定向計(jì)時(shí)器,用于在延遲顯示更新后的固件版本后自動(dòng)重新加載固件更新頁(yè)面。

需要重新啟動(dòng),因?yàn)閷?shí)際上是stm32-secure-patching-bootloader在下載槽 (SLOT1) 中獲取更新映像候選并覆蓋 SLOT0 中的活動(dòng)固件映像。它只有在所有簽名、解密和 SHA256 哈希都經(jīng)過檢查時(shí)才會(huì)這樣做,這使得它非常健壯,非常適合任何打包的交付框架,如以太網(wǎng)、wifi、藍(lán)牙、lora、lorawan、CAN、modbus、UART 等。

在存儲(chǔ)庫(kù)中,您可以使用 bin 目錄中的預(yù)構(gòu)建文件立即測(cè)試更新,或者您可以使用 STM32CubeIDE 和包含的項(xiàng)目文件自行構(gòu)建更新文件。有關(guān)如何執(zhí)行此操作的更多說明,請(qǐng)參閱項(xiàng)目 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://

單擊固件更新選項(xiàng)卡。

poYBAGSAZwyAdXs9AADRHJrR8EM813.jpg

使用文件選擇器按鈕選擇要上傳的更新文件。然后單擊“上傳”按鈕,它將從那里開始。

pYYBAGSAZw6Ad5AtAABASbkdGzA642.jpg

選擇器只允許選擇 .sfb(全圖)或 .sfbp(補(bǔ)丁)。下面顯示了可供選擇器使用的預(yù)構(gòu)建圖像。

poYBAGSAZxGAaoKUAAA_L-ZSWto683.jpg

?

微控制器 嵌入式 服務(wù)器 STM32
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1新一代網(wǎng)絡(luò)可視化(NPB 2.0)
  2. 3.40 MB  |  1次下載  |  免費(fèi)
  3. 2冷柜-電氣控制系統(tǒng)講解
  4. 13.68 MB   |  1次下載  |  10 積分
  5. 3MDD品牌三極管MMBT3906數(shù)據(jù)手冊(cè)
  6. 2.33 MB  |  次下載  |  免費(fèi)
  7. 4MDD品牌三極管S9012數(shù)據(jù)手冊(cè)
  8. 2.62 MB  |  次下載  |  免費(fèi)
  9. 5LAT1218 如何選擇和設(shè)置外部晶體適配 BlueNRG-X
  10. 0.60 MB   |  次下載  |  3 積分
  11. 6LAT1216 Blue NRG-1/2 系列芯片 Flash 操作與 BLE 事件的互斥處理
  12. 0.89 MB   |  次下載  |  3 積分
  13. 7收音環(huán)繞擴(kuò)音機(jī) AVR-1507手冊(cè)
  14. 2.50 MB   |  次下載  |  免費(fèi)
  15. 8MS1000TA 超聲波測(cè)量模擬前端芯片技術(shù)手冊(cè)
  16. 0.60 MB   |  次下載  |  免費(fèi)

本月

  1. 1愛華AIWA HS-J202維修手冊(cè)
  2. 3.34 MB   |  37次下載  |  免費(fèi)
  3. 2PC5502負(fù)載均流控制電路數(shù)據(jù)手冊(cè)
  4. 1.63 MB   |  23次下載  |  免費(fèi)
  5. 3NB-IoT芯片廠商的資料說明
  6. 0.31 MB   |  22次下載  |  1 積分
  7. 4UWB653Pro USB口測(cè)距通信定位模塊規(guī)格書
  8. 838.47 KB  |  5次下載  |  免費(fèi)
  9. 5蘇泊爾DCL6907(即CHK-S007)單芯片電磁爐原理圖資料
  10. 0.04 MB   |  4次下載  |  1 積分
  11. 6蘇泊爾DCL6909(即CHK-S009)單芯片電磁爐原理圖資料
  12. 0.08 MB   |  2次下載  |  1 積分
  13. 7100W準(zhǔn)諧振反激式恒流電源電路圖資料
  14. 0.09 MB   |  2次下載  |  1 積分
  15. 8FS8025B USB的PD和OC快充協(xié)議電壓誘騙控制器IC技術(shù)手冊(cè)
  16. 1.81 MB   |  1次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935137次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
  4. 1.48MB  |  420064次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233089次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費(fèi)下載
  8. 340992  |  191439次下載  |  10 積分
  9. 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  10. 158M  |  183353次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81602次下載  |  10 積分
  13. 7Keil工具M(jìn)DK-Arm免費(fèi)下載
  14. 0.02 MB  |  73822次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65991次下載  |  10 積分