annotate Discovery/Inc/firmwareEraseProgram.h @ 1067:a7ed4eb3142b Icon_Integration

Exit to Correct Menu when Exiting from 'Reset Menu' Submenus. Write Progress and Success Messages when Flashing the Bootloader. Only Show 'Flash Bootloader' if the Available Bootloader is Different from the Existing One. (mikeller)
author heinrichsweikamp
date Tue, 17 Feb 2026 09:49:37 +0100
parents 5924a2d1d3ba
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1 ///////////////////////////////////////////////////////////////////////////////
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2 /// -*- coding: UTF-8 -*-
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
4 /// \file Discovery/Inc/firmwareEraseProgram.h
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
5 /// \brief erase and program the STM32F4xx internal FLASH memory
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
6 /// \author heinrichs weikamp gmbh
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
7 /// \date 05-May-2015
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
8 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
9 /// $Id$
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
10 ///////////////////////////////////////////////////////////////////////////////
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
11 /// \par Copyright (c) 2014-2018 Heinrichs Weikamp gmbh
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
12 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
13 /// This program is free software: you can redistribute it and/or modify
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
14 /// it under the terms of the GNU General Public License as published by
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
15 /// the Free Software Foundation, either version 3 of the License, or
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
16 /// (at your option) any later version.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
17 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
18 /// This program is distributed in the hope that it will be useful,
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
19 /// but WITHOUT ANY WARRANTY; without even the implied warranty of
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
20 /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
21 /// GNU General Public License for more details.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
22 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
23 /// You should have received a copy of the GNU General Public License
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
24 /// along with this program. If not, see <http://www.gnu.org/licenses/>.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
25 //////////////////////////////////////////////////////////////////////////////
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
26
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
27 /* Define to prevent recursive inclusion -------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
28 #ifndef FIRMWARE_ERASE_PROGRAM_H
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
29 #define FIRMWARE_ERASE_PROGRAM_H
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
30
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
31 #ifdef __cplusplus
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
32 extern "C" {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
33 #endif
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
34
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
35 /* Includes ------------------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
36 #include "stm32f4xx_hal.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
37
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
38 /* Exported variables --------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
39 /* Exported types ------------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
40
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
41 #define HARDWAREDATA_ADDRESS (0x08000000 + 0x0000A040)
1067
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
42
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
43 /* Flash memory layout - Base address of Flash sectors Bank 1 */
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
44 #define ADDR_FLASH_SECTOR_0 ((uint32_t)0x08000000) /* Base @ of Sector 0, 16 Kbytes */
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
45 #define ADDR_FLASH_SECTOR_1 ((uint32_t)0x08004000) /* Base @ of Sector 1, 16 Kbytes */
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
46 #define ADDR_FLASH_SECTOR_2 ((uint32_t)0x08008000) /* Base @ of Sector 2, 16 Kbytes */
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
47 #define ADDR_FLASH_SECTOR_3 ((uint32_t)0x0800C000) /* Base @ of Sector 3, 16 Kbytes */
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
48 #define ADDR_FLASH_SECTOR_4 ((uint32_t)0x08010000) /* Base @ of Sector 4, 64 Kbytes */
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
49 #define ADDR_FLASH_SECTOR_5 ((uint32_t)0x08020000) /* Base @ of Sector 5, 128 Kbytes */
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
50 #define ADDR_FLASH_SECTOR_6 ((uint32_t)0x08040000) /* Base @ of Sector 6, 128 Kbytes */
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
51 #define ADDR_FLASH_SECTOR_7 ((uint32_t)0x08060000) /* Base @ of Sector 7, 128 Kbytes */
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
52 #define ADDR_FLASH_SECTOR_8 ((uint32_t)0x08080000) /* Base @ of Sector 8, 128 Kbytes */
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
53 #define ADDR_FLASH_SECTOR_9 ((uint32_t)0x080A0000) /* Base @ of Sector 9, 128 Kbytes */
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
54 #define ADDR_FLASH_SECTOR_10 ((uint32_t)0x080C0000) /* Base @ of Sector 10, 128 Kbytes */
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
55 #define ADDR_FLASH_SECTOR_11 ((uint32_t)0x080E0000) /* Base @ of Sector 11, 128 Kbytes */
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
56
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
57 /* Base address of Flash sectors Bank 2 */
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
58 #define ADDR_FLASH_SECTOR_12 ((uint32_t)0x08100000) /* Base @ of Sector 12, 16 Kbytes */
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
59 #define ADDR_FLASH_SECTOR_13 ((uint32_t)0x08104000) /* Base @ of Sector 13, 16 Kbytes */
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
60 #define ADDR_FLASH_SECTOR_14 ((uint32_t)0x08108000) /* Base @ of Sector 14, 16 Kbytes */
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
61 #define ADDR_FLASH_SECTOR_15 ((uint32_t)0x0810C000) /* Base @ of Sector 15, 16 Kbytes */
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
62 #define ADDR_FLASH_SECTOR_16 ((uint32_t)0x08110000) /* Base @ of Sector 16, 64 Kbytes */
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
63 #define ADDR_FLASH_SECTOR_17 ((uint32_t)0x08120000) /* Base @ of Sector 17, 128 Kbytes */
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
64 #define ADDR_FLASH_SECTOR_18 ((uint32_t)0x08140000) /* Base @ of Sector 18, 128 Kbytes */
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
65 #define ADDR_FLASH_SECTOR_19 ((uint32_t)0x08160000) /* Base @ of Sector 19, 128 Kbytes */
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
66 #define ADDR_FLASH_SECTOR_20 ((uint32_t)0x08180000) /* Base @ of Sector 20, 128 Kbytes */
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
67 #define ADDR_FLASH_SECTOR_21 ((uint32_t)0x081A0000) /* Base @ of Sector 21, 128 Kbytes */
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
68 #define ADDR_FLASH_SECTOR_22 ((uint32_t)0x081C0000) /* Base @ of Sector 22, 128 Kbytes */
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
69 #define ADDR_FLASH_SECTOR_23 ((uint32_t)0x081E0000) /* Base @ of Sector 23, 128 Kbytes */
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
70
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
71 #define SECTOR_SIZE_128KB ((uint32_t)0x00020000)
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
72
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
73 /* Flash memory regions */
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
74 #define FLASH_BOOT_START_ADDR ADDR_FLASH_SECTOR_0
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
75 #define FLASH_BOOT_END_ADDR (ADDR_FLASH_SECTOR_5 - 1)
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
76
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
77 #define FLASH_FW_START_ADDR ADDR_FLASH_SECTOR_6
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
78 #define FLASH_FW_END_ADDR (ADDR_FLASH_SECTOR_12 - 1)
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
79
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
80 #define FLASH_FW2_START_ADDR ADDR_FLASH_SECTOR_12
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
81 #define FLASH_FW2_END_ADDR (ADDR_FLASH_SECTOR_22 + SECTOR_SIZE_128KB - 1)
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
82
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
83 /* Exported functions --------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
84
1017
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
85 typedef struct
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
86 {
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
87 // 8 bytes
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
88 uint16_t primarySerial;
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
89 uint8_t primaryLicence;
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
90 uint8_t revision8bit;
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
91 uint8_t production_year;
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
92 uint8_t production_month;
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
93 uint8_t production_day;
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
94 uint8_t production_bluetooth_name_set;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
95
1017
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
96 // 44 bytes
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
97 char production_info[44];
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
98
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
99 // 8 bytes
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
100 uint16_t secondarySerial;
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
101 uint8_t secondaryLicence;
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
102 uint8_t secondaryReason8bit;
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
103 uint8_t secondary_year;
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
104 uint8_t secondary_month;
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
105 uint8_t secondary_day;
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
106 uint8_t secondary_bluetooth_name_set;
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
107
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
108 // 4 bytes
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
109 char secondary_info[4];
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
110 } SHardwareData;
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
111
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
112
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
113 uint32_t CalcFletcher32(uint32_t startAddr, uint32_t endAddr);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
114
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
115 uint8_t firmware_eraseFlashMemory(void);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
116 uint8_t firmware_programFlashMemory(uint8_t *pBuffer1, uint32_t length1);//, uint8_t *pBuffer2, uint32_t length2)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
117
1017
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
118 uint8_t bootloader_eraseFlashMemory(void);
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
119 uint8_t bootloader_programFlashMemory(uint8_t *pBuffer1, uint32_t length1, SHardwareData* pHwInfo);
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
120
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
121 uint8_t firmware2_variable_upperpart_eraseFlashMemory(uint32_t length, uint32_t offset);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
122 uint8_t firmware2_variable_upperpart_programFlashMemory(uint32_t length, uint32_t offset, uint8_t *pBuffer1, uint32_t pBuffer1Size, uint8_t *pBuffer2);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
123
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
124 uint8_t hardware_programmProductionData(uint8_t *buffer52); // uint16_t serial, uint16_t revision, uint8_t year, uint8_t month, uint8_t day, uint8_t sub, uint8_t *info[48]
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
125 uint8_t hardware_programmSecondarySerial(uint8_t *buffer12); // uint16_t serial, uint16_t reason, uint8_t year, uint8_t month, uint8_t day, uint8_t sub
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
126 uint8_t hardware_programmPrimaryBluetoothNameSet(void);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
127 uint8_t hardware_programmSecondaryBluetoothNameSet(void);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
128
1067
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
129 #ifdef __cplusplus
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
130 }
a7ed4eb3142b Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents: 1017
diff changeset
131 #endif
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
132 #endif // FIRMWARE_ERASE_PROGRAM_H