MCCI Trusted Bootloader
Simple trusted bootloader and tools for small embedded systems
mccibootloaderboard_stm32h7b3i_dk_request.c
Go to the documentation of this file.
1/*
2
3Module: mccibootloaderboard_stm32h7b3i_dk_request.c
4
5Function:
6 Request variables and accessors 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
23#include "mcci_stm32h7xx.h"
24
25/****************************************************************************\
26|
27| Manifest constants & typedefs.
28|
29\****************************************************************************/
30
31
32/****************************************************************************\
33|
34| Read-only data.
35|
36\****************************************************************************/
37
38
39/****************************************************************************\
40|
41| Variables.
42|
43\****************************************************************************/
44
45static
46McciBootloaderBoard_Stm32h7b3iDk_Request_t
53
54static
55McciBootloaderBoard_Stm32h7b3iDk_Request_t
62
63McciBootloaderBoard_Stm32h7b3iDk_Request_t *
65 {
66 McciBootloaderBoard_Stm32h7b3iDk_Request_t *pRequest;
67
68 /* convert to a pointer to the request */
69 pRequest = (McciBootloaderBoard_Stm32h7b3iDk_Request_t *)
71 if (pRequest->MagicBegin == MCCI_BOOTLOADER_STM32H7B3I_DK_REQUEST_MAGIC_BEGIN &&
73 {
74 return pRequest;
75 }
76 else
77 {
79 }
80 }
81
82bool
84 {
85 const McciBootloaderBoard_Stm32h7b3iDk_Request_t * const
87
88 if (pRequest->fUpdateRequest == MCCI_BOOTLOADER_STM32H7B3I_DK_REQUEST_UPDATE_REQUEST)
89 return true;
90 else
91 return false;
92 }
93
94void
96 {
97 const McciBootloaderBoard_Stm32h7b3iDk_Request_t *pRequest;
98 uint32_t value;
99 volatile const void *pRequestBase;
100
103
104 // if it's already set to the right value, just return.
105 if (pRequest->fUpdateRequest == value)
106 return;
107
109 McciBootloader_Stm32h7_systemFlashErase(pRequestBase, sizeof(*pRequest));
110 if (fRequest)
111 {
114 pRequestBase,
115 pRequest,
116 sizeof(*pRequest)
117 );
118 }
119 }
120
121/**** end of mccibootloaderboard_stm32h7b3i_dk_request.c ****/
McciBootloaderPlatform_SetUpdateFlagFn_t McciBootloaderBoard_Stm32h7b3iDk_setUpdate
#define MCCI_BOOTLOADER_STM32H7B3I_DK_REQUEST_UPDATE_REQUEST
the distinguished "update request" value
volatile const uint8_t gk_McciBootloaderBoard_Stm32h7b3iDk_UpdateRequestBase[]
base address of the update request region in flash.
#define MCCI_BOOTLOADER_STM32H7B3I_DK_REQUEST_MAGIC_BEGIN
mark the beginning of a bootloader REQUEST section
#define MCCI_BOOTLOADER_STM32H7B3I_DK_REQUEST_MAGIC_END
mark the end of a bootloader REQUEST section
McciBootloaderPlatform_SystemFlashWriteFn_t McciBootloader_Stm32h7_systemFlashWrite
McciBootloaderPlatform_SystemFlashEraseFn_t McciBootloader_Stm32h7_systemFlashErase
bool McciBootloaderBoard_Stm32h7b3iDk_getUpdate(void)
McciBootloaderBoard_Stm32h7b3iDk_Request_t * McciBootloaderBoard_Stm32h7b3iDk_getRequestPointer(void)
static McciBootloaderBoard_Stm32h7b3iDk_Request_t sg_McciBootloaderBoard_Stm32h7b3iDk_RequestYes
static McciBootloaderBoard_Stm32h7b3iDk_Request_t sg_McciBootloaderBoard_Stm32h7b3iDk_RequestNo