電子發(fā)燒友App

硬聲App

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

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

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>STM32F7 TouchGFX固件更新系統(tǒng)

STM32F7 TouchGFX固件更新系統(tǒng)

2023-02-02 | zip | 0.57 MB | 次下載 | 免費

資料介紹

描述

介紹

*2021 年 9 月更新* Bootloader 和固件更新系統(tǒng)現(xiàn)在作為GitHub 上的STM32 Secure Patching Bootloader的一部分提供。

*更新于2020 年 12 月*演示現(xiàn)在使用引導(dǎo)加載程序中的嵌入式 USB 主機來使用 USB 閃存驅(qū)動器更新主應(yīng)用程序。

每個物聯(lián)網(wǎng)嵌入式系統(tǒng)都需要一種在現(xiàn)場更新固件的方法。除了最簡單的項目,添加功能、修復(fù)和推出更新已成為每個軟件項目的常態(tài),固件也不例外。

該項目描述并演示了適用于 STM32 MCU 的完整固件更新解決方案,提供行業(yè)領(lǐng)先的功能集,包括:

  • 加密
  • 驗證
  • 增量修補
  • 雙圖像
  • 外部 (Q)SPI 閃存上的圖像托管
  • 構(gòu)建工具和 IDE 集成
  • 集成 USB 主機,用于使用 USB 閃存驅(qū)動器進行更新

該解決方案旨在支持現(xiàn)場更新最先進的固件應(yīng)用程序——例如那些包含TouchGFX等 UI的應(yīng)用程序。我們稱之為多段的新功能使用 TouchGFX 實現(xiàn)固件應(yīng)用程序的無縫啟動、更新和修補,這些應(yīng)用程序分布在內(nèi)存映射的外部 SPI 閃存上——將內(nèi)部和外部閃存的組合視為一個邏輯活動區(qū)域。

有了這個新功能,現(xiàn)在可以在 STM32 MCU 上為 8 MB GUI 應(yīng)用程序系統(tǒng)中的單個 GUI 資產(chǎn)(比如 32 KB 圖標)打補丁。該固件更新系統(tǒng)可以在您的應(yīng)用程序沒有任何限制的情況下做到這一點。

許多 STM32 MCU 包括具有主機功能的 USB OTG 內(nèi)核(想想 L4、F4 等),因此 FM-SBSFU 與這種用戶友好的更新方法相結(jié)合,廣泛適用于采用 STM32 系列 MCU 的嵌入式設(shè)備。

此外,還有一些模塊可用于通過幾乎任何方法以 OTA 方式下載補丁,包括:

  • 蜂窩網(wǎng)絡(luò)(HTTP/FTP - 適用于各種系統(tǒng))
  • LoRaWAN(對于小型物聯(lián)網(wǎng)項目,打補丁是必須的)
  • USB 閃存驅(qū)動器(在這個新的更新演示中有特色 - 最終用戶的不錯選擇)
  • 非接觸式 NFC(非常適合移動設(shè)備 - 萬歲,不需要藍牙!)
  • YMODEM over UART(在之前的演示中有特色,更具技術(shù)性)
  • 自定義(以太網(wǎng)等)

補丁和編程文件在每次構(gòu)建結(jié)束時使用構(gòu)建后 shell 和 python 腳本自動生成。我們已將其部署到 STM32CubeIDE。

如果您對此感興趣,請繼續(xù)閱讀。我們將深入了解其工作原理。讓我們從一個演示開始。

TouchGFX 固件更新演示

本demo在STM32F769I-DISCO上運行,將經(jīng)歷補丁更新應(yīng)用程序的過程。該演示會將中間圖像從“彩球”更改為水肺潛水員的圖像。

