Appendix B STM32CubeMX C code generation design choices and limitations ¶
A.7 Setting and clearing a peripheral mode… … … … … … … … . . 578
A.8 Mapping a function individually … … … … … … … … … … . . 578
A.9 GPIO signals mapping … … … … … … … … … … … … . . 578
Appendix B STM32CubeMX C code generation design
choices and limitations… … … … … … … … … … … . 579
B.1 STM32CubeMX generated C code and user sections … … … … . . 579
B.2 STM32CubeMX design choices for peripheral initialization … … … . 579
B.3 STM32CubeMX design choices and limitations for
middleware initialization … … … … … … … … … … … … . 580
B.3.1 Overview… … … … … … … … … … … … … … … … 580
B.3.2 USB host… … … … … … … … … … … … … … … … 581
B.3.3 USB device… … … … … … … … … … … … … … … . 581
B.3.4 FatFs… … … … … … … … … … … … … … … … … 581
B.3.5 FreeRTOS… … … … … … … … … … … … … … … . . 582
B.3.6 LwIP … … … … … … … … … … … … … … … … … 583
B.3.7 Libjpeg … … … … … … … … … … … … … … … … . 585
B.3.8 Mbed TLS … … … … … … … … … … … … … … … . . 586
B.3.9 TouchSensing … … … … … … … … … … … … … … . . 589
B.3.10 PDM2PCM … … … … … … … … … … … … … … … . 592
B.3.11 STM32WPAN BLE/Thread (STM32WB series only)… … … … … 593
B.3.12 CMSIS packs selection limitation … … … … … … … … … . . 597
B.3.13 OpenAmp and RESMGR_UTILITY
(STM32MPUs and STM32H7 dual-core products)… … … … … . 598
Appendix D STM32Cube embedded software packages … … … … … . . 606
Revision history … … … … … … … … … … … … … … … … … 607
List of tables
List of tables
|
Table 1. |
Command line summary… … … … … … … … … … … … … … … … … 48 |
|
Table 2. |
Home page shortcuts … … … … … … … … … … … … … … … … … . . 66 |
|
Table 3. |
Window menu… … … … … … … … … … … … … … … … … … … . . 67 |
|
Table 4. |
Help menu shortcuts… … … … … … … … … … … … … … … … … … 68 |
|
Table 5. |
Component list, mode icons and color schemes … … … … … … … … … … . . 88 |
|
Table 6. |
Pinout menu and shortcuts… … … … … … … … … … … … … … … … . 91 |
|
Table 7. |
Configuration states … … … … … … … … … … … … … … … … … … 98 |
|
Table 8. |
Peripheral and Middleware configuration window buttons and tooltips … … … … . . 100 |
|
Table 9. |
Clock configuration view widgets … … … … … … … … … … … … … … . 183 |
|
Table 10. |
Clock Configuration security settings … … … … … … … … … … … … … . 184 |
|
Table 11. |
Voltage scaling versus power overdrive and HCLK frequency… … … … … … … 188 |
|
Table 12. |
Relations between power over-drive and HCLK frequency … … … … … … … . . 188 |
|
Table 13. |
Glossary … … … … … … … … … … … … … … … … … … … … . . 188 |
|
Table 14. |
Pin-to-pin compatibility … … … … … … … … … … … … … … … … … 205 |
|
Table 15. |
Available IP instances… … … … … … … … … … … … … … … … … . 208 |
|
Table 16. |
Unavailable pins … … … … … … … … … … … … … … … … … … . . 209 |
|
Table 17. |
Additional software window - Filter icons … … … … … … … … … … … … . 215 |
|
Table 18. |
Additional Software window – Packs panel columns … … … … … … … … … . 216 |
|
Table 19. |
Additional Software window – Packs panel icons… … … … … … … … … … . 216 |
|
Table 20. |
Component dependencies panel contextual help… … … … … … … … … … . 219 |
|
Table 21. |
Boot paths without TrustZone (TZEN = 0) … … … … … … … … … … … … 226 |
|
Table 22. |
Boot paths with TrustZone (TZEN = 1)… … … … … … … … … … … … … 226 |
|
Table 23. |
Boot paths for STM32H7RS devices … … … … … … … … … … … … … . 226 |
|
Table 24. |
LL versus HAL code generation: drivers included in STM32CubeMX projects … … . . 443 |
|
Table 25. |
LL versus HAL code generation: STM32CubeMX generated header files… … … … 443 |
|
Table 26. |
LL versus HAL: STM32CubeMX generated source files … … … … … … … … . 444 |
|
Table 27. |
LL versus HAL: STM32CubeMX generated functions and function calls … … … … . 444 |
|
Table 28. |
Files generated when TrustZone is enabled… … … … … … … … … … … . . 459 |
|
Table 29. |
Connection with hardware resources … … … … … … … … … … … … … . 543 |
|
Table 30. |
Document revision history … … … … … … … … … … … … … … … … 607 |
11
List of figures
|
Figure 1. |
Overview of STM32CubeMX C code generation flow… … … … … … … … … . . 30 |
|
Figure 2. |
Full disk access for macOS … … … … … … … … … … … … … … … … 35 |
|
Figure 3. |
Select install mode … … … … … … … … … … … … … … … … … … . 37 |
|
Figure 4. |
Welcome panel… … … … … … … … … … … … … … … … … … … . 38 |
|
Figure 5. |
License agreement … … … … … … … … … … … … … … … … … … . 38 |
|
Figure 6. |
Terms of use… … … … … … … … … … … … … … … … … … … … 39 |
|
Figure 7. |
Default installation path … … … … … … … … … … … … … … … … … 39 |
|
Figure 8. |
Setup of shortcuts… … … … … … … … … … … … … … … … … … . . 40 |
|
Figure 9. |
Package installation … … … … … … … … … … … … … … … … … … 40 |
|
Figure 10. |
Installation script… … … … … … … … … … … … … … … … … … … 41 |
|
Figure 11. |
Installation path… … … … … … … … … … … … … … … … … … … . 41 |
|
Figure 12. |
Current user shortcut creation … … … … … … … … … … … … … … … . 42 |
|
Figure 13. |
Package installation … … … … … … … … … … … … … … … … … … 42 |
|
Figure 14. |
Installation completed… … … … … … … … … … … … … … … … … . . 43 |
|
Figure 15. |
Example of installation in interactive mode… … … … … … … … … … … … . 44 |
|
Figure 16. |
STM32Cube installation wizard … … … … … … … … … … … … … … … 45 |
|
Figure 17. |
Displaying Windows default proxy settings… … … … … … … … … … … … . 51 |
|
Figure 18. |
Updater Settings window … … … … … … … … … … … … … … … … . . 53 |
|
Figure 19. |
Connection Parameters tab - Manual Configuration of Proxy Server… … … … … . . 54 |
|
Figure 20. |
Connection failure… … … … … … … … … … … … … … … … … … . . 55 |
|
Figure 21. |
Embedded Software Packages Manager window … … … … … … … … … … . 55 |
|
Figure 22. |
Managing embedded software packages - Help menu … … … … … … … … … 57 |
|
Figure 23. |
Managing embedded software packages - Adding a new url… … … … … … … . . 58 |
|
Figure 24. |
Checking the validity of vendor pack.pdsc file url… … … … … … … … … … . . 58 |
|
Figure 25. |
User-defined list of software packs… … … … … … … … … … … … … … . 59 |
|
Figure 26. |
Selecting an embedded software pack release … … … … … … … … … … … 59 |
|
Figure 27. |
License agreement acceptance … … … … … … … … … … … … … … … 60 |
|
Figure 28. |
Embedded software pack release - Successful installation … … … … … … … … 61 |
|
Figure 29. |
Removing a package … … … … … … … … … … … … … … … … … . . 62 |
|
Figure 30. |
Confirmation message … … … … … … … … … … … … … … … … … . 62 |
|
Figure 31. |
Checking for available updates… … … … … … … … … … … … … … … . 63 |
|
Figure 32. |
Help menu: checking for updates … … … … … … … … … … … … … … . . 64 |
|
Figure 33. |
STM32CubeMX home page … … … … … … … … … … … … … … … … 65 |
|
Figure 34. |
Window menu… … … … … … … … … … … … … … … … … … … . . 67 |
|
Figure 35. |
Output view… … … … … … … … … … … … … … … … … … … … . 68 |
|
Figure 36. |
Link to social platforms … … … … … … … … … … … … … … … … … . 69 |
|
Figure 37. |
New Project window shortcuts … … … … … … … … … … … … … … … . 70 |
|
Figure 38. |
Enabling TrustZone®… … … … … … … … … … … … … … … … … … … … … … . .71 |
|
Figure 39. |
Adjusting selector results … … … … … … … … … … … … … … … … . . 71 |
|
Figure 40. |
New Project window - MCU selector… … … … … … … … … … … … … … 72 |
|
Figure 41. |
Marking an MCU as favorite … … … … … … … … … … … … … … … … 72 |
|
Figure 42. |
New Project window - Board selector… … … … … … … … … … … … … . . 73 |
|
Figure 43. |
New project window - Example selector… … … … … … … … … … … … … 74 |
|
Figure 44. |
Popup window - Starting a project from an example … … … … … … … … … . . 75 |
|
Figure 45. |
Cross selector - Data refresh prerequisite … … … … … … … … … … … … . 75 |
|
Figure 46. |
Cross selector - Part number selection per vendor… … … … … … … … … … . 76 |
|
Figure 47. |
Cross selector - Partial part number selection completion … … … … … … … … . 76 |
|
Figure 48. |
Cross selector - Compare cart … … … … … … … … … … … … … … … . 77 |
|
Figure 49. |
Cross selector - Part number selection for a new project… … … … … … … … . . 78 |
|
Figure 50. |
STM32CubeMX Main window upon MCU selection… … … … … … … … … … 79 |
|
Figure 51. |
STM32CubeMX Main window upon board selection (peripherals not initialized)… … . . 80 |
|
Figure 52. |
STM32CubeMX Main window upon board selection (peripherals initialized with default configuration)… … … … … … … … … … . . 81 |
|
Figure 53. |
Project choice interface … … … … … … … … … … … … … … … … … 82 |
|
Figure 54. |
Contexts … … … … … … … … … … … … … … … … … … … … … 82 |
|
Figure 55. |
IPs interface assignment … … … … … … … … … … … … … … … … . . 83 |
|
Figure 56. |
TrustZone option… … … … … … … … … … … … … … … … … … … 83 |
|
Figure 57. |
Selected context … … … … … … … … … … … … … … … … … … … 84 |
|
Figure 58. |
Assign IP context … … … … … … … … … … … … … … … … … … . . 84 |
|
Figure 59. |
OP-TEE selected … … … … … … … … … … … … … … … … … … . . 85 |
|
Figure 60. |
U-Boot selection … … … … … … … … … … … … … … … … … … … 85 |
|
Figure 61. |
FSBL synchronization output … … … … … … … … … … … … … … … . . 86 |
|
Figure 62. |
Contextual Help window (default)… … … … … … … … … … … … … … . . 87 |
|
Figure 63. |
Contextual Help detailed information … … … … … … … … … … … … … . . 88 |
|
Figure 64. |
Pinout view … … … … … … … … … … … … … … … … … … … … . 90 |
|
Figure 65. |
Modifying pin assignments from the Pinout view … … … … … … … … … … . . 93 |
|
Figure 66. |
Example of remapping in case of block of pins consistency… … … … … … … … 94 |
|
Figure 67. |
Pins/Signals Options window … … … … … … … … … … … … … … … . . 96 |
|
Figure 68. |
Pinout view: MCUs with multi-bonding … … … … … … … … … … … … … . 97 |
|
Figure 69. |
Pinout view: multi-bonding with extended mode… … … … … … … … … … … 97 |
|
Figure 70. |
System view … … … … … … … … … … … … … … … … … … … … 98 |
|
Figure 71. |
Configuration window tabs (GPIO, DMA, and NVIC settings for STM32F4 series) … … 99 |
|
Figure 72. |
Peripheral mode and Configuration view … … … … … … … … … … … … . 100 |
|
Figure 73. |
Formula when input parameter is set in No Check mode… … … … … … … … . 101 |
|
Figure 74. |
User Constants tab… … … … … … … … … … … … … … … … … … 102 |
|
Figure 75. |
Extract of the generated main.h file … … … … … … … … … … … … … . . 102 |
|
Figure 76. |
Using constants for peripheral parameter settings … … … … … … … … … … 103 |
|
Figure 77. |
Specifying user constant value and name … … … … … … … … … … … … 104 |
|
Figure 78. |
Deleting an user constant is not allowed when it is already used for another constant definition … … … … … … … … … … … 104 |
|
Figure 79. |
Confirmation request to delete a constant for parameter configuration … … … … . . 104 |
|
Figure 80. |
Consequence when deleting a user constant for peripheral configuration… … … … 105 |
|
Figure 81. |
Searching for a name in a user constant list… … … … … … … … … … … . . 105 |
|
Figure 82. |
Searching for a value in a user constant list… … … … … … … … … … … . . 105 |
|
Figure 83. |
GPIO configuration window - GPIO selection… … … … … … … … … … … . 106 |
|
Figure 84. |
GPIO configuration grouped by peripheral … … … … … … … … … … … … 107 |
|
Figure 85. |
Multiple pins configuration … … … … … … … … … … … … … … … … 107 |
|
Figure 86. |
Adding a new DMA request … … … … … … … … … … … … … … … . . 108 |
|
Figure 87. |
DMA configuration … … … … … … … … … … … … … … … … … … 109 |
|
Figure 88. |
DMA MemToMem configuration… … … … … … … … … … … … … … . . 110 |
|
Figure 89. |
NVIC configuration tab - FreeRTOS disabled… … … … … … … … … … … . 111 |
|
Figure 90. |
NVIC configuration tab - FreeRTOS enabled … … … … … … … … … … … . 112 |
|
Figure 91. |
I2C NVIC configuration window … … … … … … … … … … … … … … . . 112 |
|
Figure 92. |
NVIC Code generation – All interrupts enabled … … … … … … … … … … . . 113 |
|
Figure 93. |
NVIC Code generation - IRQ Handler generation … … … … … … … … … … 116 |
|
Figure 94. |
FreeRTOS configuration view… … … … … … … … … … … … … … … . 117 |
|
Figure 95. |
FreeRTOS: configuring tasks and queues … … … … … … … … … … … … 118 |
|
Figure 96. |
FreeRTOS: creating a new task … … … … … … … … … … … … … … . . 119 |
|
Figure 97. |
FreeRTOS - Configuring timers, mutexes and semaphores… … … … … … … . . 120 |
|
Figure 98. |
FreeRTOS heap usage… … … … … … … … … … … … … … … … … 121 |
Figure 99. Selecting a HAL timebase source (STM32F407 example)… … … … … … … … 122 Figure 100. TIM1 selected as HAL timebase source… … … … … … … … … … … … . . 123 Figure 101. NVIC settings when using SysTick as HAL timebase, no FreeRTOS … … … … … 123 Figure 102. NVIC settings when using FreeRTOS and SysTick as HAL timebase … … … … . . 124 Figure 103. NVIC settings when using FreeRTOS and TIM2 as HAL timebase … … … … … . . 125 Figure 104. STM32MPUs boot devices and runtime contexts… … … … … … … … … … . 126 Figure 105. STM32MPUs: assignment options for GPIOs … … … … … … … … … … … 126 Figure 106. Select peripherals as boot devices… … … … … … … … … … … … … … 127 Figure 107. Default configuration… … … … … … … … … … … … … … … … … . . 129 Figure 108. Default configuration for the STM32MP2 series… … … … … … … … … … . . 129 Figure 109. RIF configuration extension in IPs panel for the STM32MP2 series… … … … … . . 130 Figure 110. RIF configuration extension in IPs panel for the STM32N6 series … … … … … … 130 Figure 111. RISUP configuration panel … … … … … … … … … … … … … … … … 132 Figure 112. Software context configuration vs. RISUP configuration … … … … … … … … . 132 Figure 113. Example of IP assignment to one context and result in RISUP … … … … … … . . 133 Figure 114. Example of IP assignment to two contexts and result in RISUP… … … … … … . . 133 Figure 115. Lock and privilege in RISUP table … … … … … … … … … … … … … … 134 Figure 116. Pseudo RIF-aware IP assignment … … … … … … … … … … … … … … 134 Figure 117. Peripherals (RISUP) panel for the STM32N6 series… … … … … … … … … . . 135 Figure 118. Creation of a new project for the STM32N6 series - Secure projects… … … … … . 135 Figure 119. Peripherals (RISUP) panel for the STM32N6 series - Secure projects … … … … . . 136
Figure 120. FMC configuration … … … … … … … … … … … … … … … … … … 137 Figure 121. RIF FMC panel … … … … … … … … … … … … … … … … … … … 137 Figure 122. RTC features … … … … … … … … … … … … … … … … … … … . 138
Figure 123. RTC mode … … … … … … … … … … … … … … … … … … … … 138 Figure 124. RTC parameters setting … … … … … … … … … … … … … … … … . . 139 Figure 125. Color coding system and instructions… … … … … … … … … … … … … . 140
Figure 126. RIMU user interface … … … … … … … … … … … … … … … … … . . 141 Figure 127. Assigning a CID to an IP in RIMU… … … … … … … … … … … … … … . 142 Figure 128. Modification of the security and privilege values … … … … … … … … … … . 142 Figure 129. IP assignment to a context … … … … … … … … … … … … … … … … 143 Figure 130. Result in RISUP of an IP assignment to a context … … … … … … … … … … 143 Figure 131. Inheritance of CID, state of security, and privilege from RISUP… … … … … … . . 144 Figure 132. Default values for IPs and user modification restrictions … … … … … … … … . 144 Figure 133. Domains (RIMU) panel for STM32N6 series … … … … … … … … … … … . 145 Figure 134. RIF HSEM panel… … … … … … … … … … … … … … … … … … . . 146 Figure 135. RIF TAMP panel (STM32MP2 devices) … … … … … … … … … … … … . . 147 Figure 136. RIF TAMP panel (STM32N6 devices) … … … … … … … … … … … … … 147 Figure 137. RIF-aware peripherals for STM32N6 MCUs… … … … … … … … … … … . . 148 Figure 138. IO protection inheritance for a non-RIF-aware IP (I2C) … … … … … … … … . . 149 Figure 139. GPIO IP panel… … … … … … … … … … … … … … … … … … … . 149 Figure 140. Inheritance in RIF GPIO panel … … … … … … … … … … … … … … … 150 Figure 141. PIN reservation… … … … … … … … … … … … … … … … … … … 150
Figure 142. HPDMA1 features with RIF implementation (STM32N6 MCUs)… … … … … … . . 151
Figure 143. I2C IP panel … … … … … … … … … … … … … … … … … … … . . 151 Figure 144. I2C mode panel … … … … … … … … … … … … … … … … … … . . 152
Figure 145. I2C features panel … … … … … … … … … … … … … … … … … … 152 Figure 146. DMA RIF-aware IP inheritance… … … … … … … … … … … … … … … 153 Figure 147. RIF RCC panel (STM32MP2 MPUs) … … … … … … … … … … … … … . 154 Figure 148. RCC features with RIF implementation (STM32N6 MCUs) … … … … … … … . . 154 Figure 149. RIF panel for EXTI1 (STM32N6 MCUs) … … … … … … … … … … … … . . 155 Figure 150. RISAF configuration … … … … … … … … … … … … … … … … … . . 156 Figure 151. Configuration of a new subregion… … … … … … … … … … … … … … . 157 Figure 152. Non editable columns … … … … … … … … … … … … … … … … … . 157 Figure 153. Warning … … … … … … … … … … … … … … … … … … … … . . 158 Figure 154. OCTOSPI1&2 configuration … … … … … … … … … … … … … … … . . 158 Figure 155. OCTOSPI1&2 memory mapping … … … … … … … … … … … … … … . 159 Figure 156. OCTOSPI1&2 region size configuration … … … … … … … … … … … … . . 159 Figure 157. OCTOSPI1&2 inheritances from RISUP… … … … … … … … … … … … . . 159 Figure 158. OCTOSPI1&2 Master CID activation example … … … … … … … … … … … 160 Figure 159. DDR memory configuration … … … … … … … … … … … … … … … . . 160 Figure 160. DDR_CTRL_PHY activation… … … … … … … … … … … … … … … . . 160 Figure 161. Configuration of RISAF4 (DDR) … … … … … … … … … … … … … … . . 161
Figure 162. PCIE memory configuration … … … … … … … … … … … … … … … . . 161 Figure 163. RISAF table for STM32MP21 products … … … … … … … … … … … … . . 162 Figure 164. RISAF table for STM32MP2x devices in the Cortex M33 master… … … … … … . 162 Figure 165. RISAB table for STM32MP21 products … … … … … … … … … … … … . . 163 Figure 166. Global lock in RISAF panel for STM32N6 MCUs … … … … … … … … … … . 164 Figure 167. RISAF configuration for STM32N6 series… … … … … … … … … … … … . 166 Figure 168. Sub-regions activation in RISAF (showing activated subregions) … … … … … … 167 Figure 169. Sub-regions activation in RISAF (check the filtering parameter) … … … … … … . 167 Figure 170. Example: RISUP configuration and generated code … … … … … … … … … . 168 Figure 171. Example: RISAF configuration and generated code… … … … … … … … … . . 168
Figure 172. IAC feature … … … … … … … … … … … … … … … … … … … … 169
Figure 173. STM32H7 dual-core: peripheral and middleware context assignment … … … … … 170 Figure 174. STM32H7 dual-core: GPIOs context assignment… … … … … … … … … … . 170 Figure 175. Pinout & Configuration view for TrustZone-enabled projects … … … … … … … . 171 Figure 176. Setting privileges for peripherals … … … … … … … … … … … … … … . 172 Figure 177. Setting privileges for GPIO EXTIs … … … … … … … … … … … … … … 173 Figure 178. Configuring security and privilege of DMA requests… … … … … … … … … . . 174 Figure 179. RCC privilege mode … … … … … … … … … … … … … … … … … . . 174 Figure 180. Configuring security and privilege of DMA requests… … … … … … … … … . . 176 Figure 181. Securing peripherals from GTZC panel … … … … … … … … … … … … . . 178 Figure 182. OTFDEC secured when TrustZone is active … … … … … … … … … … … . 178 Figure 183. STM32F469NIHx clock tree configuration view … … … … … … … … … … . . 179 Figure 184. Clock tree configuration view with errors … … … … … … … … … … … … . 180
Figure 185. Clock tree configuration: enabling RTC, RCC clock source
and outputs from Pinout view … … … … … … … … … … … … … … … . 186 Figure 186. Clock tree configuration: RCC peripheral advanced parameters … … … … … … . 187 Figure 187. Project Settings window … … … … … … … … … … … … … … … … . . 189 Figure 188. Compiler option for CMake toolchain … … … … … … … … … … … … … . 190 Figure 189. Project folder… … … … … … … … … … … … … … … … … … … . . 190 Figure 190. Selecting a basic application structure … … … … … … … … … … … … … 192 Figure 191. Selecting an advanced application structure … … … … … … … … … … … . 193 Figure 192. OpenSTLinux settings (STM32MPUs only) … … … … … … … … … … … . . 193 Figure 193. Selecting a different firmware location … … … … … … … … … … … … … 194 Figure 194. Firmware location selection error message … … … … … … … … … … … . . 194 Figure 195. Recommended new firmware repository structure … … … … … … … … … … 194 Figure 196. Project Settings code generator … … … … … … … … … … … … … … . . 195 Figure 197. Template Settings window … … … … … … … … … … … … … … … … 197
Figure 198. Generated project template … … … … … … … … … … … … … … … . . 197 Figure 199. Advanced Settings window… … … … … … … … … … … … … … … … 199 Figure 200. Generated init functions without C language “static” keyword … … … … … … … 199 Figure 201. Automatic project import… … … … … … … … … … … … … … … … . . 201 Figure 202. Manual project import … … … … … … … … … … … … … … … … … . 202 Figure 203. Import Project menu - Try Import with errors … … … … … … … … … … … . 203 Figure 204. Import Project menu - Successful import after adjustments … … … … … … … . . 204 Figure 205. Creating an STM32MP211AAL3 project… … … … … … … … … … … … . . 205 Figure 206. STM32MP251 MPU (compatible with STM32MP211) … … … … … … … … … 206 Figure 207. Import Project window … … … … … … … … … … … … … … … … … 206 Figure 208. Importing the STM32MP211 project… … … … … … … … … … … … … . . 207 Figure 209. Confirm the project import … … … … … … … … … … … … … … … … 207 Figure 210. Pinout view after the project import … … … … … … … … … … … … … . . 208 Figure 211. Modes matching: OCTOSPI1, STM32MP211 to STM32MP251 … … … … … … . 210 Figure 212. Modes matching: USB_OTG_HS, STM32MP211 to STM32MP251 … … … … … . 210
Figure 213. Modes matching: USB_OTG_HS, STM32MP211 to STM32MP251, mode TXRTUNE) … … … … … … … … … … … … … … … … … … . 210
Figure 214. Modes matching: USB_OTG_HS, STM32MP251 to STM32MP211,
modes OVRCUR and VBUSEN) … … … … … … … … … … … … … … . 211
Figure 215. Set unused pins window… … … … … … … … … … … … … … … … . . 211
Figure 216. Reset used pins window… … … … … … … … … … … … … … … … . . 212 Figure 217. Set unused GPIO pins with Keep Current Signals Placement checked… … … … . . 212 Figure 218. Set unused GPIO pins with Keep Current Signals Placement unchecked… … … … 213
Figure 219. Additional software window … … … … … … … … … … … … … … … . . 214 Figure 220. Component dependency resolution … … … … … … … … … … … … … . . 218 Figure 221. Details and Warnings panel … … … … … … … … … … … … … … … . . 220 Figure 222. Selection of additional software components … … … … … … … … … … … . 221 Figure 223. Additional software components - Updated tree view… … … … … … … … … . 221 Figure 224. LPBAM window… … … … … … … … … … … … … … … … … … … 222 Figure 225. CAD Resources view … … … … … … … … … … … … … … … … … . 223 Figure 226. CAD Resources not available… … … … … … … … … … … … … … … . 223 Figure 227. CAD Resources selection for download … … … … … … … … … … … … . . 224 Figure 228. CAD Resources in Tools panel… … … … … … … … … … … … … … … 224 Figure 229. CAD Resources for STM32CubeMX project… … … … … … … … … … … . . 225 Figure 230. Boot path configuration ecosystem… … … … … … … … … … … … … … 225 Figure 231. Boot paths for STM32H57x devices … … … … … … … … … … … … … . . 226 Figure 232. Bootpath scheme for STM32H5_4M devices … … … … … … … … … … … . 227 Figure 233. Boot paths for STM32H56x devices … … … … … … … … … … … … … . . 227 Figure 234. Application boot paths (legacy and ST-iRoT projects) … … … … … … … … … 227 Figure 235. Application boot path (OEM-iRoT) … … … … … … … … … … … … … … 228 Figure 236. Application boot path (OEM-uRoT assembled) … … … … … … … … … … . . 228 Figure 237. Application boot path: ST-iRoT and uRoT secure/nonsecure project… … … … … . 229 Figure 238. Application boot path:
ST-iRoT and secure/nonsecure user application assembled … … … … … … … . 229 Figure 239. Application boot path: ST-iRoT dual figure… … … … … … … … … … … … 229 Figure 240. Application boot path:
(OEM-iRoT and secure/nonsecure user application assembled) … … … … … … . 230 Figure 241. Select the device or board … … … … … … … … … … … … … … … … 231 Figure 242. Select the STM32H5 device … … … … … … … … … … … … … … … . . 231 Figure 243. Peripheral initialization … … … … … … … … … … … … … … … … … 232 Figure 244. Boot paths for STM32H56x devices … … … … … … … … … … … … … . . 232 Figure 245. Activate TrustZone … … … … … … … … … … … … … … … … … … 232 Figure 246. Device and peripherals configuration … … … … … … … … … … … … … . 233 Figure 247. Configuring the project … … … … … … … … … … … … … … … … … 234 Figure 248. Saving the project… … … … … … … … … … … … … … … … … … . 234 Figure 249. Boot path selection … … … … … … … … … … … … … … … … … … 235 Figure 250. Select OEM-iRoT … … … … … … … … … … … … … … … … … … . 235 Figure 251. First boot path stage… … … … … … … … … … … … … … … … … . . 236 Figure 252. Select Secure Application… … … … … … … … … … … … … … … … . 236 Figure 253. Last boot path stage … … … … … … … … … … … … … … … … … . . 237 Figure 254. Project provisioning … … … … … … … … … … … … … … … … … . . 237 Figure 255. Flash size not aligned… … … … … … … … … … … … … … … … … . 238 Figure 256. Boot path and debug authentication panel … … … … … … … … … … … … 238 Figure 257. Authentication and encryption keys regeneration… … … … … … … … … … . 239 Figure 258. Secure image configuration … … … … … … … … … … … … … … … . . 239 Figure 259. Nonsecure image configuration … … … … … … … … … … … … … … . . 240 Figure 260. Generate the code … … … … … … … … … … … … … … … … … … 240
Figure 261. Code is generated … … … … … … … … … … … … … … … … … … 241 Figure 262. Secure and nonsecure IDE directories… … … … … … … … … … … … … 241 Figure 263. IDE post build commands… … … … … … … … … … … … … … … … . 242 Figure 264. Trusted Package Creator output directory … … … … … … … … … … … … 242 Figure 265. Board provisioning … … … … … … … … … … … … … … … … … … 243 Figure 266. On-screen instructions … … … … … … … … … … … … … … … … … 243 Figure 267. Error message … … … … … … … … … … … … … … … … … … … 244
Figure 268. Select ST-iRoT … … … … … … … … … … … … … … … … … … … 245 Figure 269. Final boot path stage … … … … … … … … … … … … … … … … … . 245 Figure 270. Boot path and Debug Authentication tab … … … … … … … … … … … … . 246 Figure 271. Select the project structure… … … … … … … … … … … … … … … … 246 Figure 272. Code is generated … … … … … … … … … … … … … … … … … … 247 Figure 273. Secure project completed… … … … … … … … … … … … … … … … . 247 Figure 274. IDE post build commands… … … … … … … … … … … … … … … … . 248 Figure 275. Board provisioning … … … … … … … … … … … … … … … … … … 249 Figure 276. On-screen instructions … … … … … … … … … … … … … … … … … 249 Figure 277. Environment configuration file … … … … … … … … … … … … … … … 250 Figure 278. The flash_layout.h file… … … … … … … … … … … … … … … … … . 251 Figure 279. The map.properties file… … … … … … … … … … … … … … … … … 252 Figure 280. Secure generated project … … … … … … … … … … … … … … … … . 252 Figure 281. Nonsecure generated project … … … … … … … … … … … … … … … . 253 Figure 282. Compilation project… … … … … … … … … … … … … … … … … … 253 Figure 283. Project folder… … … … … … … … … … … … … … … … … … … . . 254 Figure 284. Project creation… … … … … … … … … … … … … … … … … … … 255 Figure 285. Save the project … … … … … … … … … … … … … … … … … … . . 255 Figure 286. Boot path and debug authentication panel … … … … … … … … … … … … 256 Figure 287. First (left) and second (right) boot path stage… … … … … … … … … … … . 256 Figure 288. Final boot path stage … … … … … … … … … … … … … … … … … . 257 Figure 289. Boot path and debug authentication tab… … … … … … … … … … … … . . 257
Figure 290. map.properties file … … … … … … … … … … … … … … … … … … 258 Figure 291. Code generation with EWARM… … … … … … … … … … … … … … … 258 Figure 292. Nonsecure generated project … … … … … … … … … … … … … … … . 259 Figure 293. Secure generated project … … … … … … … … … … … … … … … … . 259 Figure 294. Boot path project… … … … … … … … … … … … … … … … … … . . 260 Figure 295. Use default configuration … … … … … … … … … … … … … … … … . 260 Figure 296. Configure the project … … … … … … … … … … … … … … … … … . 261 Figure 297. Select the project … … … … … … … … … … … … … … … … … … . 261 Figure 298. First boot path stage… … … … … … … … … … … … … … … … … . . 262 Figure 299. Final boot path stage … … … … … … … … … … … … … … … … … . 262 Figure 300. Boot path and debug authentication panel … … … … … … … … … … … … 263 Figure 301. Generate the code … … … … … … … … … … … … … … … … … … 263 Figure 302. Application IDE directories … … … … … … … … … … … … … … … … 263 Figure 303. The supported Boot Path in STM32H5 with 4-Mbyte devices … … … … … … … 264 Figure 304. HSP1 Modes and configuration in STM32CubeMX … … … … … … … … … . . 265 Figure 305. Activating the debug mode for the HSP1 peripheral… … … … … … … … … . . 266 Figure 306. NVIC interrupt table for the HSP1 peripheral … … … … … … … … … … … . 266 Figure 307. Activating the HSP in Accelerator mode… … … … … … … … … … … … . . 267 Figure 308. Parameters to be configured for HSP feature in the Accelerator mode … … … … . . 268 Figure 309. STM32CubeMX after activating the Accelerator mode… … … … … … … … … 268 Figure 310. Parameters to be configured for HSP feature in the Accelerator mode … … … … . . 269 Figure 311. Clock configuration for HSP in Accelerator mode… … … … … … … … … … . 269 Figure 312. Clock configuration view for HSP in Accelerator mode… … … … … … … … … 270 Figure 313. Code generation for HSP in Accelerator mode… … … … … … … … … … … 270 Figure 314. Files copied from firmware while generating the code … … … … … … … … … 271 Figure 315. Generated project tree for HSP in Accelerator mode … … … … … … … … … . 271 Figure 316. General tab… … … … … … … … … … … … … … … … … … … … 272 Figure 317. The processing list tab … … … … … … … … … … … … … … … … … 273 Figure 318. A processing list associated with an event … … … … … … … … … … … … 274 Figure 319. Snippet code action … … … … … … … … … … … … … … … … … . . 275 Figure 320. Function category … … … … … … … … … … … … … … … … … … . 276 Figure 321. Buffers tab … … … … … … … … … … … … … … … … … … … … 277 Figure 322. State buffers tab … … … … … … … … … … … … … … … … … … . . 277 Figure 323. A processing list linked with an event… … … … … … … … … … … … … . 278 Figure 324. Events tab… … … … … … … … … … … … … … … … … … … … . 279 Figure 325. Output Triggers tab… … … … … … … … … … … … … … … … … … 279 Figure 326. Generated Project tree for HSP configured in Accelerator mode… … … … … … . 281 Figure 327. Generated Project tree for HSP configured in sequencer mode … … … … … … . 282 Figure 328. PLAY feature in STM32CubeMX … … … … … … … … … … … … … … . 283 Figure 329. Activating the PLAY feature … … … … … … … … … … … … … … … . . 284 Figure 330. Input Signals… … … … … … … … … … … … … … … … … … … . . 285 Figure 331. Input settings to be filled by the user … … … … … … … … … … … … … . 286 Figure 332. Setting the Output Source for the MUX0 from the list of outputs … … … … … … . 286 Figure 333. Output settings … … … … … … … … … … … … … … … … … … … 287 Figure 334. Entries for the Look Up table … … … … … … … … … … … … … … … . 288 Figure 335. LUT truth table parameter… … … … … … … … … … … … … … … … . 289 Figure 336. LUT Calculation table … … … … … … … … … … … … … … … … … . 290 Figure 337. LUT calculation table example… … … … … … … … … … … … … … … 290 Figure 338. LUT inputs enabled … … … … … … … … … … … … … … … … … . . 291 Figure 339. Notification Service window in STM32CubeMX … … … … … … … … … … . . 296 Figure 340. Popup appearing while installing a package for non-registered users … … … … … 296 Figure 341. Hiding notification service prompt… … … … … … … … … … … … … … . 297 Figure 342. Subscription proposal appearing while installing firmware … … … … … … … . . 298 Figure 343. Register form … … … … … … … … … … … … … … … … … … … . 299 Figure 344. Popup for email validation … … … … … … … … … … … … … … … … 299 Figure 345. Email validation… … … … … … … … … … … … … … … … … … … 300 Figure 346. ST Web page to validate the subscription … … … … … … … … … … … … 300 Figure 347. The view of Notification Service tab after a user subscription … … … … … … … 301 Figure 348. The subscription page … … … … … … … … … … … … … … … … … 301 Figure 349. The preferences page… … … … … … … … … … … … … … … … … . 302 Figure 350. Communication preference center … … … … … … … … … … … … … … 302 Figure 351. The user name exposed in the Notification Service window after email validation… … 303 Figure 352. Clear the Email in STM32CubeMX… … … … … … … … … … … … … … 304 Figure 353. Clear the email configuration … … … … … … … … … … … … … … … . 304 Figure 354. The unsubscription action… … … … … … … … … … … … … … … … . 305 Figure 355. About window … … … … … … … … … … … … … … … … … … … . 306 Figure 356. ST Tools … … … … … … … … … … … … … … … … … … … … . . 307 Figure 357. Reaching Compare Project from the Tools panel… … … … … … … … … … . 308 Figure 358. Reaching Compare Project from the home page … … … … … … … … … … . 308 Figure 359. User interface of the Compare Projects tool… … … … … … … … … … … . . 309 Figure 360. Load the first .ioc file… … … … … … … … … … … … … … … … … . . 310 Figure 361. Starting the comparison … … … … … … … … … … … … … … … … . . 310 Figure 362. Result of the comparison … … … … … … … … … … … … … … … … . 311 Figure 363. Loading the same project … … … … … … … … … … … … … … … … . 311 Figure 364. The result of comparing two projects having the same structure … … … … … … . 312 Figure 365. Compare the current non saved project with another project… … … … … … … . 313 Figure 366. Compare a currently open project with itself… … … … … … … … … … … . . 313 Figure 367. Target table… … … … … … … … … … … … … … … … … … … … 315 Figure 368. Peripherals & Middleware table … … … … … … … … … … … … … … . . 315 Figure 369. Project Settings table … … … … … … … … … … … … … … … … … . 316 Figure 370. Choosing the Excel format to save the comparison result … … … … … … … … 317 Figure 371. Comparison result in Excel format … … … … … … … … … … … … … … 317 Figure 372. Comparison result in Excel format - Peripherals and middleware … … … … … … 318 Figure 373. Comparison result in Excel format - Project settings … … … … … … … … … . 318 Figure 374. Power Consumption Calculator default view … … … … … … … … … … … . 320 Figure 375. Battery selection … … … … … … … … … … … … … … … … … … . . 321 Figure 376. Step management functions… … … … … … … … … … … … … … … . . 321 Figure 377. Power consumption sequence: New Step default view … … … … … … … … . . 322
Figure 378. Enabling the transition checker option on an already configured sequence - All transitions valid … … … … … … … … … … … … 323
Figure 379. Enabling the transition checker option on an already configured sequence - At least one transition invalid … … … … … … … … … . 323 Figure 380. Transition checker option - Show log … … … … … … … … … … … … … . 323 Figure 381. Interpolated power consumption… … … … … … … … … … … … … … . . 325 Figure 382. ADC selected in Pinout view… … … … … … … … … … … … … … … . . 326
Figure 383. Power Consumption Calculator configuration window:
ADC enabled using import pinout… … … … … … … … … … … … … … . 327 Figure 384. Power Consumption Calculator view after sequence building … … … … … … … 328 Figure 385. Sequence table management functions … … … … … … … … … … … … . . 328 Figure 386. Power Consumption: Peripherals consumption chart… … … … … … … … … . 329 Figure 387. Description of the Results area… … … … … … … … … … … … … … … 329 Figure 388. Overall peripheral consumption … … … … … … … … … … … … … … . . 331 Figure 389. Selecting SMPS for the current project… … … … … … … … … … … … … 333 Figure 390. SMPS database - Adding new SMPS models … … … … … … … … … … … 334 Figure 391. SMPS database - Selecting a different SMPS model… … … … … … … … … . 334 Figure 392. Current project configuration updated with new SMPS model … … … … … … … 335 Figure 393. SMPS database management window with new model selected… … … … … … . 335 Figure 394. SMPS transition checker and state diagram helper window… … … … … … … . . 336
Figure 395. Configuring the SMPS mode for each step … … … … … … … … … … … . . 337
Figure 396. RF related consumption (STM32WB series only)… … … … … … … … … … . 338 Figure 397. RF Bluetooth Low-Energy mode configuration (STM32WB series only) … … … … . 339 Figure 398. ZigBee configuration (STM32WB series only) … … … … … … … … … … … 339 Figure 399. RF sub-GHz configuration … … … … … … … … … … … … … … … … 340 Figure 400. Power Consumption Calculator - Example set … … … … … … … … … … … 341 Figure 401. Power Consumption Calculator - Example sequence loading … … … … … … … 341 Figure 402. Power Consumption Calculator - Example sequence new selection … … … … … . 342 Figure 403. DDR pinout and configuration settings … … … … … … … … … … … … … 343 Figure 404. DDR3 configuration … … … … … … … … … … … … … … … … … . . 344 Figure 405. DDR Suite - Connection to target … … … … … … … … … … … … … … . 345 Figure 406. DDR Suite - Target connected … … … … … … … … … … … … … … … 346 Figure 407. DDR activity logs … … … … … … … … … … … … … … … … … … . 346 Figure 408. DDR interactive logs… … … … … … … … … … … … … … … … … . . 346 Figure 409. DDR register loading … … … … … … … … … … … … … … … … … . 347 Figure 410. DDR test list from U-Boot SPL … … … … … … … … … … … … … … … 348 Figure 411. DDR test suite results… … … … … … … … … … … … … … … … … . 349 Figure 412. DDR tests history … … … … … … … … … … … … … … … … … … . 349 Figure 413. Regions settings to peripherals ON … … … … … … … … … … … … … . . 350 Figure 414. Regions settings to linker files ON … … … … … … … … … … … … … … 350 Figure 415. Regions settings to peripherals OFF … … … … … … … … … … … … … . 350 Figure 416. Recommendation for the configuration of MMT … … … … … … … … … … . . 351 Figure 417. MMT usage… … … … … … … … … … … … … … … … … … … … 351 Figure 418. MMT view … … … … … … … … … … … … … … … … … … … … . 352 Figure 419. Start a project … … … … … … … … … … … … … … … … … … … . 353 Figure 420. Use TrustZone … … … … … … … … … … … … … … … … … … … 354 Figure 421. Default settings… … … … … … … … … … … … … … … … … … … 354 Figure 422. Region information … … … … … … … … … … … … … … … … … … 355 Figure 423. Tooltip… … … … … … … … … … … … … … … … … … … … … . 356 Figure 424. IP configuration… … … … … … … … … … … … … … … … … … … 356 Figure 425. IP under control … … … … … … … … … … … … … … … … … … . . 357
Figure 426. Linker files update… … … … … … … … … … … … … … … … … … . 357 Figure 427. Configure an external memory … … … … … … … … … … … … … … … 358 Figure 428. New region created… … … … … … … … … … … … … … … … … … 358 Figure 429. Adding a new region… … … … … … … … … … … … … … … … … . . 359 Figure 430. Adding a new memory … … … … … … … … … … … … … … … … … 359 Figure 431. Memory assignment … … … … … … … … … … … … … … … … … . . 360 Figure 432. Left panel configuration … … … … … … … … … … … … … … … … . . 360 Figure 433. Allocating a region … … … … … … … … … … … … … … … … … … 361 Figure 434. Middleware memory allocation … … … … … … … … … … … … … … … 361 Figure 435. Middleware heap configuration… … … … … … … … … … … … … … … 362 Figure 436. Remapping the memory … … … … … … … … … … … … … … … … . . 362 Figure 437. Remapped region is renamed … … … … … … … … … … … … … … … 363 Figure 438. Remapped start address … … … … … … … … … … … … … … … … . 363 Figure 439. New region remapped … … … … … … … … … … … … … … … … … 363 Figure 440. Resizing default region … … … … … … … … … … … … … … … … … 364 Figure 441. Region security change … … … … … … … … … … … … … … … … . . 364 Figure 442. Memory map in linker file … … … … … … … … … … … … … … … … . 365 Figure 443. MMT usage (STM32U5) … … … … … … … … … … … … … … … … . . 366 Figure 444. MMT usage (STM32H7 single core)… … … … … … … … … … … … … . . 366 Figure 445. MMT view for U5 without TrustZone… … … … … … … … … … … … … . . 367 Figure 446. MMT view for H7 single core … … … … … … … … … … … … … … … . 367 Figure 447. Default data region … … … … … … … … … … … … … … … … … … 368 Figure 448. FMC activation … … … … … … … … … … … … … … … … … … … 368 Figure 449. Default mapping … … … … … … … … … … … … … … … … … … . . 369
Figure 450. Before the swap … … … … … … … … … … … … … … … … … … . . 369 Figure 451. After the swap… … … … … … … … … … … … … … … … … … … . 370 Figure 452. Before remapping … … … … … … … … … … … … … … … … … … . 370 Figure 453. After remapping … … … … … … … … … … … … … … … … … … . . 371 Figure 454. ETH MMT regions… … … … … … … … … … … … … … … … … … . 372 Figure 455. ETH configuration for STM32H723VETx MCU… … … … … … … … … … … 373 Figure 456. Defined memory regions under the linker file … … … … … … … … … … … . 373 Figure 457. MMT usage… … … … … … … … … … … … … … … … … … … … 374 Figure 458. Firmware version … … … … … … … … … … … … … … … … … … . 374 Figure 459. MMT configuration for STM32WB5x… … … … … … … … … … … … … . . 375 Figure 460. Cortex_M7 mode and configuration … … … … … … … … … … … … … . . 376
Figure 461. Cortex_M4 mode and configuration … … … … … … … … … … … … … . . 376 Figure 462. Default settings… … … … … … … … … … … … … … … … … … … 377 Figure 463. Choose an STM32H7 dual-core product … … … … … … … … … … … … . 378 Figure 464. Region 0 added … … … … … … … … … … … … … … … … … … . . 379 Figure 465. Activate Memory Management support … … … … … … … … … … … … . . 379 Figure 466. Default setting for new application region… … … … … … … … … … … … . 380 Figure 467. Adding a new region… … … … … … … … … … … … … … … … … . . 380 Figure 468. Configure NVIC1 and NVIC2, and select their HSEM global interrupt … … … … … 381
Figure 469. OPENAMP_M7 parameters settings … … … … … … … … … … … … … . 381
Figure 470. OPENAMP_M4 parameters settings … … … … … … … … … … … … … . 382 Figure 471. Reserved memory regions for OPENAMP using MMT… … … … … … … … … 382 Figure 472. Linker files update (stm32h755xxx_flash_cm4.icf)… … … … … … … … … … 383
Figure 473. Linker files update(stm32h755xxx_flash_cm7.icf) … … … … … … … … … … 383 Figure 474. Configuration of ETH IP … … … … … … … … … … … … … … … … . . 384 Figure 475. ETH MMT regions… … … … … … … … … … … … … … … … … … . 384 Figure 476. IP configuration… … … … … … … … … … … … … … … … … … … 385 Figure 477. Defined memories under the linker file (Cortex-M7)… … … … … … … … … . . 386
Figure 478. Defined memories under the linker file (Cortex-M4)… … … … … … … … … . . 387 Figure 479. MMT usage… … … … … … … … … … … … … … … … … … … … 388 Figure 480. Default settings… … … … … … … … … … … … … … … … … … … 389 Figure 481. Choose an STM32H7R product … … … … … … … … … … … … … … . . 390 Figure 482. Initialization dialogue … … … … … … … … … … … … … … … … … . 390 Figure 483. Region0 added … … … … … … … … … … … … … … … … … … … 391 Figure 484. Activate Memory Management support … … … … … … … … … … … … . . 391 Figure 485. Warning message… … … … … … … … … … … … … … … … … … . 392 Figure 486. Configure the XSPI… … … … … … … … … … … … … … … … … … 392 Figure 487. EXT_MEM_MANAGER … … … … … … … … … … … … … … … … . . 393 Figure 488. Tooltip… … … … … … … … … … … … … … … … … … … … … . 393 Figure 489. IP configuration… … … … … … … … … … … … … … … … … … … 394 Figure 490. Linker files update… … … … … … … … … … … … … … … … … … . 394 Figure 491. Memory assignment for context Boot H7RS… … … … … … … … … … … . . 395 Figure 492. EXTMEM_MANAGER “Select boot code generation” disabled … … … … … … . . 395
Figure 493. Execute In Place… … … … … … … … … … … … … … … … … … . . 396 Figure 494. MMT Execute In Place … … … … … … … … … … … … … … … … … 396 Figure 495. Load and Run … … … … … … … … … … … … … … … … … … … . 397 Figure 496. MMT Load and Run … … … … … … … … … … … … … … … … … . . 397 Figure 497. Linker files… … … … … … … … … … … … … … … … … … … … . 398 Figure 498. Flash option bytes… … … … … … … … … … … … … … … … … … . 398
Figure 499. ECC_ON_SRAM enabled and DTCM_AXI_SHARED set to 2… … … … … … … 399 Figure 500. ETH MMT regions for STM32H7R3A8Ix… … … … … … … … … … … … . . 400
Figure 501. ETH configuration for STM32H7R3A8Ix… … … … … … … … … … … … . . 401 Figure 502. Application of the MMT configuration to the linker file … … … … … … … … … 401
Figure 503. Defined memory regions under the linker file of the application context… … … … . . 402
Figure 504. MMT usage… … … … … … … … … … … … … … … … … … … … 403 Figure 505. User interface … … … … … … … … … … … … … … … … … … … . 403 Figure 506. Linker files update… … … … … … … … … … … … … … … … … … . 404 Figure 507. Impact on RADIO (STM32WB09)… … … … … … … … … … … … … … . 404 Figure 508. Feature under MMT control (secure and nonsecure domains)… … … … … … … 406
Figure 509. Feature under MMT control (secure domains only) … … … … … … … … … . . 406
Figure 510. Memory layout for secure and nonsecure domains … … … … … … … … … . . 407 Figure 511. Memory layout for secure domains… … … … … … … … … … … … … … 407 Figure 512. Details about the clicked region in the FSBL context … … … … … … … … … . 408 Figure 513. Regions designation for secure and nonsecure domains… … … … … … … … . 409 Figure 514. Regions designation for secure domains … … … … … … … … … … … … . 409
Figure 515. Project creation with an STM32N6 product … … … … … … … … … … … . . 410 Figure 516. Choosing the project structure (secure and nonsecure domains) … … … … … … 410 Figure 517. Choosing the project structure (secure domains)… … … … … … … … … … . 411 Figure 518. MMT configuration (secure and nonsecure domains)… … … … … … … … … . 411 Figure 519. MMT configuration (secure domains) … … … … … … … … … … … … … . 412 Figure 520. Mapping between MMT regions and RISAF memory configurations … … … … … . 412 Figure 521. Setting up the memory region of RISAF2 (CPU AXI RAM0) tab … … … … … … . 413 Figure 522. Setting up memory subregions of RISAF 2 (CPU AXI RAM0) tab … … … … … … 414 Figure 523. Setting up memory regions of RISAF1 (TCM) tab … … … … … … … … … … 415 Figure 524. Setting up the memory subregions of RISAF1 (TCM) tab … … … … … … … … 415
Figure 525. Configurations needed for RAMCFG FLEXRAM … … … … … … … … … … . 416 Figure 526. Setting up memory regions of RISAF1 (TCM) and RISAF7 (FLEXRAM) tabs … … … 417
Figure 527. Overlap with FLEXRAM … … … … … … … … … … … … … … … … . . 418 Figure 528. Configurations of the application regions on the MMT view … … … … … … … . . 419 Figure 529. Setting up memory regions of RISAF4 (NPU master 0) … … … … … … … … . . 420
Figure 530. Setting up memory regions of RISAF5 (NPU master 1) … … … … … … … … . . 420 Figure 531. Setting up memory regions of RISAF6 (CPU master) … … … … … … … … … 421 Figure 532. CACHEAXI enable … … … … … … … … … … … … … … … … … … 422 Figure 533. MMT view for CACHEAXI… … … … … … … … … … … … … … … … . 422 Figure 534. Adding regions in CACHEAXI… … … … … … … … … … … … … … … . 423
Figure 535. RISAF8 CACHEAXI … … … … … … … … … … … … … … … … … . . 423 Figure 536. VENC enable … … … … … … … … … … … … … … … … … … … . 424 Figure 537. MMT view for VENCRAM … … … … … … … … … … … … … … … … . 425 Figure 538. Adding regions in VERCRAM… … … … … … … … … … … … … … … . 425 Figure 539. RISAF9 VENCRAM … … … … … … … … … … … … … … … … … . . 426 Figure 540. Configurations of FMC added regions in MMT view… … … … … … … … … . . 426 Figure 541. Setting up the memory regions for the RISAF14 (FMC) tab… … … … … … … . . 427 Figure 542. EXTMEM_MANAGER in the MMT view… … … … … … … … … … … … . . 428
Figure 543. Setting up the XSPI feature … … … … … … … … … … … … … … … . . 428
Figure 544. Setting Select boot code generation parameter for EXTMEM_MANAGER … … … . . 429 Figure 545. Selection of the boot system - Execute In Place … … … … … … … … … … . 429 Figure 546. Configuration of the MMT view after enabling XIP … … … … … … … … … … 430
Figure 547. Selection of the boot system - Load and Run… … … … … … … … … … … . 430 Figure 548. Configuration of MMT view after choosing Load and Run as boot system… … … … 431
Figure 549. Defined linker script for XIP … … … … … … … … … … … … … … … . . 431 Figure 550. MMT linker file after choosing Load and Run as boot system … … … … … … … 432 Figure 551. ETH MMT regions for STM32N647L0HxQ… … … … … … … … … … … … 433 Figure 552. MMT view after adding ETH memory regions… … … … … … … … … … … . 434
Figure 553. ETH linker file (fully secure domain only) … … … … … … … … … … … … . 434 Figure 554. ETH MMT regions (secure domains only) … … … … … … … … … … … … 435 Figure 555. Warning in case of overlap between application and ETH regions… … … … … … 435 Figure 556. RISAF 3 (CPU AXI RAM1) memory regions… … … … … … … … … … … . . 436 Figure 557. ETH application regions for secure and nonsecure domains (part 1)… … … … … . 436
Figure 558. ETH application regions for secure and nonsecure domains (part 2)… … … … … . 437 Figure 559. MMT/boot path (STM32H7RS)… … … … … … … … … … … … … … … 438 Figure 560. MMT/boot path (STM32H5) … … … … … … … … … … … … … … … . . 438 Figure 561. Linker files location (STM32H7RS on the left, STM32H5 on the right)… … … … … 439 Figure 562. App_User declaration (STM32H7RS)… … … … … … … … … … … … … . 439 Figure 563. App_User declaration (STM32H5) … … … … … … … … … … … … … … 439 Figure 564. Labels for pins generating define statements… … … … … … … … … … … . 441 Figure 565. User constant generating define statements … … … … … … … … … … … . 441
Figure 566. Duplicate labels … … … … … … … … … … … … … … … … … … . . 442 Figure 567. HAL-based peripheral initialization: usart.c code snippet… … … … … … … … . 446 Figure 568. LL-based peripheral initialization: usart.c code snippet … … … … … … … … . . 447 Figure 569. HAL versus LL: main.c code snippet … … … … … … … … … … … … … . 447 Figure 570. Default content of the extra_templates folder… … … … … … … … … … … . 448 Figure 571. extra_templates folder with user templates … … … … … … … … … … … . . 449 Figure 572. Project root folder with corresponding custom generated files… … … … … … … 450 Figure 573. User custom folder for templates … … … … … … … … … … … … … … . 450 Figure 574. Custom folder with corresponding custom generated files… … … … … … … … 451
Figure 575. Update of the project .ewp file (EWARM IDE)
for preprocessor define statements … … … … … … … … … … … … … . . 453 Figure 576. Update of stm32f4xx_hal_conf.h file to enable selected modules … … … … … … 453 Figure 577. New groups and new files added to groups in EWARM IDE … … … … … … … . 453 Figure 578. Preprocessor define statements in EWARM IDE … … … … … … … … … … . 454
Figure 579. Code generation for STM32H7 dual-core devices … … … … … … … … … … 455 Figure 580. Startup and linker files for STM32H7 dual-core devices… … … … … … … … . . 456 Figure 581. Building secure and nonsecure images with ARMv8-M TrustZone … … … … … . . 457 Figure 582. Project explorer view for STM32L5 TrustZone enabled projects … … … … … … . 458 Figure 583. Project settings for STM32CubeIDE toolchain … … … … … … … … … … … 459
Figure 584. STM32CubeMX generated DTS – Extract 1… … … … … … … … … … … . . 462
Figure 585. STM32CubeMX generated DTS – Extract 2… … … … … … … … … … … . . 462
Figure 586. STM32CubeMX generated DTS – Extract 3… … … … … … … … … … … . . 463 Figure 587. Project settings to configure Device tree path … … … … … … … … … … … 464 Figure 588. Selecting a CMSIS-Pack software component… … … … … … … … … … … 466 Figure 589. Enabling and configuring a CMSIS-Pack software component … … … … … … . . 466 Figure 590. Project generated with CMSIS-Pack software component… … … … … … … … 467
Figure 591. MCU selection … … … … … … … … … … … … … … … … … … … 468 Figure 592. Pinout view with MCUs selection … … … … … … … … … … … … … … . 469 Figure 593. Pinout view without MCUs selection window … … … … … … … … … … … . 469 Figure 594. GPIO pin configuration … … … … … … … … … … … … … … … … … 470 Figure 595. Timer configuration… … … … … … … … … … … … … … … … … … 470 Figure 596. Simple pinout configuration … … … … … … … … … … … … … … … . . 471
Figure 597. Save Project As window … … … … … … … … … … … … … … … … . . 472 Figure 598. Generate Project Report - New project creation… … … … … … … … … … . . 473 Figure 599. Generate Project Report - Project successfully created… … … … … … … … . . 473 Figure 600. Clock tree view … … … … … … … … … … … … … … … … … … … 474 Figure 601. HSI clock enabled… … … … … … … … … … … … … … … … … … . 475 Figure 602. HSE clock source disabled… … … … … … … … … … … … … … … … 475
Figure 603. HSE clock source enabled … … … … … … … … … … … … … … … … 475 Figure 604. External PLL clock source enabled … … … … … … … … … … … … … . . 475 Figure 605. Pinout & Configuration view … … … … … … … … … … … … … … … . . 477 Figure 606. Case of Peripheral and Middleware without configuration parameters… … … … … 477 Figure 607. Timer 3 configuration window… … … … … … … … … … … … … … … . 478 Figure 608. Timer 3 configuration … … … … … … … … … … … … … … … … … . 478 Figure 609. Enabling Timer 3 interrupt … … … … … … … … … … … … … … … … 479 Figure 610. GPIO configuration color scheme and tooltip … … … … … … … … … … … . 479 Figure 611. GPIO mode configuration … … … … … … … … … … … … … … … … . 480 Figure 612. DMA parameters configuration window … … … … … … … … … … … … . . 481 Figure 613. Middleware tooltip… … … … … … … … … … … … … … … … … … . 481 Figure 614. USB Host configuration … … … … … … … … … … … … … … … … . . 482 Figure 615. FatFs over USB mode enabled … … … … … … … … … … … … … … . . 482 Figure 616. System view with FatFs and USB enabled… … … … … … … … … … … … 483 Figure 617. FatFs define statements … … … … … … … … … … … … … … … … . . 484 Figure 618. Project Settings and toolchain selection… … … … … … … … … … … … . . 485 Figure 619. Project Manager menu - Code Generator tab … … … … … … … … … … … 486
Figure 620. Warning message for missing firmware package… … … … … … … … … … . 486 Figure 621. Error during download … … … … … … … … … … … … … … … … … 487 Figure 622. Updated settings with connection… … … … … … … … … … … … … … . 488 Figure 623. Downloading the firmware package … … … … … … … … … … … … … . . 489 Figure 624. Unzipping the firmware package … … … … … … … … … … … … … … . 489 Figure 625. C code generation completion message … … … … … … … … … … … … . 490 Figure 626. C code generation output folder … … … … … … … … … … … … … … . . 490 Figure 627. Pause button… … … … … … … … … … … … … … … … … … … . . 491 Figure 628. Creating the .tmp file… … … … … … … … … … … … … … … … … . . 491 Figure 629. Resume button … … … … … … … … … … … … … … … … … … … 491 Figure 630. Resume button during the unzipping of downloaded files … … … … … … … … 492 Figure 631. Closing the download window without clicking the Resume button … … … … … . . 492
Figure 632. Cancel button … … … … … … … … … … … … … … … … … … … . 493 Figure 633. C code generation output: Projects folder … … … … … … … … … … … … 494 Figure 634. C code generation for EWARM … … … … … … … … … … … … … … . . 495
Figure 635. STM32CubeMX generated project open in IAR™ IDE… … … … … … … … … 496
Figure 636. IAR™ options … … … … … … … … … … … … … … … … … … … . 497 Figure 637. SWD connection… … … … … … … … … … … … … … … … … … . . 497 Figure 638. Project building log … … … … … … … … … … … … … … … … … … 497 Figure 639. User Section 2 … … … … … … … … … … … … … … … … … … … 498
Figure 640. User Section 4 … … … … … … … … … … … … … … … … … … … 498 Figure 641. Import Project menu … … … … … … … … … … … … … … … … … . . 499 Figure 642. Board peripheral initialization dialog box … … … … … … … … … … … … . 500 Figure 643. Board selection… … … … … … … … … … … … … … … … … … … 501 Figure 644. SDIO peripheral configuration … … … … … … … … … … … … … … … 501
Figure 645. FatFs mode configuration… … … … … … … … … … … … … … … … . 502 Figure 646. RCC peripheral configuration … … … … … … … … … … … … … … … . 502 Figure 647. Clock tree view … … … … … … … … … … … … … … … … … … … 503 Figure 648. FATFS tutorial - Project settings… … … … … … … … … … … … … … . . 503 Figure 649. C code generation completion message … … … … … … … … … … … … . 504 Figure 650. IDE workspace … … … … … … … … … … … … … … … … … … … 504 Figure 651. Power Consumption Calculation example … … … … … … … … … … … … 510 Figure 652. VDD and battery selection menu … … … … … … … … … … … … … … . 510 Figure 653. Sequence table… … … … … … … … … … … … … … … … … … … 511 Figure 654. sequence results before optimization … … … … … … … … … … … … … . 511 Figure 655. Step 1 optimization … … … … … … … … … … … … … … … … … … 512
Figure 656. Step 5 optimization … … … … … … … … … … … … … … … … … … 513
Figure 657. Step 6 optimization … … … … … … … … … … … … … … … … … … 514
Figure 658. Step 7 optimization … … … … … … … … … … … … … … … … … … 515
Figure 659. Step 8 optimization … … … … … … … … … … … … … … … … … … 516 Figure 660. Step 10 optimization … … … … … … … … … … … … … … … … … . . 517 Figure 661. Power sequence results after optimizations … … … … … … … … … … … . . 517 Figure 662. Selecting NUCLEO_L053R8 board … … … … … … … … … … … … … . . 519 Figure 663. Selecting debug pins … … … … … … … … … … … … … … … … … . 520 Figure 664. Selecting TIM2 clock source… … … … … … … … … … … … … … … . . 520 Figure 665. Selecting asynchronous mode for USART2 … … … … … … … … … … … . . 521 Figure 666. Checking pin assignment … … … … … … … … … … … … … … … … . 521 Figure 667. Configuring the MCU clock tree … … … … … … … … … … … … … … . . 522 Figure 668. Configuring USART2 parameters… … … … … … … … … … … … … … . 523 Figure 669. Configuring TIM2 parameters… … … … … … … … … … … … … … … . 524 Figure 670. Enabling TIM2 interrupt … … … … … … … … … … … … … … … … . . 525 Figure 671. Project Settings menu… … … … … … … … … … … … … … … … … . 526
Figure 672. Generating the code … … … … … … … … … … … … … … … … … . . 526 Figure 673. Checking the communication port … … … … … … … … … … … … … … 528
Figure 674. Setting Tera Term port parameters … … … … … … … … … … … … … . . 529
Figure 675. Setting Tera Term port parameters … … … … … … … … … … … … … . . 529 Figure 676. Existing or new project pinout… … … … … … … … … … … … … … … . 530
Figure 677. List of pinout compatible MCUs - Partial match
with hardware compatibility… … … … … … … … … … … … … … … … 531 Figure 678. List of pinout compatible MCUs - Exact and partial match … … … … … … … … 531 Figure 679. Selecting a compatible MCU and importing the configuration … … … … … … … 532 Figure 680. Configuration imported to the selected compatible MCU … … … … … … … … . 532 Figure 681. Import configuration not available for dual core MCUs… … … … … … … … … 533 Figure 682. Additional software components enabled for the current project … … … … … … . 534 Figure 683. Pack software components: no configurable parameters… … … … … … … … . 535 Figure 684. Pack tutorial: project settings … … … … … … … … … … … … … … … . 535 Figure 685. Generated project with third party pack components … … … … … … … … … . 536 Figure 686. Hardware prerequisites… … … … … … … … … … … … … … … … … 537 Figure 687. Embedded software packages … … … … … … … … … … … … … … … 538 Figure 688. Mobile application… … … … … … … … … … … … … … … … … … . 538 Figure 689. Installing Embedded software packages … … … … … … … … … … … … . 539 Figure 690. Starting a new project - selecting the NUCLEO-L053R8 board … … … … … … . . 540 Figure 691. Starting a new project - initializing all peripherals… … … … … … … … … … . 540 Figure 692. Selecting X-Cube-BLE1 components … … … … … … … … … … … … … . 541 Figure 693. Configuring peripherals and GPIOs … … … … … … … … … … … … … . . 542 Figure 694. Configuring NVIC interrupts … … … … … … … … … … … … … … … . . 543 Figure 695. Enabling X-Cube-BLE1… … … … … … … … … … … … … … … … … 544 Figure 696. Configuring the SensorDemo project … … … … … … … … … … … … … . 545 Figure 697. Open SensorDemo project in the IDE toolchain… … … … … … … … … … . . 545 Figure 698. LPBAM project … … … … … … … … … … … … … … … … … … … 547 Figure 699. Project timeline … … … … … … … … … … … … … … … … … … … 548 Figure 700. Project with LPBAM capability … … … … … … … … … … … … … … … 548 Figure 701. LPBAM Scenario & Configuration view … … … … … … … … … … … … . . 549 Figure 702. Adding an application … … … … … … … … … … … … … … … … … . 550 Figure 703. SoC and IPs configuration … … … … … … … … … … … … … … … … 551 Figure 704. LPBAM scenario: creation and configuration panels … … … … … … … … … . 551 Figure 705. Clock tree configuration … … … … … … … … … … … … … … … … . . 552 Figure 706. Available IPs… … … … … … … … … … … … … … … … … … … . . 553 Figure 707. IP configuration: advanced settings … … … … … … … … … … … … … . . 553
Figure 708. LPBAM low power settings… … … … … … … … … … … … … … … … 554
Figure 709. Adding nodes to a queue … … … … … … … … … … … … … … … … . 555 Figure 710. Queue in circular mode… … … … … … … … … … … … … … … … … 556 Figure 711. Queue looping back on IP data transfer … … … … … … … … … … … … . . 557
Figure 712. LPBAM queue: DMA configuration… … … … … … … … … … … … … … 557 Figure 713. LPBAM functions contextual help… … … … … … … … … … … … … … . 558 Figure 714. LPBAM queue node configuration … … … … … … … … … … … … … … 559 Figure 715. LPBAM node: configuring hardware resources … … … … … … … … … … . . 560 Figure 716. LPBAM node trigger configuration … … … … … … … … … … … … … … 561 Figure 717. LPBAM node triggered using timer channel … … … … … … … … … … … . . 561 Figure 718. LPBAM node: reconfiguring a DMA … … … … … … … … … … … … … . . 562 Figure 719. Reconfiguring DMA for data transfer when destination is memory… … … … … … 562
Figure 720. Design check … … … … … … … … … … … … … … … … … … … . 563 Figure 721. STM32CubeMX project generated with LPBAM applications… … … … … … … . 564 Figure 722. STM32CubeMX project - Peripheral secure context assignment… … … … … … . 566 Figure 723. STM32CubeMX project - Clock source secure context assignment… … … … … . . 566 Figure 724. LPBAM project - Peripheral no context assignment … … … … … … … … … . . 567 Figure 725. LPBAM application - Clock source no context assignment… … … … … … … … 567 Figure 726. LPBAM application - Secure context assignment… … … … … … … … … … . 568 Figure 727. LPBAM design security coherency check… … … … … … … … … … … … . 568 Figure 728. Block mapping … … … … … … … … … … … … … … … … … … … 570 Figure 729. Block remapping… … … … … … … … … … … … … … … … … … . . 571 Figure 730. Block remapping - Example 1… … … … … … … … … … … … … … … . 572 Figure 731. Block remapping - Example 2… … … … … … … … … … … … … … … . 572 Figure 732. Block inter-dependency - SPI signals assigned to PB3/4/5 … … … … … … … . . 573 Figure 733. Block inter-dependency - SPI1_MISO function assigned to PA6 … … … … … … . 574 Figure 734. One block = one peripheral mode - I2C1_SMBA function assigned to PB5… … … . . 575
Figure 735. Block remapping - Example 2… … … … … … … … … … … … … … … . 576 Figure 736. Function remapping example … … … … … … … … … … … … … … … . 576 Figure 737. Block shifting not applied … … … … … … … … … … … … … … … … . 577 Figure 738. Block shifting applied … … … … … … … … … … … … … … … … … . 578 Figure 739. FreeRTOS HOOK functions to be completed by user … … … … … … … … … 582 Figure 740. LwIP 1.4.1 configuration … … … … … … … … … … … … … … … … . . 583 Figure 741. LwIP 1.5 configuration … … … … … … … … … … … … … … … … … 584 Figure 742. Libjpeg configuration window … … … … … … … … … … … … … … … . 586 Figure 743. Mbed TLS without LwIP … … … … … … … … … … … … … … … … . . 587 Figure 744. Mbed TLS with LwIP and FreeRTOS … … … … … … … … … … … … … . 588 Figure 745. Mbed TLS configuration window… … … … … … … … … … … … … … . . 589 Figure 746. Enabling the TouchSensing peripheral… … … … … … … … … … … … … 590
Figure 747. Touch-sensing sensor selection panel … … … … … … … … … … … … … 591 Figure 748. TouchSensing configuration panel … … … … … … … … … … … … … … 592 Figure 749. BLE and Thread middleware support in STM32CubeMX… … … … … … … … . 593 Figure 750. STM32CubeWB Package download … … … … … … … … … … … … … . 594 Figure 751. STM32CubeWB BLE applications folder … … … … … … … … … … … … . 595 Figure 752. BLE Server profile selection … … … … … … … … … … … … … … … . . 596 Figure 753. BLE Client profile selection… … … … … … … … … … … … … … … … 596 Figure 754. Thread application selection… … … … … … … … … … … … … … … . . 597 Figure 755. Enabling OpenAmp for STM32MPUs… … … … … … … … … … … … … . 598 Figure 756. Enabling the Resource Manager for STM32MPUs… … … … … … … … … … 599 Figure 757. Resource Manager: peripheral assignment view … … … … … … … … … … . 600 Figure 758. STM32Cube Embedded Software package … … … … … … … … … … … . . 606
STM32Cube overview