annotate Discovery/Inc/firmwareEraseProgram.h @ 1028:3d9552e4997c GasConsumption

Code improvment: line <=> menu id function: In generell the structure of the menus is defined by the tStructure.h using global state defines. In some implementation hardcoded line numbers are used. Risk: In case the order of menu items change the update of other code sections could be forgotten (in the case the update of the top menu) causing unintended behavior. To avoid this the hard coded lines have been replaced by a function connecting the intended function to the menu item defined in the tstructure.h.
author Ideenmodellierer
date Sun, 07 Sep 2025 19:08:43 +0200
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)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
42 /* Exported functions --------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
43
1017
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
44 typedef struct
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
45 {
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
46 // 8 bytes
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
47 uint16_t primarySerial;
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
48 uint8_t primaryLicence;
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
49 uint8_t revision8bit;
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
50 uint8_t production_year;
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
51 uint8_t production_month;
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
52 uint8_t production_day;
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
53 uint8_t production_bluetooth_name_set;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
54
1017
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
55 // 44 bytes
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
56 char production_info[44];
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
57
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
58 // 8 bytes
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
59 uint16_t secondarySerial;
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
60 uint8_t secondaryLicence;
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
61 uint8_t secondaryReason8bit;
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
62 uint8_t secondary_year;
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
63 uint8_t secondary_month;
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
64 uint8_t secondary_day;
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
65 uint8_t secondary_bluetooth_name_set;
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
66
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
67 // 4 bytes
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
68 char secondary_info[4];
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
69 } SHardwareData;
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
70
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
71
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
72 uint32_t CalcFletcher32(uint32_t startAddr, uint32_t endAddr);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
73
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
74 uint8_t firmware_eraseFlashMemory(void);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
75 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
76
1017
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
77 uint8_t bootloader_eraseFlashMemory(void);
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
78 uint8_t bootloader_programFlashMemory(uint8_t *pBuffer1, uint32_t length1, SHardwareData* pHwInfo);
5924a2d1d3ba Prepare custom block update function:
Ideenmodellierer
parents: 38
diff changeset
79
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
80 uint8_t firmware2_variable_upperpart_eraseFlashMemory(uint32_t length, uint32_t offset);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
81 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
82
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
83 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
84 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
85 uint8_t hardware_programmPrimaryBluetoothNameSet(void);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
86 uint8_t hardware_programmSecondaryBluetoothNameSet(void);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
87
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
88 #endif // FIRMWARE_ERASE_PROGRAM_H