You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Docs/README.md
+9-8Lines changed: 9 additions & 8 deletions
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,7 @@
3
3
## Documentation Overview
4
4
5
5
*[Graphic](stm32-secure-patching-bootloader-MultiSegment_rev1_Dec2021.pdf) describing MultiSegment feature in more detail.
6
-
*[Quick Start Guide](stm32-secure-patching-bootloader-QSG_rev3_Nov2022.pdf) in PDF form with screenshots.
6
+
*[Quick Start Guide](stm32-secure-patching-bootloader-QSG_rev4_Mar2023.pdf) in PDF form with screenshots.
7
7
8
8
## Quick Start Guide
9
9
@@ -16,7 +16,7 @@ Integrating the stm32-secure-patching-bootloader is a simple five step process:
16
16
17
17
Please refer to [stm32-secure-patching-bootloader-demoapp](https://github.com/firmwaremodules/stm32-secure-patching-bootloader-demoapp) repository for working projects already implementing these steps or to the STM32 Cube repositories we maintain that has the bootloader integrated with select reference projects at [here](https://github.com/orgs/firmwaremodules/repositories).
18
18
19
-
Also refer to this [Quick Start Guide](stm32-secure-patching-bootloader-QSG_rev3_Nov2022.pdf) PDF document for more details including images and screenshots.
19
+
Also refer to this [Quick Start Guide](stm32-secure-patching-bootloader-QSG_rev4_Mar2023.pdf) PDF document for more details including images and screenshots.
20
20
21
21
1. Adding bootloader files to your project repository
22
22
@@ -169,21 +169,22 @@ void SystemInit(void)
169
169
170
170
5. Generating your project's encryption and signing keys and machine.txt file.
171
171
172
-
Use the make_keys.bat script under Scripts to call a Python tool to generate the AES encryption key (firmware confidentiality) and the ECDSA public verification and private signing keys (firmware authenticity). Example on Windows systems to place keys in a Keys directory:
172
+
Use the make_keys_v7m.bat script (for L0, F0, G0 targets use make_keys_v6m.bat) under Scripts to call a Python tool to generate the AES encryption key (firmware confidentiality) and the ECDSA public verification and private signing keys (firmware authenticity). Example on Windows systems to place keys in a Keys directory:
make_keys.bat : Generate new secure keys for stm32-secure-patching-bootloader
177
+
make_keys_v7m.bat : Generate new secure keys for stm32-secure-patching-bootloader
178
178
Making ..\..\App\Project\DemoApp\DISCO-F769I\STM32CubeIDE\Keys/Cipher_Key_AES_CBC.bin
179
179
Making ..\..\App\Project\DemoApp\DISCO-F769I\STM32CubeIDE\Keys/Signing_PrivKey_ECC.txt
180
+
Making ..\..\App\Project\DemoApp\DISCO-F769I\STM32CubeIDE\Keys/machine.txt
180
181
```
181
182
182
-
Run `make_keys <path to directory to contain key files>`
183
+
Run `make_keys_v7m <path to directory to contain key files>`
183
184
184
-
If you're not using Windows, then all you need to do is look inside make_keys.bat and run the Python scripts directly. The Keys directory is referenced by the postbuild.sh post-build command line in the IDE. This directory can be anywhere and called anything by adjusting the post-build command line.
185
+
If you're not using Windows, then all you need to do is look inside make_keys_v7m.bat and run the Python scripts directly. The Keys directory is referenced by the postbuild.sh post-build command line in the IDE. This directory can be anywhere and called anything by adjusting the post-build command line.
185
186
186
-
Ensure there is a file called `machine.txt` in the `Keys` dir. Add one line to it: `V7M` for all targets unless you're using a cortex-M0, then add `V6M` instead. `make_keys.bat`may have already created this file.
187
+
Ensure there is a file called `machine.txt` in the `Keys` dir. Add one line to it: `V7M` for all targets unless you're using a cortex-M0, then add `V6M` instead. `make_keys_vXm.bat`will have already created this file.
Copy file name to clipboardExpand all lines: README.md
+32-18Lines changed: 32 additions & 18 deletions
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,5 @@
1
1
## STM32 Secure Patching Bootloader
2
2
3
-
*Don't forget to check out our [v1.4 preview](https://github.com/firmwaremodules/stm32-secure-patching-bootloader/tree/v1.4-preview) branch with support for awesome new boards like the G0 and G4 series and the Nucleo-WL55*
4
-
5
3
A Secure Patching Bootloader and Firmware Update System for all **STM32** MCUs.
6
4
7
5
The only bootloader and firmware update system you may ever need. Works with almost any STM32 MCU family using the [STM32CubeIDE](https://www.st.com/en/development-tools/stm32cubeide.html) development environment.
@@ -20,7 +18,7 @@ This unique solution is an easy way to get a secure and robust bootloader that o
20
18
* Useful progress messages printed to UART.
21
19
* Can deploy and update TouchGFX applications.
22
20
23
-
This secure patching bootloader and firmware update system is Apache and MIT licensed and free to use on any NUCLEO, DISCO or EVAL board we support here. If your NUCLEO, DISCO or EVAL board is missing, post an issue and we'll add it.
21
+
This secure patching bootloader and firmware update system is licensed according to STMicroelectronics' Ultimate Liberty Software License Agreement (see [LICENSE](LICENSE.md)) and free to use on any NUCLEO, DISCO or EVAL board we support here. If your NUCLEO, DISCO or EVAL board is missing, post an issue and we'll add it.
24
22
25
23
The stm32-secure-patching-bootloader reserves between **40 - 80 KB** at the beginning of internal flash, depending on MCU and feature selected (support for USB flash loader, external flash / multisegment add to size).
26
24
The bootloader also reserves about **5 KB** at the start of SRAM for the secure patching engine's stack and state, fully indepdenent of the application. This allows the application to perform in-application firmware updates and make other runtime requests of the bootloader (get firmware version, etc).
@@ -37,20 +35,25 @@ This list will grow over time as we work to support key STM32 NUCLEO, DISCO, EVA
|[Web Server IAP Update](https://github.com/firmwaremodules/STM32CubeF4/tree/master/Projects/STM32F429ZI-Nucleo/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS)|[NUCLEO-F429ZI](https://github.com/firmwaremodules/stm32-secure-patching-bootloader/main/Libs/NUCLEO-F429ZI/stm32-secure-patching-bootloader-README_NUCLEO-F429ZI_v1.4.0)| Ethernet / TCPIP/ multipart forms file upload |
68
71
69
72
70
73
@@ -112,6 +115,17 @@ automatically set RDP Level 2 and write protect the bootloader flash area at sta
112
115
113
116
### Release Notes
114
117
118
+
**v1.4.0 - Mar 2023**
119
+
120
+
* Add support for new platforms and boards: G0 (NUCLEO-G0B1RE) H7 (DISCO-H745I) WL (NUCLEO-WL55JC) F4 (DISCO-F469I) L4 (NUCLEO-L476RG)
121
+
* Prints size of binaries detected in each slot in diagnostic output.
122
+
* Bootloader disables cache before launching application on all boards that use cache (prevents faulting when application tries to re-enable already enabled cache in some cases).
123
+
* Fixes YMODEM load button trigger wrong state for NULEO-L452RE.
124
+
* Optimization: greatly speeds up patching updates (3x or more) on large binaries utilizing external flash.
125
+
* Optimization: removes one redundant header verification in virgin device or two redundant header verifications in devices that have undergone at least one update cycle. Saves between 50 - 2000 ms per header verification of bootup time depending on MCU capability.
126
+
* Ensures hardware CRC is powered up when needed during SE_PATCH_Data() API calls.
0 commit comments