要運行演示,您需要一個STM32F769I-DISCO板、一個 USB 閃存驅(qū)動器、STM32CubeProgrammer和兩個演示文件:一個 main . hex編程文件和.sfbp更新補丁文件,位于該項目末尾的附件(“原理圖”)部分:

  • SBSFU_MultiSegPatchDemo-USBFlash_STM32F7DISCO_v1.0.0.hex
  • MultiSegPatchDemo-USBFlash_STM32F7DISCO_v1.0.0_v2.0.0.sfbp

簡而言之,要運行演示 1) 使用 STM32CubeProgrammer 加載 .hex 文件,以及 2) 將 .sfbp 放到 USB 記憶棒上,將其插入適配器,按下復(fù)位鍵。看到版本從 1 增加到 2,中間的圖像由于安全補丁文件的內(nèi)容而改變。詳情如下。

sbsfu_multisegpatchdemo-usbflashdrive_GqlMY6T5lV.jpg?auto=compress%2Cformat&w=740&h=555&fit=max
FM-SBSFU 演示設(shè)置為 STM32F769I-DISCO 使用 USB 閃存驅(qū)動器更新 TouchGFX
?

.hex文件每次構(gòu)建結(jié)束時自動生成,并結(jié)合了安全引導(dǎo)加載程序、應(yīng)用程序和 DISCO 的 QSPI 閃存的內(nèi)容:分配給ExtFlashSection部分的所有內(nèi)容。將所有元素組合到一個編程文件中,可以輕松地一步對您的設(shè)備進行編程。

.sfbp文件是一個安全補丁 -使用您自己的 AES 和 ECDSA 密鑰加密和簽名 - 僅包含設(shè)備內(nèi)部和外部閃存上已有的內(nèi)容與新版本之間的差異。這些差異應(yīng)用于現(xiàn)有應(yīng)用程序,以創(chuàng)建位于專用 QSPI 段中的第二個更新映像。在引導(dǎo)加載程序(再次)完全驗證重建的更新映像之前,不會觸及主應(yīng)用程序。在此演示中,.sfbp文件僅包含新“水肺潛水員”圖像的內(nèi)容和一些應(yīng)用程序字符串修改。

對.hex 文件進行編程

啟動 STM32CubeProgrammer 并確保通過單擊左下方區(qū)域的圖標選擇“ External Loader ”。為 STM32F769I-DISCO 選擇加載程序。打開上面鏈接或附件中下載的hex文件進行燒錄,點擊program。編程過程擦除必要的內(nèi)部和外部閃存扇區(qū),然后將 hex 文件的內(nèi)容寫入正確的位置,包括引導(dǎo)加載程序、應(yīng)用程序和 QSPI。

運行應(yīng)用程序

重置電路板(這在編程后自動發(fā)生)并觀察此終端輸出到 115200 N81 的 STLINK VCOM 端口。

= [SBOOT] RuntimeProtections: 0
= [SBOOT] System Security Check successfully passed. Starting...
          QSPI Init status=2

= [FWIMG] Slot #0 @: 8080000 / Slot #1 @: 90400000 / Block size: 40000


======================================================================
=                       Firmware Modules                             =
=                                                                    =
=              Secure Boot and Secure Firmware Update                =
=              With Delta Patching                                   =
=              for STM32F7                                           =
=                                                                    =
=                      *** Bootloader ***                            =
======================================================================
  Build Date: Dec 15 2020 10:03:36
  Build Version: v2.1.0-23-g5d206f7
  Anti-rollback: Enabled


= [SBOOT] STATE: WARNING: SECURE ENGINE INITIALIZATION WITH FACTORY DEFAULT VALUES!
= [SBOOT] STATE: CHECK STATUS ON RESET
          INFO: A Reboot has been triggered by a Software reset!
          Consecutive Boot on error counter reset
          Consecutive Boot on error counter = 0
          Consecutive Boot on error counter updated
          INFO: Last execution status before Reboot was:Checking Status on Reset.
          INFO: Last execution detected error was:No error. Success.
