MCCI Trusted Bootloader
Simple trusted bootloader and tools for small embedded systems
mccibootloaderboard_stm32h7b3i_dk_vectors.c
Go to the documentation of this file.
1/*
2
3Module: mccibootloaderboard_stm32h7b3i_dk_vectors.c
4
5Function:
6 Vectors for bootloader for STM32H7B3I_DK boards
7
8Copyright and License:
9 This file copyright (C) 2021 by
10
11 MCCI Corporation
12 3520 Krums Corners Road
13 Ithaca, NY 14850
14
15 See accompanying LICENSE file for copyright and license information.
16
17Author:
18 ChaeHee Won, MCCI Corporation June 2021
19
20*/
21
22#include "mcci_bootloader.h"
25
26/****************************************************************************\
27|
28| Manifest constants & typedefs.
29|
30\****************************************************************************/
31
33
36
37/****************************************************************************\
38|
39| Read-only data.
40|
41\****************************************************************************/
42
45 {
46 .PageZero =
47 {
49 {
50 [0] = /* stack pointer */ (uint32_t) &g_McciBootloader_StackTop[0],
51 [1] = /* entry point */ (uint32_t) McciBootloader_main,
52 [2] = /* NMI */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
53 [3] = /* HardFault */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
54 [4] = /* MemManage */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
55 [5] = /* BusFault */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
56 [6] = /* UsageFault */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
57 [7] = /* reserved */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
58 [8] = /* reserved */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
59 [9] = /* reserved */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
60 [10] = /* reserved */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
61 [11] = /* SVCall */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_SvcHandler,
62 [12] = /* DebugMon */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
63 [13] = /* reserved */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
64 [14] = /* PendSV */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
65 [15] = /* SysTick */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_handleSysTick,
66 /*
67 || External Interrupts
68 */
69 [16] = /* WWDG */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
70 [17] = /* PVD_PVM */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
71 [18] = /* RTC_TAMP_STAMP */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
72 [19] = /* RTC_WKUP */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
73 [20] = /* FLASH */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
74 [21] = /* RCC */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
75 [22] = /* EXTI0 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
76 [23] = /* EXTI1 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
77 [24] = /* EXTI2 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
78 [25] = /* EXTI3 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
79 [26] = /* EXTI4 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
80 [27] = /* DMA1_Stream0 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
81 [28] = /* DMA1_Stream1 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
82 [29] = /* DMA1_Stream2 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
83 [30] = /* DMA1_Stream3 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
84 [31] = /* DMA1_Stream4 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
85 [32] = /* DMA1_Stream5 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
86 [33] = /* DMA1_Stream6 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
87 [34] = /* ADC */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
88 [35] = /* FDCAN1_IT0 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
89 [36] = /* FDCAN2_IT0 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
90 [37] = /* FDCAN1_IT1 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
91 [38] = /* FDCAN2_IT1 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
92 [39] = /* EXTI9_5 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
93 [40] = /* TIM1_BRK */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
94 [41] = /* TIM1_UP */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
95 [42] = /* TIM1_TRG_COM */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
96 [43] = /* TIM1_CC */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
97 [44] = /* TIM2 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
98 [45] = /* TIM3 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
99 [46] = /* TIM4 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
100 [47] = /* I2C1_EV */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
101 [48] = /* I2C1_ER */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
102 [49] = /* I2C2_EV */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
103 [50] = /* I2C2_ER */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
104 [51] = /* SPI1 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
105 [52] = /* SPI2 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
106 [53] = /* USART1 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
107 [54] = /* USART2 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
108 [55] = /* USART3 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
109 [56] = /* EXTI15_10 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
110 [57] = /* RTC_Alarm */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
111 [58] = /* DFSDM2 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
112 [59] = /* TIM8_BRK_TIM12 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
113 [60] = /* TIM8_UP_TIM13 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
114 [61] = /* TIM8_TRG_COM_TIM14 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
115 [62] = /* TIM8_CC */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
116 [63] = /* DMA1_Stream7 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
117 [64] = /* FMC */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
118 [65] = /* SDMMC1 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
119 [66] = /* TIM5 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
120 [67] = /* SPI3 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
121 [68] = /* UART4 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
122 [69] = /* UART5 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
123 [70] = /* TIM6_DAC */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
124 [71] = /* TIM7 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
125 [72] = /* DMA2_Stream0 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
126 [73] = /* DMA2_Stream1 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
127 [74] = /* DMA2_Stream2 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
128 [75] = /* DMA2_Stream3 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
129 [76] = /* DMA2_Stream4 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
130 [77] = /* Reserved */ 0,
131 [78] = /* Reserved */ 0,
132 [79] = /* FDCAN_CAL */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
133 [80] = /* DFSDM1_FLT4 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
134 [81] = /* DFSDM1_FLT5 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
135 [82] = /* DFSDM1_FLT6 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
136 [83] = /* DFSDM1_FLT7 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
137 [84] = /* DMA2_Stream5 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
138 [85] = /* DMA2_Stream6 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
139 [86] = /* DMA2_Stream7 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
140 [87] = /* USART6 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
141 [88] = /* I2C3_EV */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
142 [89] = /* I2C3_ER */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
143 [90] = /* OTG_HS_EP1_OUT */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
144 [91] = /* OTG_HS_EP1_IN */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
145 [92] = /* OTG_HS_WKUP */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
146 [93] = /* OTG_HS */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
147 [94] = /* DCMI_PSSI */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
148 [95] = /* CRYP */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
149 [96] = /* HASH_RNG */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
150 [97] = /* FPU */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
151 [98] = /* UART7 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
152 [99] = /* UART8 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
153 [100] = /* SPI4 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
154 [101] = /* SPI5 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
155 [102] = /* SPI6 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
156 [103] = /* SAI1 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
157 [104] = /* LTDC */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
158 [105] = /* LTDC_ER */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
159 [106] = /* DMA2D */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
160 [107] = /* SAI2 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
161 [108] = /* OCTOSPI1 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
162 [109] = /* LPTIM1 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
163 [110] = /* CEC */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
164 [111] = /* I2C4_EV */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
165 [112] = /* I2C4_ER */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
166 [113] = /* SPDIF_RX */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
167 [114] = /* Reserved */ 0,
168 [115] = /* Reserved */ 0,
169 [116] = /* Reserved */ 0,
170 [117] = /* Reserved */ 0,
171 [118] = /* DMAMUX1_OVR */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
172 [119] = /* Reserved */ 0,
173 [120] = /* Reserved */ 0,
174 [121] = /* Reserved */ 0,
175 [122] = /* Reserved */ 0,
176 [123] = /* Reserved */ 0,
177 [124] = /* Reserved */ 0,
178 [125] = /* Reserved */ 0,
179 [126] = /* DFSDM1_FLT0 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
180 [127] = /* DFSDM1_FLT1 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
181 [128] = /* DFSDM1_FLT2 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
182 [129] = /* DFSDM1_FLT3 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
183 [130] = /* Reserved */ 0,
184 [131] = /* SWPMI1 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
185 [132] = /* TIM15 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
186 [133] = /* TIM16 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
187 [134] = /* TIM17 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
188 [135] = /* MDIOS_WKUP */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
189 [136] = /* MDIOS */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
190 [137] = /* JPEG */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
191 [138] = /* MDMA */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
192 [139] = /* Reserved */ 0,
193 [140] = /* SDMMC2 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
194 [141] = /* HSEM1 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
195 [142] = /* Reserved */ 0,
196 [143] = /* DAC2 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
197 [144] = /* DMAMUX2_OVR */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
198 [145] = /* BDMA2_Channel0 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
199 [146] = /* BDMA2_Channel1 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
200 [147] = /* BDMA2_Channel2 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
201 [148] = /* BDMA2_Channel3 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
202 [149] = /* BDMA2_Channel4 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
203 [150] = /* BDMA2_Channel5 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
204 [151] = /* BDMA2_Channel6 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
205 [152] = /* BDMA2_Channel7 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
206 [153] = /* COMP */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
207 [154] = /* LPTIM2 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
208 [155] = /* LPTIM3 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
209 [156] = /* UART9 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
210 [157] = /* UART10 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
211 [158] = /* LPUART1 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
212 [159] = /* Reserved */ 0,
213 [160] = /* CRS */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
214 [161] = /* ECC */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
215 [162] = /* Reserved */ 0,
216 [163] = /* DTS */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
217 [164] = /* Reserved */ 0,
218 [165] = /* WAKEUP_PIN */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
219 [166] = /* OCTOSPI2 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
220 [167] = /* OTFDEC1 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
221 [168] = /* OTFDEC2 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
222 [169] = /* GFXMMU */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
223 [170] = /* BDMA1 */ (uint32_t) McciBootloaderBoard_Stm32h7b3iDk_NotHandled,
224 },
225 .AppInfo =
226 {
228 .size = sizeof(McciBootloader_AppInfo_t),
229 .targetAddress = (uint32_t) &gk_McciBootloader_CortexVectors,
230 .imagesize = (uint32_t) &gk_McciBootloader_ImageSize[0],
231 .authsize = sizeof(McciBootloader_SignatureBlock_t),
232 }
233 }
234 };
235
236// instantiate the signature block.
237const McciBootloader_SignatureBlock_t
239
240
241/****************************************************************************\
242|
243| Variables.
244|
245\****************************************************************************/
246
247
248/****************************************************************************\
249|
250| Code
251|
252\****************************************************************************/
253
254/// \brief interrupt not handled; loop.
255static void
257 {
258 while (true)
259 ;
260 }
261
262/// \brief SVC handler -- immediately returns
263static void
267 uint32_t arg1,
268 uint32_t arg2
269 )
270 {
272
274
275 switch (svcRequest)
276 {
278 {
279 uint32_t ** const pResult = (uint32_t **)arg1;
280 McciBootloaderBoard_Stm32h7b3iDk_Request_t * const pRequest =
282
283 /* return pointer to user */
284 if (pResult != NULL)
285 *pResult = &pRequest->fUpdateRequest;
286 else
288 }
289 break;
290
292 {
293 mcci_tweetnacl_sha512_t * const pHash = (void *)arg1;
294
295 mcci_tweetnacl_hashblocks_sha512_init(pHash);
296 }
297 break;
298
300 {
302 pArg = (void *)arg1;
303
304 if (arg1 == 0 || (arg1 & 3) != 0)
306 else
307 {
308 mcci_tweetnacl_sha512_t * const pHash = pArg->pHash;
309 pArg->nMessage = mcci_tweetnacl_hashblocks_sha512(
310 pHash,
311 pArg->pMessage,
312 pArg->nMessage
313 );
314 }
315 }
316 break;
317
319 {
321 pArg = (void *)arg1;
322
323 if (arg1 == 0 || (arg1 & 3) != 0)
325 else
326 {
327 mcci_tweetnacl_sha512_t * const pHash = pArg->pHash;
328 mcci_tweetnacl_hashblocks_sha512_finish(
329 pHash,
330 pArg->pMessage,
331 pArg->nMessage,
332 pArg->nOverall
333 );
334 }
335 }
336 break;
337
339 {
340 const mcci_tweetnacl_sha512_t * const
341 pArg1 = (void *)arg1;
342 const mcci_tweetnacl_sha512_t * const
343 pArg2 = (void *)arg2;
344
345 mcci_tweetnacl_result_t const r = mcci_tweetnacl_verify_64(pArg1->bytes, pArg2->bytes);
346 err = mcci_tweetnacl_result_is_success(r)
349 ;
350 }
351 break;
352
353 default:
355 break;
356 }
357
358 // return result
359 *pErrorCode = err;
360 }
361
362/**** end of mccibootloaderboard_stm32h7b3i_dk_vectors.c ****/
const uint8_t gk_McciBootloader_ImageSize[]
bootloader image size in bytes (linker-computed integer; use as (uint32_t) &gk_McciBootloader_ImageSi...
uint8_t g_McciBootloader_StackTop[]
initial stack pointer value (top of stack, linker-defined).
#define MCCI_BOOTLOADER_APP_INFO_MAGIC
void McciBootloaderBoard_Stm32h7b3iDk_handleSysTick(void)
McciBootloaderBoard_Stm32h7b3iDk_Request_t * McciBootloaderBoard_Stm32h7b3iDk_getRequestPointer(void)
void() McciBootloaderPlatform_ARMv6M_SvcHandlerFn_t(McciBootloaderPlatform_ARMv6M_SvcRq_t svcRequest, McciBootloaderPlatform_ARMv6M_SvcError_t *pErrorCode, uint32_t arg1, uint32_t arg2)
SVC function interface.
McciBootloaderPlatform_ARMv6M_SvcRq_t
SVC request codes for boot loader on ARMv6-M systems & such like.
@ McciBootloaderPlatform_ARMv6M_SvcRq_HashFinish
Call mcci_tweetnacl_hashblocks_finish().
@ McciBootloaderPlatform_ARMv6M_SvcRq_HashBlocks
Call mcci_tweetnacl_hashblocks_sha512().
@ McciBootloaderPlatform_ARMv6M_SvcRq_GetUpdatePointer
Fetch pointer to uint32_t "update" flag in EEPROM.
@ McciBootloaderPlatform_ARMv6M_SvcRq_HashInit
Call mcci_tweetnacl_hashblocks_sha512_init(). arg1 is pointer to hash block.
@ McciBootloaderPlatform_ARMv6M_SvcRq_Verify64
Call mcci_tweetnacl_verify64().
McciBootloaderPlatform_ARMv6M_SvcError_t
error codes from SVC handler on ARMv6-M systems & such like
@ McciBootloaderPlatform_SvcError_VerifyFailure
error: verify failure
@ McciBootloaderPlatform_SvcError_OK
successful processing
@ McciBootloaderPlatform_SvcError_InvalidParameter
error: invalid parameter to SVC
@ McciBootloaderPlatform_SvcError_Unclaimed
error: SVC isn't just unimplemented, it's unkown to the bootloader
void McciBootloader_main(void)
static McciBootloaderPlatform_ARMv6M_SvcHandlerFn_t McciBootloaderBoard_Stm32h7b3iDk_SvcHandler
static void McciBootloaderBoard_Stm32h7b3iDk_NotHandled(void)
interrupt not handled; loop.
const McciBootloader_SignatureBlock_t gk_McciBootloader_SignatureBlock
the application signature block
const McciBootloader_Stm32H7PageZero_t gk_McciBootloader_CortexVectors
the CortexM0 vectors for the boot loader.
argument to McciBootloaderPlatform_ARMv6M_SvcRq_HashBlocks
argument to McciBootloaderPlatform_ARMv6M_SvcRq_HashFinish
McciBootloader_Stm32H7PageZeroContents_t PageZero