Mercurial > public > ostc4
annotate Discovery/Inc/firmwareEraseProgram.h @ 1068:3c3fb9f4edc4 Icon_Integration
Increase version number for testing
| author | heinrichsweikamp |
|---|---|
| date | Tue, 17 Feb 2026 12:22:47 +0100 |
| parents | a7ed4eb3142b |
| 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 |