= [SBOOT] STATE: CHECK NEW FIRMWARE TO DOWNLOAD
= [SBOOT] STATE: CHECK FLASH MEDIA
= [SBOOT] No valid firmware found on flash media, status=1
= [SBOOT] STATE: CHECK USER FW STATUS
= [FWIMG] No valid header found in slot 1.
          A valid FW is installed in the active slot - version: 4096
= [SBOOT] STATE: EXECUTE USER FIRMWARE


======================================================================
=                   Firmware Modules FM-SBSFU                        =
=                  https://firmwaremodules.com                       =
=                                                                    =
=              Secure Boot and Secure Firmware Update                =
=              For STM32F7                                           =
=              Multi-Segment QSPI Delta Patch FM-SBSFU Demo          =
=              With USB Flash Loader                                 =
=                                                                    =
=                 *** Demonstration Application ***                  =
======================================================================
  FW Version: 1.0.0
  FW Build: v2.1.0-23-g5d206f7
  FW Tag: 0x6D70087E
  QSPI string: This is a message from QSPI!
  Images @ 0x90000000 0x9001c28a 0x90038514


=================== Main Menu ============================

  Download a new Fw Image ------------------------------- 1

  Read Application Info     ----------------------------- 2

在屏幕上您將看到版本 1 圖像集:

sbsfu_demo_version1_images_Zm133HsZoD.jpg?auto=compress%2Cformat&w=740&h=555&fit=max
固件模塊 SBSFU QSPI Delta Update TouchGFX Demo Version 1 Display
?

每張圖片大約 112 KB。.sfbp補丁文件更改了一些文本字符串和中間圖像,因此大約為 113 KB。文本字符串駐留在 MCU 閃存中,而圖像駐留在 QSPI 閃存中。

執(zhí)行更新

要執(zhí)行更新,請將更新補丁文件 MultiSegPatchDemo-USBFlash_STM32F7DISCO_v1.0.0_v2.0.0.sfbp 文件復(fù)制到 USB 閃存驅(qū)動器,將驅(qū)動器插入 USB micro-A 到 A 適配器并按下重置按鈕。如文件名所示,此補丁用于將“v1.0.0”更新為“v2.0.0”。它非常精確:要更新的圖像的 SHA-256 哈希標簽和最終重建的圖像包含在補丁文件中,以 100% 確定補丁過程每次都成功完成或根本不完成,以防萬一補丁對于設(shè)備上的固件不正確。

傳輸補丁、重建最終更新映像以及復(fù)制主應(yīng)用程序插槽 (SLOT 0) 的頂部都是通過 USB 閃存驅(qū)動器快速完成的,主要受限于所涉及的閃存扇區(qū)的擦除次數(shù)。按下重置按鈕后,您將看到從頭到尾的更新以及更新進度跟蹤,如下所示:

= [SBOOT] STATE: CHECK NEW FIRMWARE TO DOWNLOAD
= [SBOOT] STATE: CHECK FLASH MEDIA
Open update file [MultiSegPatchDemo-USBFlash_STM32F7DISCO_v1.0.0_v2.0.0.sfbp] 115488 bytes
[                                ] 0%
[                                ] 1%
[.                               ] 2%
[.                               ] 3%
[.                               ] 4%
[..                              ] 5%
[..                              ] 6%
[..                              ] 7%
[...                             ] 8%
[...                             ] 9%
[...                             ] 10%
[....                            ] 11%
[....                            ] 12%
[....                            ] 13%
[....                            ] 14%
[.....                           ] 15%
[.....                           ] 16%
[.....                           ] 17%
[......                          ] 18%
[......                          ] 19%
[......                          ] 20%
[.......                         ] 21%
[.......                         ] 22%
[.......                         ] 23%
[........                        ] 24%
[........                        ] 25%
[........                        ] 26%
[.........                       ] 27%
[.........                       ] 28%
[.........                       ] 29%
[..........                      ] 30%
[..........                      ] 31%
[..........                      ] 32%
[...........                     ] 33%
[...........                     ] 34%
[...........                     ] 35%
[............                    ] 36%
[............                    ] 37%
[............                    ] 38%
[............                    ] 39%
[.............                   ] 40%
[.............                   ] 41%
[.............                   ] 42%
[..............                  ] 43%
[..............                  ] 44%
[..............                  ] 45%
[...............                 ] 46%
[...............                 ] 47%
[...............                 ] 48%
[................                ] 49%
[................                ] 50%

