annotate BootLoader/Src/externLogbookFlash_mini.c @ 1054:8fe6676f28c9 Icon_Integration tip

Restructure reset menu: The reset for custom icon back to the default has been added. Without modification it would not have fit into the reset menu. To add some space all reset operations have been moved into a general "Reset" menu linke it is also implemented for the reboot options. The icon reset option is only show if an icon is stored.
author Ideenmodellierer
date Wed, 31 Dec 2025 17:52:03 +0100
parents 493a5903ec20
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
985
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
1 /**
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
2 ******************************************************************************
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
3 * @copyright heinrichs weikamp
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
4 * @file externLogbookFlash.c
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
5 * @author heinrichs weikamp gmbh
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
6 * @date 07-Aug-2014
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
7 * @version V0.0.4
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
8 * @since 29-Sept-2015
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
9 * @brief Main File to access the new 1.8 Volt Spansion S25FS256S 256 Mbit (32 Mbyte)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
10 * @bug
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
11 * @warning
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
12 *
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
13 @verbatim
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
14 ==============================================================================
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
15 ##### Logbook Header (TOC) #####
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
16 ==============================================================================
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
17 [..] Memory useage:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
18 NEW: Spansion S25FS-S256S
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
19
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
20 only 8x 4KB and 1x 32KB, remaining is 64KB or 256KB
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
21 Sector Size (kbyte) Sector Count Sector Range Address Range (Byte Address) Notes
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
22 4 8 SA00 00000000h-00000FFFh
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
23 : :
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
24 SA07 00007000h-00007FFFh
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
25
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
26 32 1 SA08 00008000h-0000FFFFh
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
27
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
28 64 511 SA09 00010000h-0001FFFFh
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
29 : :
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
30 SA519 01FF0000h-01FFFFFFh
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
31 OLD:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
32 1kB each header
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
33 with predive header at beginning
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
34 and postdive header with 0x400 HEADER2OFFSET
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
35 4kB (one erase) has two dives with 4 headers total
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
36 total of 512 kB (with 256 header ids (8 bit))
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
37 Size is 280 Byte (as of 25.Nov. 2014)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
38
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
39 [..] Output to PC / UART is postdive header
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
40
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
41 [..] Block Protection Lock-Down is to erase logbook only
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
42
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
43 [..] Timing (see page 137 of LOGBOOK_V3_S25FS-S_00-271247.pdf
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
44 bulk erase is 2 minutes typ., 6 minutes max.
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
45
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
46 ==============================================================================
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
47 ##### DEMOMODE #####
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
48 ==============================================================================
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
49 151215: ext_flash_write_settings() is DISABLED!
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
50
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
51 ==============================================================================
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
52 ##### bug fixes #####
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
53 ==============================================================================
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
54 150917: end in header and length of sample was one byte too long
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
55 as stated by Jef Driesen email 15.09.2015
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
56
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
57 @endverbatim
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
58 ******************************************************************************
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
59 * @attention
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
60 *
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
61 * <h2><center>&copy; COPYRIGHT(c) 2015 heinrichs weikamp</center></h2>
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
62 *
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
63 ******************************************************************************
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
64 */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
65
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
66 /* Includes ------------------------------------------------------------------*/
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
67 #include "stm32f4xx_hal.h"
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
68 #include "externLogbookFlash.h"
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
69 #include "ostc.h"
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
70 #include "settings.h"
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
71 #include "gfx_engine.h"
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
72
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
73 /* Private types -------------------------------------------------------------*/
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
74 #define FLASHSTART 0x000000
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
75 //#define FLASHSTOP 0x01FFFFFF all 32 MB with 4byte addressing
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
76 #define FLASHSTOP 0x00FFFFFF
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
77 //#define FLASHSTOP 0x3FFFFF
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
78 #define RELEASE 1
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
79 #define HOLDCS 0
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
80
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
81 #define HEADER2OFFSET 0x400
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
82
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
83 typedef struct{
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
84 uint8_t IsBusy:1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
85 uint8_t IsWriteEnabled:1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
86 uint8_t BlockProtect0:1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
87 uint8_t BlockProtect1:1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
88 uint8_t BlockProtect2:1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
89 uint8_t BlockProtect3:1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
90 uint8_t IsAutoAddressIncMode:1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
91 uint8_t BlockProtectL:1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
92 } extFlashStatusUbit8_t;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
93
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
94 typedef union{
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
95 extFlashStatusUbit8_t ub;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
96 uint8_t uw;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
97 } extFlashStatusBit8_Type;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
98
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
99
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
100 /* Exported variables --------------------------------------------------------*/
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
101
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
102 /* Private variables ---------------------------------------------------------*/
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
103
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
104 static uint32_t actualAddress = 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
105 static uint32_t preparedPageAddress = 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
106 static uint32_t closeSectorAddress = 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
107 static uint32_t actualPointerHeader = 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
108 static uint32_t actualPointerSample = 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
109 static uint32_t actualPointerDevicedata = DDSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
110 static uint32_t actualPointerVPM = 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
111 static uint32_t actualPointerSettings = SETTINGSSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
112 static uint32_t actualPointerFirmware = 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
113 static uint32_t actualPointerFirmware2 = 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
114
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
115 /* Private function prototypes -----------------------------------------------*/
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
116 static void chip_unselect(void);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
117 static void chip_select(void);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
118 static void write_spi(uint8_t data, uint8_t unselect_CS_afterwards);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
119 static uint8_t read_spi(uint8_t unselect_CS_afterwards);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
120 static void write_address(uint8_t unselect_CS_afterwards);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
121 static void Error_Handler_extflash(void);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
122 static void wait_chip_not_busy(void);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
123 static void ext_flash_incf_address(uint8_t type);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
124 //void ext_flash_incf_address_ring(void);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
125
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
126 static void ext_flash_erase4kB(void);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
127 static void ext_flash_erase32kB(void);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
128 static void ext_flash_erase64kB(void);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
129 static uint8_t ext_flash_erase_if_on_page_start(void);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
130
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
131 static void ef_write_block(uint8_t * sendByte, uint32_t length, uint8_t type, uint8_t do_not_erase);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
132
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
133 static void ext_flash_read_block(uint8_t *getByte, uint8_t type);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
134 static void ext_flash_read_block_multi(void *getByte, uint32_t size, uint8_t type);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
135 static void ext_flash_read_block_stop(void);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
136
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
137 static void ef_hw_rough_delay_us(uint32_t delayUs);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
138 static void ef_erase_64K(uint32_t blocks);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
139
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
140
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
141 /* Exported functions --------------------------------------------------------*/
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
142
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
143 void ext_flash_write_firmware(uint8_t *pSample1, uint32_t length1)//, uint8_t *pSample2, uint32_t length2)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
144 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
145 general32to8_Type lengthTransform;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
146
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
147 lengthTransform.u32 = length1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
148
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
149 actualPointerFirmware = FWSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
150 ef_write_block(lengthTransform.u8,4, EF_FIRMWARE, 1);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
151 ef_write_block(pSample1,length1, EF_FIRMWARE, 1);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
152
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
153 // if(length2)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
154 // ef_write_block(pSample2,length2, EF_FIRMWARE, 1);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
155 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
156
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
157 uint8_t ext_flash_read_firmware_version(char *text)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
158 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
159 uint32_t backup = actualAddress;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
160 uint8_t buffer[4];
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
161
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
162 // + 4 for length data, see ext_flash_write_firmware
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
163 actualAddress = FWSTART + 4 + 0x10000;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
164 ext_flash_read_block_start();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
165 ext_flash_read_block(&buffer[0], EF_FIRMWARE);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
166 ext_flash_read_block(&buffer[1], EF_FIRMWARE);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
167 ext_flash_read_block(&buffer[2], EF_FIRMWARE);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
168 ext_flash_read_block(&buffer[3], EF_FIRMWARE);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
169
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
170 ext_flash_read_block_stop();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
171 actualAddress = backup;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
172
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
173 uint8_t ptr = 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
174 text[ptr++] = 'V';
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
175 ptr += gfx_number_to_string(2,0,&text[ptr],buffer[0] & 0x3F);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
176 text[ptr++] = '.';
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
177 ptr += gfx_number_to_string(2,0,&text[ptr],buffer[1] & 0x3F);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
178 text[ptr++] = '.';
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
179 ptr += gfx_number_to_string(2,0,&text[ptr],buffer[2] & 0x3F);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
180 text[ptr++] = ' ';
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
181 if(buffer[3])
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
182 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
183 text[ptr++] = 'b';
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
184 text[ptr++] = 'e';
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
185 text[ptr++] = 't';
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
186 text[ptr++] = 'a';
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
187 text[ptr++] = ' ';
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
188 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
189 return ptr;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
190 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
191
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
192
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
193 uint32_t ext_flash_read_firmware(uint8_t *pSample1, uint32_t max_length, uint8_t *magicByte)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
194 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
195 uint32_t backup = actualAddress;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
196 general32to8_Type lengthTransform;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
197
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
198 actualAddress = FWSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
199 ext_flash_read_block_start();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
200
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
201 ext_flash_read_block(&lengthTransform.u8[0], EF_FIRMWARE);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
202 ext_flash_read_block(&lengthTransform.u8[1], EF_FIRMWARE);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
203 ext_flash_read_block(&lengthTransform.u8[2], EF_FIRMWARE);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
204 ext_flash_read_block(&lengthTransform.u8[3], EF_FIRMWARE);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
205
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
206
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
207 if(lengthTransform.u32 == 0xFFFFFFFF)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
208 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
209 lengthTransform.u32 = 0xFFFFFFFF;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
210 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
211 else
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
212 if(lengthTransform.u32 > max_length)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
213 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
214 lengthTransform.u32 = 0xFF000000;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
215 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
216 else
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
217 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
218 for(uint32_t i = 0; i<lengthTransform.u32; i++)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
219 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
220 ext_flash_read_block(&pSample1[i], EF_FIRMWARE);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
221 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
222
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
223 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
224
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
225 ext_flash_read_block_stop();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
226
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
227 if(magicByte)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
228 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
229 *magicByte = pSample1[0x10000 + 0x3E]; // 0x3E == 62
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
230 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
231
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
232 actualAddress = backup;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
233 return lengthTransform.u32;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
234 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
235
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
236
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
237 void ext_flash_write_firmware2(uint32_t offset, uint8_t *pSample1, uint32_t length1, uint8_t *pSample2, uint32_t length2)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
238 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
239 general32to8_Type lengthTransform, offsetTransform;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
240
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
241 lengthTransform.u32 = length1 + length2;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
242 offsetTransform.u32 = offset;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
243
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
244 actualPointerFirmware2 = FWSTART2;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
245 ef_write_block(lengthTransform.u8,4, EF_FIRMWARE2, 1);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
246 ef_write_block(offsetTransform.u8,4, EF_FIRMWARE2, 1);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
247 ef_write_block(pSample1,length1, EF_FIRMWARE2, 1);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
248 if(length2)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
249 ef_write_block(pSample2,length2, EF_FIRMWARE2, 1);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
250 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
251
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
252
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
253 uint32_t ext_flash_read_firmware2(uint32_t *offset, uint8_t *pSample1, uint32_t max_length1, uint8_t *pSample2, uint32_t max_length2)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
254 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
255 uint32_t backup = actualAddress;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
256 uint32_t length1, length2;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
257 general32to8_Type lengthTransform, offsetTransform;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
258
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
259 actualAddress = FWSTART2;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
260 ext_flash_read_block_start();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
261
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
262 ext_flash_read_block(&lengthTransform.u8[0], EF_FIRMWARE2);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
263 ext_flash_read_block(&lengthTransform.u8[1], EF_FIRMWARE2);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
264 ext_flash_read_block(&lengthTransform.u8[2], EF_FIRMWARE2);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
265 ext_flash_read_block(&lengthTransform.u8[3], EF_FIRMWARE2);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
266
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
267 ext_flash_read_block(&offsetTransform.u8[0], EF_FIRMWARE2);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
268 ext_flash_read_block(&offsetTransform.u8[1], EF_FIRMWARE2);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
269 ext_flash_read_block(&offsetTransform.u8[2], EF_FIRMWARE2);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
270 ext_flash_read_block(&offsetTransform.u8[3], EF_FIRMWARE2);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
271
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
272 *offset = offsetTransform.u32;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
273
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
274 if(lengthTransform.u32 == 0xFFFFFFFF)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
275 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
276 lengthTransform.u32 = 0xFFFFFFFF;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
277 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
278 else
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
279 if(lengthTransform.u32 > max_length1 + max_length2)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
280 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
281 lengthTransform.u32 = 0xFF000000;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
282 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
283 else
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
284 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
285 if(lengthTransform.u32 < max_length1)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
286 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
287 length1 = lengthTransform.u32;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
288 length2 = 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
289 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
290 else
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
291 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
292 length1 = max_length1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
293 length2 = lengthTransform.u32 - max_length1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
294 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
295
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
296 if(pSample1)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
297 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
298 for(uint32_t i = 0; i<length1; i++)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
299 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
300 ext_flash_read_block(&pSample1[i], EF_FIRMWARE2);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
301 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
302 if(pSample2)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
303 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
304 for(uint32_t i = 0; i<length2; i++)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
305 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
306 ext_flash_read_block(&pSample2[i], EF_FIRMWARE2);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
307 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
308 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
309 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
310 else if(pSample2)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
311 {
1048
493a5903ec20 Merge with 9d9d506a82d3162b6b2323819cc08652887d7dd4 (Bootloader)
Ideenmodellierer
parents: 985
diff changeset
312 /* actualAddress += length1; do dummy read to get EEPROM to the correct address */
493a5903ec20 Merge with 9d9d506a82d3162b6b2323819cc08652887d7dd4 (Bootloader)
Ideenmodellierer
parents: 985
diff changeset
313 for(uint32_t i = 0; i<length1; i++)
493a5903ec20 Merge with 9d9d506a82d3162b6b2323819cc08652887d7dd4 (Bootloader)
Ideenmodellierer
parents: 985
diff changeset
314 {
493a5903ec20 Merge with 9d9d506a82d3162b6b2323819cc08652887d7dd4 (Bootloader)
Ideenmodellierer
parents: 985
diff changeset
315 ext_flash_read_block(&pSample2[0], EF_FIRMWARE2);
493a5903ec20 Merge with 9d9d506a82d3162b6b2323819cc08652887d7dd4 (Bootloader)
Ideenmodellierer
parents: 985
diff changeset
316 }
985
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
317 for(uint32_t i = 0; i<length2; i++)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
318 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
319 ext_flash_read_block(&pSample2[i], EF_FIRMWARE2);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
320 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
321 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
322 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
323 ext_flash_read_block_stop();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
324 actualAddress = backup;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
325 return lengthTransform.u32;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
326 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
327
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
328
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
329 void ext_flash_read_fixed_16_devicedata_blocks_formated_128byte_total(uint8_t *buffer)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
330 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
331 SDeviceLine data[16];
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
332 uint8_t tempLengthIngnore;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
333 uint16_t count;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
334 uint8_t transfer;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
335
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
336 RTC_DateTypeDef Sdate;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
337 RTC_TimeTypeDef Stime;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
338
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
339 actualAddress = DDSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
340
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
341 ext_flash_read_block_start();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
342 ext_flash_read_block(&tempLengthIngnore, EF_DEVICEDATA);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
343 ext_flash_read_block(&tempLengthIngnore, EF_DEVICEDATA);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
344
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
345 ext_flash_read_block_multi((uint8_t *)data,16*3*4, EF_DEVICEDATA);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
346 ext_flash_read_block_stop();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
347
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
348 count = 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
349 for(int i=0;i<16;i++)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
350 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
351 transfer = (data[i].value_int32 >> 24) & 0xFF;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
352 buffer[count++] = transfer;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
353 transfer = (data[i].value_int32 >> 16) & 0xFF;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
354 buffer[count++] = transfer;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
355 transfer = (data[i].value_int32 >> 8) & 0xFF;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
356 buffer[count++] = transfer;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
357 transfer = (data[i].value_int32) & 0xFF;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
358 buffer[count++] = transfer;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
359
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
360 translateDate(data[i].date_rtc_dr, &Sdate);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
361 translateTime(data[i].time_rtc_tr, &Stime);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
362 buffer[count++] = Sdate.Year;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
363 buffer[count++] = Sdate.Month;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
364 buffer[count++] = Sdate.Date;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
365 buffer[count++] = Stime.Hours;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
366 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
367 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
368
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
369 void ext_flash_erase_firmware(void)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
370 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
371 uint32_t size, blocks_64k;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
372
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
373 actualAddress = FWSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
374 size = 1 + FWSTOP - FWSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
375 blocks_64k = size / 0x10000;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
376 ef_erase_64K(blocks_64k);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
377 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
378
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
379 void ext_flash_erase_firmware2(void)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
380 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
381 uint32_t size, blocks_64k;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
382
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
383 actualAddress = FWSTART2;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
384 size = 1 + FWSTOP2 - FWSTART2;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
385 blocks_64k = size / 0x10000;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
386 ef_erase_64K(blocks_64k);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
387 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
388
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
389
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
390
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
391 static void ext_flash_erase4kB(void)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
392 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
393 wait_chip_not_busy();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
394 write_spi(0x06,RELEASE);/* WREN */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
395 write_spi(0x20,HOLDCS);/* sector erase cmd */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
396 write_address(RELEASE);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
397 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
398
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
399 /* be careful - might not work with entire family and other products
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
400 * see page 14 of LOGBOOK_V3_S25FS-S_00-271247.pdf
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
401 */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
402 static void ext_flash_erase32kB(void)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
403 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
404 uint32_t actualAddress_backup;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
405
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
406 actualAddress_backup = actualAddress;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
407 actualAddress = 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
408 wait_chip_not_busy();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
409 write_spi(0x06,RELEASE);/* WREN */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
410 write_spi(0xD8,HOLDCS);/* sector erase cmd */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
411 write_address(RELEASE);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
412 actualAddress = actualAddress_backup;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
413 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
414
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
415
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
416 static void ext_flash_erase64kB(void)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
417 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
418 wait_chip_not_busy();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
419 write_spi(0x06,RELEASE);/* WREN */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
420 write_spi(0xD8,HOLDCS);/* sector erase cmd */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
421 write_address(RELEASE);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
422 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
423
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
424
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
425 void ext_flash_read_block_start(void)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
426 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
427 wait_chip_not_busy();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
428 write_spi(0x03,HOLDCS); /* WREN */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
429 write_address(HOLDCS);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
430 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
431
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
432 /* 4KB, 32KB, 64 KB, not the upper 16 MB with 4 Byte address at the moment */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
433 static uint8_t ext_flash_erase_if_on_page_start(void)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
434 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
435 if(actualAddress < 0x00008000)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
436 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
437 /* 4K Byte is 0x1000 */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
438 if((actualAddress & 0xFFF) == 0)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
439 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
440 ext_flash_erase4kB();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
441 return 1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
442 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
443 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
444 else
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
445 if(actualAddress < 0x00010000)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
446 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
447 /* 32K Byte is only one page */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
448 if(actualAddress == 0x00010000)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
449 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
450 ext_flash_erase32kB();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
451 return 1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
452 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
453 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
454 else
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
455 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
456 /* 64K Byte is 0x10000 */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
457 if((actualAddress & 0xFFFF) == 0)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
458 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
459 if(preparedPageAddress == actualAddress) /* has page already been prepared before? (at the moment for samples only) */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
460 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
461 preparedPageAddress = 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
462
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
463 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
464 else
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
465 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
466 ext_flash_erase64kB();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
467 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
468 return 1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
469 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
470 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
471
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
472 return 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
473 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
474
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
475
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
476 static void ext_flash_read_block(uint8_t *getByte, uint8_t type)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
477 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
478 *getByte = read_spi(HOLDCS);/* read data */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
479 ext_flash_incf_address(type);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
480 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
481
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
482
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
483 static void ext_flash_read_block_multi(void *getByte, uint32_t size, uint8_t type)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
484 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
485 uint8_t *data;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
486 data = getByte;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
487
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
488 for(uint32_t i=0;i<size;i++)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
489 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
490 data[i] = read_spi(HOLDCS);/* read data */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
491 ext_flash_incf_address(type);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
492 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
493 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
494
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
495
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
496 static void ext_flash_read_block_stop(void)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
497 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
498 chip_unselect();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
499 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
500
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
501
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
502 /* Private functions ---------------------------------------------------------*/
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
503
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
504 static void ef_write_block(uint8_t * sendByte, uint32_t length, uint8_t type, uint8_t do_not_erase)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
505 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
506 uint32_t remaining_page_size, remaining_length, remaining_space_to_ring_end;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
507 uint32_t i=0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
508
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
509 if(!length)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
510 return;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
511
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
512 uint32_t ringStart, ringStop;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
513
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
514 switch(type)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
515 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
516 case EF_HEADER:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
517 actualAddress = actualPointerHeader;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
518 ringStart = HEADERSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
519 ringStop = HEADERSTOP;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
520 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
521 case EF_SAMPLE:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
522 actualAddress = actualPointerSample;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
523 ringStart = SAMPLESTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
524 ringStop = SAMPLESTOP;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
525 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
526 case EF_DEVICEDATA:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
527 actualAddress = actualPointerDevicedata;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
528 ringStart = DDSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
529 ringStop = DDSTOP;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
530 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
531 case EF_VPMDATA:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
532 actualAddress = actualPointerVPM;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
533 ringStart = VPMSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
534 ringStop = VPMSTOP;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
535 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
536 case EF_SETTINGS:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
537 actualAddress = actualPointerSettings;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
538 ringStart = SETTINGSSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
539 ringStop = SETTINGSSTOP;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
540 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
541 case EF_FIRMWARE:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
542 actualAddress = actualPointerFirmware;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
543 ringStart = FWSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
544 ringStop = FWSTOP;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
545 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
546 case EF_FIRMWARE2:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
547 actualAddress = actualPointerFirmware2;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
548 ringStart = FWSTART2;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
549 ringStop = FWSTOP2;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
550 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
551 default:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
552 ringStart = FLASHSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
553 ringStop = FLASHSTOP;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
554 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
555 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
556 /* safety */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
557 if(actualAddress < ringStart)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
558 actualAddress = ringStart;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
559
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
560 if(do_not_erase == 0)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
561 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
562 ext_flash_erase_if_on_page_start();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
563 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
564
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
565 while( i<length)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
566 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
567 ef_hw_rough_delay_us(5);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
568 wait_chip_not_busy();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
569 write_spi(0x06,RELEASE); /* WREN */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
570 write_spi(0x02,HOLDCS); /* write cmd */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
571 write_address(HOLDCS);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
572
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
573 remaining_length = length - i;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
574 remaining_page_size = 0xFF - (uint8_t)(actualAddress & 0xFF) +1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
575 remaining_space_to_ring_end = ringStop - actualAddress;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
576
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
577 if(remaining_length >= 256)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
578 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
579 remaining_length = 255; /* up to 256 bytes may be written in one burst. Last byte is written with release */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
580 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
581 else
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
582 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
583 remaining_length--; /* last byte needed for release */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
584 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
585 if(remaining_length >= (remaining_page_size) ) /* use 256 byte page and calculate number of bytes left */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
586 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
587 remaining_length = remaining_page_size - 1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
588 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
589 if( (remaining_space_to_ring_end >= 256))
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
590 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
591 for(int j=0; j<remaining_length; j++)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
592 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
593 write_spi(sendByte[i],HOLDCS);/* write data */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
594 actualAddress++;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
595 i++;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
596 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
597 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
598 /* byte with RELEASE */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
599 write_spi(sendByte[i],RELEASE);/* write data */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
600 actualAddress++;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
601 i++;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
602
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
603 if(actualAddress > ringStop)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
604 actualAddress = ringStart;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
605
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
606 if(do_not_erase == 0)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
607 ext_flash_erase_if_on_page_start();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
608 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
609 switch(type)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
610 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
611 case EF_HEADER:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
612 actualPointerHeader = actualAddress;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
613 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
614 case EF_SAMPLE:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
615 actualPointerSample = actualAddress;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
616 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
617 case EF_DEVICEDATA:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
618 actualPointerDevicedata = actualAddress;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
619 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
620 case EF_VPMDATA:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
621 actualPointerVPM = actualAddress;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
622 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
623 case EF_SETTINGS:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
624 actualPointerSettings = actualAddress;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
625 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
626 case EF_FIRMWARE:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
627 actualPointerFirmware = actualAddress;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
628 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
629 case EF_FIRMWARE2:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
630 actualPointerFirmware2 = actualAddress;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
631 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
632 default:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
633 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
634 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
635 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
636
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
637
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
638 static void ef_erase_64K(uint32_t blocks)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
639 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
640 for(uint32_t i = 0; i < blocks; i++)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
641 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
642 wait_chip_not_busy();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
643 write_spi(0x06,RELEASE);/* WREN */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
644 write_spi(0xD8,HOLDCS);/* 64k erase cmd */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
645 write_address(RELEASE);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
646 actualAddress += 0x10000;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
647 HAL_Delay(25);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
648 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
649 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
650
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
651 static void chip_unselect(void)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
652 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
653 HAL_GPIO_WritePin(EXTFLASH_CSB_GPIO_PORT,EXTFLASH_CSB_PIN,GPIO_PIN_SET); // chip select
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
654 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
655
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
656 static void chip_select(void)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
657 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
658 HAL_GPIO_WritePin(EXTFLASH_CSB_GPIO_PORT,EXTFLASH_CSB_PIN,GPIO_PIN_RESET); // chip select
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
659 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
660
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
661 static uint8_t read_spi(uint8_t unselect_CS_afterwards)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
662 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
663 uint8_t byte;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
664
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
665 chip_select();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
666
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
667 if(HAL_SPI_Receive(&hspiDisplay, &byte, 1, 10000) != HAL_OK)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
668 Error_Handler_extflash();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
669
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
670 while (HAL_SPI_GetState(&hspiDisplay) != HAL_SPI_STATE_READY)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
671 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
672 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
673 if(unselect_CS_afterwards)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
674 chip_unselect();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
675
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
676 return byte;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
677 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
678
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
679
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
680 static void write_spi(uint8_t data, uint8_t unselect_CS_afterwards)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
681 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
682 chip_select();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
683
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
684 if(HAL_SPI_Transmit(&hspiDisplay, &data, 1, 10000) != HAL_OK)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
685 Error_Handler_extflash();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
686
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
687 while (HAL_SPI_GetState(&hspiDisplay) != HAL_SPI_STATE_READY)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
688 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
689 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
690 if(unselect_CS_afterwards)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
691 chip_unselect();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
692 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
693
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
694
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
695 static void write_address(uint8_t unselect_CS_afterwards)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
696 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
697 uint8_t hi, med ,lo;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
698
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
699 hi = (actualAddress >> 16) & 0xFF;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
700 med = (actualAddress >> 8) & 0xFF;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
701 lo = actualAddress & 0xFF;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
702
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
703 write_spi(hi, HOLDCS);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
704 write_spi(med, HOLDCS);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
705 write_spi(lo, unselect_CS_afterwards);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
706 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
707
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
708
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
709 static void wait_chip_not_busy(void)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
710 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
711 uint8_t status;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
712
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
713 chip_unselect();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
714
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
715 write_spi(0x05,HOLDCS); /* RDSR */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
716 status = read_spi(HOLDCS);/* read status */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
717 while(status & 0x01)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
718 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
719 HAL_Delay(1);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
720 status = read_spi(HOLDCS);/* read status */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
721 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
722 chip_unselect();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
723 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
724
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
725
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
726 static void ext_flash_incf_address(uint8_t type)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
727 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
728 uint32_t ringStart, ringStop;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
729
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
730 actualAddress += 1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
731
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
732 switch(type)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
733 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
734 case EF_HEADER:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
735 ringStart = HEADERSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
736 ringStop = HEADERSTOP;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
737 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
738 case EF_SAMPLE:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
739 ringStart = SAMPLESTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
740 ringStop = SAMPLESTOP;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
741 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
742 case EF_DEVICEDATA:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
743 ringStart = DDSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
744 ringStop = DDSTOP;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
745 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
746 case EF_VPMDATA:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
747 ringStart = VPMSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
748 ringStop = VPMSTOP;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
749 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
750 case EF_SETTINGS:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
751 ringStart = SETTINGSSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
752 ringStop = SETTINGSSTOP;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
753 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
754 case EF_FIRMWARE:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
755 ringStart = FWSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
756 ringStop = FWSTOP;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
757 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
758 case EF_FIRMWARE2:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
759 ringStart = FWSTART2;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
760 ringStop = FWSTOP2;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
761 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
762 default:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
763 ringStart = FLASHSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
764 ringStop = FLASHSTOP;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
765 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
766 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
767
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
768 if((actualAddress < ringStart) || (actualAddress > ringStop))
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
769 actualAddress = ringStart;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
770 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
771
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
772 static void ef_hw_rough_delay_us(uint32_t delayUs)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
773 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
774 if(!delayUs)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
775 return;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
776 delayUs*= 12;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
777 while(delayUs--);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
778 return;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
779 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
780
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
781 static void Error_Handler_extflash(void)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
782 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
783 while(1)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
784 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
785 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
786 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
787
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
788 void ext_flash_CloseSector(void)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
789 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
790 uint32_t actualAddressBackup = actualAddress;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
791 int i=0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
792
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
793 if(closeSectorAddress != 0)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
794 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
795 /* write some dummy bytes to the sector which is currently used for storing samples. This is done to "hide" problem if function is calles again */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
796 actualAddress = closeSectorAddress;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
797
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
798 wait_chip_not_busy();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
799 write_spi(0x06,RELEASE); /* WREN */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
800 write_spi(0x02,HOLDCS); /* write cmd */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
801 write_address(HOLDCS);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
802 for(i = 0; i<8; i++)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
803 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
804 write_spi(0xA5,HOLDCS);/* write data */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
805 actualAddress++;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
806 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
807 /* byte with RELEASE */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
808 write_spi(0xA5,RELEASE);/* write data */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
809 actualAddress = actualAddressBackup;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
810 closeSectorAddress = 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
811 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
812 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
813
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
814
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
815 uint8_t ext_flash_erase_firmware_if_not_empty(void)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
816 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
817 const uint8_t TESTSIZE_FW = 4;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
818
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
819 uint8_t data[TESTSIZE_FW];
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
820 uint8_t notEmpty = 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
821
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
822 actualAddress = FWSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
823 ext_flash_read_block_start();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
824 for(int i = 0; i < TESTSIZE_FW; i++)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
825 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
826 ext_flash_read_block(&data[i], EF_FIRMWARE);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
827 if(data[i] != 0xFF)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
828 notEmpty = 1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
829 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
830 ext_flash_read_block_stop();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
831
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
832 if(notEmpty)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
833 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
834 ext_flash_erase_firmware();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
835 return 1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
836 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
837 else
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
838 return 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
839 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
840
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
841 uint8_t ext_flash_erase_firmware2_if_not_empty(void)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
842 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
843 const uint8_t TESTSIZE_FW = 4;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
844
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
845 uint8_t data[TESTSIZE_FW];
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
846 uint8_t notEmpty = 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
847
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
848 actualAddress = FWSTART2;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
849 ext_flash_read_block_start();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
850 for(int i = 0; i < TESTSIZE_FW; i++)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
851 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
852 ext_flash_read_block(&data[i], EF_FIRMWARE2);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
853 if(data[i] != 0xFF)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
854 notEmpty = 1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
855 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
856 ext_flash_read_block_stop();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
857
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
858 if(notEmpty)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
859 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
860 ext_flash_erase_firmware2();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
861 return 1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
862 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
863 else
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
864 return 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
865 }