annotate Discovery/Inc/firmwareEraseProgram.h @ 1069:e0ba2b29dc1f Icon_Integration tip

Dev Bugfix: Analog channel 0 overwrites digital channel 0: The search for the next analog channel was stopped in case the iteration is reset to zero => channel 0 was always sampled, even if no connected sensor was detected. This caused the values of a connected digital sensor to be overwritten. The search loop will now (again) iterate till it finds a new sensor or till the index reachs the active sensor index.
author Ideenmodellierer
date Tue, 17 Feb 2026 20:46:45 +0100
parents a7ed4eb3142b
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