= [SBOOT] Firmware patched from flash media and ready to install, status=1
= [SBOOT] STATE: CHECK USER FW STATUS
= [FWIMG] Valid header found in slot 1. Version=8192 Size=390064
= [FWIMG] Valid installation trigger header found in slot 1.
          Potentially valid backup or update firmware present and ready in SLOT 1 - see if it needs to and can be installed.
= [SBOOT] STATE: INSTALL NEW USER FIRMWARE
[................                ] 50%
[................                ] 51%
[.................               ] 52%
[.................               ] 53%
[.................               ] 54%
[..................              ] 55%
[..................              ] 56%
[..................              ] 57%
[...................             ] 58%
[...................             ] 59%
[...................             ] 60%
[....................            ] 61%
[....................            ] 62%
[....................            ] 63%
[....................            ] 64%
[.....................           ] 65%
[.....................           ] 66%
[.....................           ] 67%
[......................          ] 68%
[......................          ] 69%
[......................          ] 70%
[.......................         ] 71%
[.......................         ] 72%
[.......................         ] 73%
[........................        ] 74%
[........................        ] 75%
[........................        ] 76%
[.........................       ] 77%
[.........................       ] 78%
[.........................       ] 79%
[..........................      ] 80%
[..........................      ] 81%
[..........................      ] 82%
[...........................     ] 83%
[...........................     ] 84%
[...........................     ] 85%
[............................    ] 86%
[............................    ] 87%
[............................    ] 88%
[............................    ] 89%
[.............................   ] 90%
[.............................   ] 91%
[.............................   ] 92%
[..............................  ] 93%
[..............................  ] 94%
[..............................  ] 95%
[............................... ] 96%
[............................... ] 97%
[............................... ] 98%
[................................] 99%
[................................] 100%

= [FWIMG] FW installation succeeded.
= [SBOOT] STATE: VERIFY USER FW SIGNATURE
= [SBOOT] STATE: EXECUTE USER FIRMWARE


======================================================================
=                   Firmware Modules FM-SBSFU                        =
=                  https://firmwaremodules.com                       =
=                                                                    =
=              Secure Boot and Secure Firmware Update                =
=              For STM32F7                                           =
=              Multi-Segment QSPI Delta Patch FM-SBSFU Demo          =
=              With USB Flash Loader                                 =
=                                                                    =
=                 *** Demonstration Application ***                  =
======================================================================
  FW Version: 2.0.0
  FW Build: v2.1.0-23-g5d206f7
  FW Tag: 0x7DCDB900
  QSPI string: This is a message from QSPI!
  Images @ 0x90000000 0x9001c28a 0x90038514

引導(dǎo)程序

FM-SBSFU 引導(dǎo)加載程序接管每個設(shè)備引導(dǎo)。它在Download SLOT 1中尋找有效的、完整的和重建的更新圖像在 QSPI 閃存中。如果它找到這樣的圖像,就像它在執(zhí)行補丁的 USB 閃存更新后所做的那樣,它會將新固件的版本號與活動固件進行比較。如果新固件更高,例如 2.0.0 對 1.0.0 或 1.0.1 對 1.0.0,則執(zhí)行更新:活動圖像被擦除并復(fù)制新圖像。如果活動映像已損壞且僅當(dāng)新固件具有相同或更高版本時,才會執(zhí)行更新。如果缺少活動圖像,則從任何版本執(zhí)行更新。活動圖像標頭位于設(shè)備的安全內(nèi)部閃存內(nèi),無法操縱它來安裝位于不安全外部閃存中的舊版本固件。

