Mercurial > public > ostc4
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 |
| rev | line source |
|---|---|
| 38 | 1 /////////////////////////////////////////////////////////////////////////////// |
| 2 /// -*- coding: UTF-8 -*- | |
| 3 /// | |
| 4 /// \file Discovery/Inc/firmwareEraseProgram.h | |
| 5 /// \brief erase and program the STM32F4xx internal FLASH memory | |
| 6 /// \author heinrichs weikamp gmbh | |
| 7 /// \date 05-May-2015 | |
| 8 /// | |
| 9 /// $Id$ | |
| 10 /////////////////////////////////////////////////////////////////////////////// | |
| 11 /// \par Copyright (c) 2014-2018 Heinrichs Weikamp gmbh | |
| 12 /// | |
| 13 /// This program is free software: you can redistribute it and/or modify | |
| 14 /// it under the terms of the GNU General Public License as published by | |
| 15 /// the Free Software Foundation, either version 3 of the License, or | |
| 16 /// (at your option) any later version. | |
| 17 /// | |
| 18 /// This program is distributed in the hope that it will be useful, | |
| 19 /// but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 20 /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 21 /// GNU General Public License for more details. | |
| 22 /// | |
| 23 /// You should have received a copy of the GNU General Public License | |
| 24 /// along with this program. If not, see <http://www.gnu.org/licenses/>. | |
| 25 ////////////////////////////////////////////////////////////////////////////// | |
| 26 | |
| 27 /* Define to prevent recursive inclusion -------------------------------------*/ | |
| 28 #ifndef FIRMWARE_ERASE_PROGRAM_H | |
| 29 #define FIRMWARE_ERASE_PROGRAM_H | |
| 30 | |
| 31 #ifdef __cplusplus | |
| 32 extern "C" { | |
| 33 #endif | |
| 34 | |
| 35 /* Includes ------------------------------------------------------------------*/ | |
| 36 #include "stm32f4xx_hal.h" | |
| 37 | |
| 38 /* Exported variables --------------------------------------------------------*/ | |
| 39 /* Exported types ------------------------------------------------------------*/ | |
| 40 | |
| 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 | 83 /* Exported functions --------------------------------------------------------*/ |
| 84 | |
| 1017 | 85 typedef struct |
| 86 { | |
| 87 // 8 bytes | |
| 88 uint16_t primarySerial; | |
| 89 uint8_t primaryLicence; | |
| 90 uint8_t revision8bit; | |
| 91 uint8_t production_year; | |
| 92 uint8_t production_month; | |
| 93 uint8_t production_day; | |
| 94 uint8_t production_bluetooth_name_set; | |
| 38 | 95 |
| 1017 | 96 // 44 bytes |
| 97 char production_info[44]; | |
| 98 | |
| 99 // 8 bytes | |
| 100 uint16_t secondarySerial; | |
| 101 uint8_t secondaryLicence; | |
| 102 uint8_t secondaryReason8bit; | |
| 103 uint8_t secondary_year; | |
| 104 uint8_t secondary_month; | |
| 105 uint8_t secondary_day; | |
| 106 uint8_t secondary_bluetooth_name_set; | |
| 107 | |
| 108 // 4 bytes | |
| 109 char secondary_info[4]; | |
| 110 } SHardwareData; | |
| 111 | |
| 112 | |
| 113 uint32_t CalcFletcher32(uint32_t startAddr, uint32_t endAddr); | |
| 38 | 114 |
| 115 uint8_t firmware_eraseFlashMemory(void); | |
| 116 uint8_t firmware_programFlashMemory(uint8_t *pBuffer1, uint32_t length1);//, uint8_t *pBuffer2, uint32_t length2) | |
| 117 | |
| 1017 | 118 uint8_t bootloader_eraseFlashMemory(void); |
| 119 uint8_t bootloader_programFlashMemory(uint8_t *pBuffer1, uint32_t length1, SHardwareData* pHwInfo); | |
| 120 | |
| 38 | 121 uint8_t firmware2_variable_upperpart_eraseFlashMemory(uint32_t length, uint32_t offset); |
| 122 uint8_t firmware2_variable_upperpart_programFlashMemory(uint32_t length, uint32_t offset, uint8_t *pBuffer1, uint32_t pBuffer1Size, uint8_t *pBuffer2); | |
| 123 | |
| 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] | |
| 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 | |
| 126 uint8_t hardware_programmPrimaryBluetoothNameSet(void); | |
| 127 uint8_t hardware_programmSecondaryBluetoothNameSet(void); | |
| 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 | 132 #endif // FIRMWARE_ERASE_PROGRAM_H |