請注意,當(dāng)我們使用此處介紹的 USB 閃存驅(qū)動器方法從 SBSFU(引導(dǎo)加載程序)執(zhí)行更新時,補丁和更新過程是在線進行的,中間沒有重置。新應(yīng)用程序立即啟動。另一方面,如果主應(yīng)用程序正在使用某種 OTA 更新方法(例如通過蜂窩 HTTP)下載和安裝補丁,它顯然不能覆蓋自身并且必須重置以便引導(dǎo)加載程序接管并執(zhí)行如上所述的更新。

FM-SBSFU 引導(dǎo)加載程序的工作是確保有效且最新版本的固件在設(shè)備上處于活動狀態(tài)。如果主應(yīng)用程序因任何原因損壞,引導(dǎo)加載程序會通過重新安裝主應(yīng)用程序(受版本檢查)來糾正該問題。引導(dǎo)加載程序使用 ECDSA 執(zhí)行所有身份驗證檢查,以確保只有您的構(gòu)建系統(tǒng)簽名的固件才能進入您的設(shè)備。這些相同的檢查由補丁系統(tǒng)和引導(dǎo)加載程序完成,以確保設(shè)備的最大安全性、正常運行時間和可用性。

更新完成后,應(yīng)用程序啟動,在顯示屏上您會注意到中間的圖像已更改為水肺潛水員的圖像!

sbsfu_demo_version2_images_6yN6wT7EkS.jpg?auto=compress%2Cformat&w=740&h=555&fit=max
固件模塊 SBSFU QSPI Delta Update TouchGFX Demo Version 2 Display
?

QSPI flash上??TouchGFX應(yīng)用的補丁更新已經(jīng)順利完成。想象一下如何將這些技術(shù)應(yīng)用到具有外部 QSPI 閃存的物聯(lián)網(wǎng)和嵌入式系統(tǒng)產(chǎn)品中!

演示 Flash 布局

現(xiàn)在您已經(jīng)看到了演示應(yīng)用程序,我們可以更詳細地討論一下 Flash 布局。demo應(yīng)用程序按如下方式放置在MCU內(nèi)部flash板卡QSPI flash中。此位置由構(gòu)建工具自動設(shè)置,并包含在.hex文件和引導(dǎo)加載程序和補丁系統(tǒng)中。

ExtFlashSection(資源)內(nèi)容映射到 MCU 內(nèi)存地址(0x9000 0000),該地址在內(nèi)存映射模式下為 QSPI 保留。內(nèi)存映射模式允許固件指令從 QSPI 訪問數(shù)據(jù),就好像它在閃存 (0x0800 0000) 或 SRAM (0x2000 0000) 等任何其他內(nèi)存空間中一樣。好處是訪問圖像等 GUI 資源不必通過 SPI 閃存固件驅(qū)動程序?qū)樱篠TM32 MCU QSPI 外設(shè)負責(zé)處理。當(dāng) TouchGFX 在此模式下運行時,引導(dǎo)加載程序和修補系統(tǒng)使用直接 QSPI 模式執(zhí)行讀取、寫入和擦除。

fm-sbsfu_multiseg_flash_layout_zmRxmkV7zY.jpg?auto=compress%2Cformat&w=740&h=555&fit=max
FM-SBSFU STM32F769I-DISCO 演示閃存布局
?

概括

您已經(jīng)了解了一系列先進技術(shù),可以在結(jié)合內(nèi)部和外部閃存以及 USB 主機以通過 USB 閃存驅(qū)動器進行更新的項目中,在現(xiàn)場無縫部署和更新固件。

如果您想了解更多信息和/或有興趣以比自己安裝更快且成本更低的方式安裝此系統(tǒng),

查看我們的 FM-SBSFU 項目:


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

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學(xué)會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費