annotate BootLoader/Src/externLogbookFlash_mini.c @ 985:aeafa631147d BootloaderOstc5

Exchange shared files with Bootloader specific mini version
author Ideenmodellierer
date Sun, 30 Mar 2025 21:32:37 +0200 (2 weeks ago)
parents
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 enum{
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
84 EF_HEADER,
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
85 EF_SAMPLE,
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
86 EF_DEVICEDATA,
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
87 EF_VPMDATA,
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
88 EF_SETTINGS,
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
89 EF_FIRMWARE,
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
90 EF_FIRMWARE2,
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
91 }which_ring_enum;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
92
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 struct{
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
95 uint8_t IsBusy:1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
96 uint8_t IsWriteEnabled:1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
97 uint8_t BlockProtect0:1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
98 uint8_t BlockProtect1:1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
99 uint8_t BlockProtect2:1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
100 uint8_t BlockProtect3:1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
101 uint8_t IsAutoAddressIncMode:1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
102 uint8_t BlockProtectL:1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
103 } extFlashStatusUbit8_t;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
104
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
105 typedef union{
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
106 extFlashStatusUbit8_t ub;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
107 uint8_t uw;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
108 } extFlashStatusBit8_Type;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
109
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
110
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
111 /* Exported variables --------------------------------------------------------*/
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
112
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
113 /* Private variables ---------------------------------------------------------*/
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 static uint32_t actualAddress = 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
116 static uint32_t preparedPageAddress = 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
117 static uint32_t closeSectorAddress = 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
118 static uint32_t actualPointerHeader = 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
119 static uint32_t actualPointerSample = 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
120 static uint32_t actualPointerDevicedata = DDSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
121 static uint32_t actualPointerVPM = 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
122 static uint32_t actualPointerSettings = SETTINGSSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
123 static uint32_t actualPointerFirmware = 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
124 static uint32_t actualPointerFirmware2 = 0;
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 /* Private function prototypes -----------------------------------------------*/
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
127 static void chip_unselect(void);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
128 static void chip_select(void);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
129 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
130 static uint8_t read_spi(uint8_t unselect_CS_afterwards);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
131 static void write_address(uint8_t unselect_CS_afterwards);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
132 static void Error_Handler_extflash(void);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
133 static void wait_chip_not_busy(void);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
134 static void ext_flash_incf_address(uint8_t type);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
135 //void ext_flash_incf_address_ring(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 ext_flash_erase4kB(void);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
138 static void ext_flash_erase32kB(void);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
139 static void ext_flash_erase64kB(void);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
140 static uint8_t ext_flash_erase_if_on_page_start(void);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
141
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
142 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
143
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
144 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
145 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
146 static void ext_flash_read_block_stop(void);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
147
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
148 static void ef_hw_rough_delay_us(uint32_t delayUs);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
149 static void ef_erase_64K(uint32_t blocks);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
150
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
151
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
152 /* Exported functions --------------------------------------------------------*/
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
153
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
154 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
155 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
156 general32to8_Type lengthTransform;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
157
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
158 lengthTransform.u32 = length1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
159
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
160 actualPointerFirmware = FWSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
161 ef_write_block(lengthTransform.u8,4, EF_FIRMWARE, 1);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
162 ef_write_block(pSample1,length1, EF_FIRMWARE, 1);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
163
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
164 // if(length2)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
165 // ef_write_block(pSample2,length2, EF_FIRMWARE, 1);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
166 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
167
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
168 uint8_t ext_flash_read_firmware_version(char *text)
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 uint32_t backup = actualAddress;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
171 uint8_t buffer[4];
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 // + 4 for length data, see ext_flash_write_firmware
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
174 actualAddress = FWSTART + 4 + 0x10000;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
175 ext_flash_read_block_start();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
176 ext_flash_read_block(&buffer[0], EF_FIRMWARE);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
177 ext_flash_read_block(&buffer[1], EF_FIRMWARE);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
178 ext_flash_read_block(&buffer[2], EF_FIRMWARE);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
179 ext_flash_read_block(&buffer[3], EF_FIRMWARE);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
180
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
181 ext_flash_read_block_stop();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
182 actualAddress = backup;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
183
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
184 uint8_t ptr = 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
185 text[ptr++] = 'V';
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
186 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
187 text[ptr++] = '.';
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
188 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
189 text[ptr++] = '.';
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
190 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
191 text[ptr++] = ' ';
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
192 if(buffer[3])
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
193 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
194 text[ptr++] = 'b';
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
195 text[ptr++] = 'e';
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
196 text[ptr++] = 't';
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
197 text[ptr++] = 'a';
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
198 text[ptr++] = ' ';
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
199 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
200 return ptr;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
201 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
202
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
203
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
204 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
205 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
206 uint32_t backup = actualAddress;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
207 general32to8_Type lengthTransform;
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 actualAddress = FWSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
210 ext_flash_read_block_start();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
211
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
212 ext_flash_read_block(&lengthTransform.u8[0], EF_FIRMWARE);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
213 ext_flash_read_block(&lengthTransform.u8[1], EF_FIRMWARE);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
214 ext_flash_read_block(&lengthTransform.u8[2], EF_FIRMWARE);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
215 ext_flash_read_block(&lengthTransform.u8[3], EF_FIRMWARE);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
216
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 if(lengthTransform.u32 == 0xFFFFFFFF)
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 lengthTransform.u32 = 0xFFFFFFFF;
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 else
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
223 if(lengthTransform.u32 > max_length)
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 lengthTransform.u32 = 0xFF000000;
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 else
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 for(uint32_t i = 0; i<lengthTransform.u32; i++)
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 ext_flash_read_block(&pSample1[i], EF_FIRMWARE);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
232 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
233
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 ext_flash_read_block_stop();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
237
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
238 if(magicByte)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
239 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
240 *magicByte = pSample1[0x10000 + 0x3E]; // 0x3E == 62
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
241 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
242
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
243 actualAddress = backup;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
244 return lengthTransform.u32;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
245 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
246
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
247
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
248 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
249 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
250 general32to8_Type lengthTransform, offsetTransform;
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 lengthTransform.u32 = length1 + length2;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
253 offsetTransform.u32 = offset;
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 actualPointerFirmware2 = FWSTART2;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
256 ef_write_block(lengthTransform.u8,4, EF_FIRMWARE2, 1);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
257 ef_write_block(offsetTransform.u8,4, EF_FIRMWARE2, 1);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
258 ef_write_block(pSample1,length1, EF_FIRMWARE2, 1);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
259 if(length2)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
260 ef_write_block(pSample2,length2, EF_FIRMWARE2, 1);
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
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
263
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
264 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
265 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
266 uint32_t backup = actualAddress;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
267 uint32_t length1, length2;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
268 general32to8_Type lengthTransform, offsetTransform;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
269
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
270 actualAddress = FWSTART2;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
271 ext_flash_read_block_start();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
272
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
273 ext_flash_read_block(&lengthTransform.u8[0], EF_FIRMWARE2);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
274 ext_flash_read_block(&lengthTransform.u8[1], EF_FIRMWARE2);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
275 ext_flash_read_block(&lengthTransform.u8[2], EF_FIRMWARE2);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
276 ext_flash_read_block(&lengthTransform.u8[3], EF_FIRMWARE2);
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 ext_flash_read_block(&offsetTransform.u8[0], EF_FIRMWARE2);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
279 ext_flash_read_block(&offsetTransform.u8[1], EF_FIRMWARE2);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
280 ext_flash_read_block(&offsetTransform.u8[2], EF_FIRMWARE2);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
281 ext_flash_read_block(&offsetTransform.u8[3], EF_FIRMWARE2);
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 *offset = offsetTransform.u32;
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 == 0xFFFFFFFF)
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 lengthTransform.u32 = 0xFFFFFFFF;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
288 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
289 else
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
290 if(lengthTransform.u32 > max_length1 + max_length2)
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 lengthTransform.u32 = 0xFF000000;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
293 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
294 else
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(lengthTransform.u32 < max_length1)
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 length1 = lengthTransform.u32;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
299 length2 = 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
300 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
301 else
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
302 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
303 length1 = max_length1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
304 length2 = lengthTransform.u32 - max_length1;
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
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
307 if(pSample1)
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 for(uint32_t i = 0; i<length1; i++)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
310 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
311 ext_flash_read_block(&pSample1[i], EF_FIRMWARE2);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
312 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
313 if(pSample2)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
314 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
315 for(uint32_t i = 0; i<length2; i++)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
316 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
317 ext_flash_read_block(&pSample2[i], EF_FIRMWARE2);
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 }
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 else if(pSample2)
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 actualAddress += length1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
324 for(uint32_t i = 0; i<length2; i++)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
325 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
326 ext_flash_read_block(&pSample2[i], EF_FIRMWARE2);
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 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
330 ext_flash_read_block_stop();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
331 actualAddress = backup;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
332 return lengthTransform.u32;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
333 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
334
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 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
337 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
338 SDeviceLine data[16];
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
339 uint8_t tempLengthIngnore;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
340 uint16_t count;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
341 uint8_t transfer;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
342
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
343 RTC_DateTypeDef Sdate;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
344 RTC_TimeTypeDef Stime;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
345
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
346 actualAddress = DDSTART;
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 ext_flash_read_block_start();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
349 ext_flash_read_block(&tempLengthIngnore, EF_DEVICEDATA);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
350 ext_flash_read_block(&tempLengthIngnore, EF_DEVICEDATA);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
351
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
352 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
353 ext_flash_read_block_stop();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
354
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
355 count = 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
356 for(int i=0;i<16;i++)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
357 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
358 transfer = (data[i].value_int32 >> 24) & 0xFF;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
359 buffer[count++] = transfer;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
360 transfer = (data[i].value_int32 >> 16) & 0xFF;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
361 buffer[count++] = transfer;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
362 transfer = (data[i].value_int32 >> 8) & 0xFF;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
363 buffer[count++] = transfer;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
364 transfer = (data[i].value_int32) & 0xFF;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
365 buffer[count++] = transfer;
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 translateDate(data[i].date_rtc_dr, &Sdate);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
368 translateTime(data[i].time_rtc_tr, &Stime);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
369 buffer[count++] = Sdate.Year;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
370 buffer[count++] = Sdate.Month;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
371 buffer[count++] = Sdate.Date;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
372 buffer[count++] = Stime.Hours;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
373 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
374 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
375
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
376 void ext_flash_erase_firmware(void)
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 uint32_t size, blocks_64k;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
379
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
380 actualAddress = FWSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
381 size = 1 + FWSTOP - FWSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
382 blocks_64k = size / 0x10000;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
383 ef_erase_64K(blocks_64k);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
384 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
385
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
386 void ext_flash_erase_firmware2(void)
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 uint32_t size, blocks_64k;
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 actualAddress = FWSTART2;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
391 size = 1 + FWSTOP2 - FWSTART2;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
392 blocks_64k = size / 0x10000;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
393 ef_erase_64K(blocks_64k);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
394 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
395
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
396
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 static void ext_flash_erase4kB(void)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
399 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
400 wait_chip_not_busy();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
401 write_spi(0x06,RELEASE);/* WREN */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
402 write_spi(0x20,HOLDCS);/* sector erase cmd */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
403 write_address(RELEASE);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
404 }
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 /* be careful - might not work with entire family and other products
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
407 * see page 14 of LOGBOOK_V3_S25FS-S_00-271247.pdf
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
408 */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
409 static void ext_flash_erase32kB(void)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
410 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
411 uint32_t actualAddress_backup;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
412
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
413 actualAddress_backup = actualAddress;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
414 actualAddress = 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
415 wait_chip_not_busy();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
416 write_spi(0x06,RELEASE);/* WREN */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
417 write_spi(0xD8,HOLDCS);/* sector erase cmd */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
418 write_address(RELEASE);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
419 actualAddress = actualAddress_backup;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
420 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
421
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 static void ext_flash_erase64kB(void)
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 wait_chip_not_busy();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
426 write_spi(0x06,RELEASE);/* WREN */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
427 write_spi(0xD8,HOLDCS);/* sector erase cmd */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
428 write_address(RELEASE);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
429 }
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 void ext_flash_read_block_start(void)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
433 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
434 wait_chip_not_busy();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
435 write_spi(0x03,HOLDCS); /* WREN */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
436 write_address(HOLDCS);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
437 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
438
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
439 /* 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
440 static uint8_t ext_flash_erase_if_on_page_start(void)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
441 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
442 if(actualAddress < 0x00008000)
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 /* 4K Byte is 0x1000 */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
445 if((actualAddress & 0xFFF) == 0)
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 ext_flash_erase4kB();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
448 return 1;
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 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
451 else
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
452 if(actualAddress < 0x00010000)
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 /* 32K Byte is only one page */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
455 if(actualAddress == 0x00010000)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
456 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
457 ext_flash_erase32kB();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
458 return 1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
459 }
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 else
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 /* 64K Byte is 0x10000 */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
464 if((actualAddress & 0xFFFF) == 0)
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 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
467 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
468 preparedPageAddress = 0;
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 else
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
472 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
473 ext_flash_erase64kB();
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 return 1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
476 }
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
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
479 return 0;
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(uint8_t *getByte, 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 *getByte = read_spi(HOLDCS);/* read data */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
486 ext_flash_incf_address(type);
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
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 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
491 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
492 uint8_t *data;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
493 data = getByte;
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 for(uint32_t i=0;i<size;i++)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
496 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
497 data[i] = read_spi(HOLDCS);/* read data */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
498 ext_flash_incf_address(type);
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
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
503 static void ext_flash_read_block_stop(void)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
504 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
505 chip_unselect();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
506 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
507
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 /* Private functions ---------------------------------------------------------*/
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
510
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
511 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
512 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
513 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
514 uint32_t i=0;
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 if(!length)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
517 return;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
518
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
519 uint32_t ringStart, ringStop;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
520
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
521 switch(type)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
522 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
523 case EF_HEADER:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
524 actualAddress = actualPointerHeader;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
525 ringStart = HEADERSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
526 ringStop = HEADERSTOP;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
527 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
528 case EF_SAMPLE:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
529 actualAddress = actualPointerSample;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
530 ringStart = SAMPLESTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
531 ringStop = SAMPLESTOP;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
532 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
533 case EF_DEVICEDATA:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
534 actualAddress = actualPointerDevicedata;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
535 ringStart = DDSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
536 ringStop = DDSTOP;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
537 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
538 case EF_VPMDATA:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
539 actualAddress = actualPointerVPM;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
540 ringStart = VPMSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
541 ringStop = VPMSTOP;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
542 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
543 case EF_SETTINGS:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
544 actualAddress = actualPointerSettings;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
545 ringStart = SETTINGSSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
546 ringStop = SETTINGSSTOP;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
547 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
548 case EF_FIRMWARE:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
549 actualAddress = actualPointerFirmware;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
550 ringStart = FWSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
551 ringStop = FWSTOP;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
552 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
553 case EF_FIRMWARE2:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
554 actualAddress = actualPointerFirmware2;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
555 ringStart = FWSTART2;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
556 ringStop = FWSTOP2;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
557 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
558 default:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
559 ringStart = FLASHSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
560 ringStop = FLASHSTOP;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
561 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
562 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
563 /* safety */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
564 if(actualAddress < ringStart)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
565 actualAddress = ringStart;
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 if(do_not_erase == 0)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
568 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
569 ext_flash_erase_if_on_page_start();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
570 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
571
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
572 while( i<length)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
573 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
574 ef_hw_rough_delay_us(5);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
575 wait_chip_not_busy();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
576 write_spi(0x06,RELEASE); /* WREN */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
577 write_spi(0x02,HOLDCS); /* write cmd */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
578 write_address(HOLDCS);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
579
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
580 remaining_length = length - i;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
581 remaining_page_size = 0xFF - (uint8_t)(actualAddress & 0xFF) +1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
582 remaining_space_to_ring_end = ringStop - actualAddress;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
583
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
584 if(remaining_length >= 256)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
585 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
586 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
587 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
588 else
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
589 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
590 remaining_length--; /* last byte needed for release */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
591 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
592 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
593 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
594 remaining_length = remaining_page_size - 1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
595 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
596 if( (remaining_space_to_ring_end >= 256))
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 for(int j=0; j<remaining_length; j++)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
599 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
600 write_spi(sendByte[i],HOLDCS);/* write data */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
601 actualAddress++;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
602 i++;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
603 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
604 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
605 /* byte with RELEASE */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
606 write_spi(sendByte[i],RELEASE);/* write data */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
607 actualAddress++;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
608 i++;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
609
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
610 if(actualAddress > ringStop)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
611 actualAddress = ringStart;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
612
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
613 if(do_not_erase == 0)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
614 ext_flash_erase_if_on_page_start();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
615 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
616 switch(type)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
617 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
618 case EF_HEADER:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
619 actualPointerHeader = actualAddress;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
620 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
621 case EF_SAMPLE:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
622 actualPointerSample = actualAddress;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
623 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
624 case EF_DEVICEDATA:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
625 actualPointerDevicedata = actualAddress;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
626 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
627 case EF_VPMDATA:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
628 actualPointerVPM = actualAddress;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
629 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
630 case EF_SETTINGS:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
631 actualPointerSettings = actualAddress;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
632 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
633 case EF_FIRMWARE:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
634 actualPointerFirmware = actualAddress;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
635 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
636 case EF_FIRMWARE2:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
637 actualPointerFirmware2 = actualAddress;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
638 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
639 default:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
640 break;
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 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
643
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
644
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
645 static void ef_erase_64K(uint32_t blocks)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
646 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
647 for(uint32_t i = 0; i < blocks; i++)
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 wait_chip_not_busy();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
650 write_spi(0x06,RELEASE);/* WREN */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
651 write_spi(0xD8,HOLDCS);/* 64k erase cmd */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
652 write_address(RELEASE);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
653 actualAddress += 0x10000;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
654 HAL_Delay(25);
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 }
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 static void chip_unselect(void)
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 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
661 }
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 static void chip_select(void)
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 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
666 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
667
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
668 static uint8_t read_spi(uint8_t unselect_CS_afterwards)
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 uint8_t byte;
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 chip_select();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
673
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
674 if(HAL_SPI_Receive(&hspiDisplay, &byte, 1, 10000) != HAL_OK)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
675 Error_Handler_extflash();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
676
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
677 while (HAL_SPI_GetState(&hspiDisplay) != HAL_SPI_STATE_READY)
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 if(unselect_CS_afterwards)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
681 chip_unselect();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
682
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
683 return byte;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
684 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
685
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 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
688 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
689 chip_select();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
690
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
691 if(HAL_SPI_Transmit(&hspiDisplay, &data, 1, 10000) != HAL_OK)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
692 Error_Handler_extflash();
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 while (HAL_SPI_GetState(&hspiDisplay) != HAL_SPI_STATE_READY)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
695 {
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 if(unselect_CS_afterwards)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
698 chip_unselect();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
699 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
700
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
701
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
702 static void write_address(uint8_t unselect_CS_afterwards)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
703 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
704 uint8_t hi, med ,lo;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
705
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
706 hi = (actualAddress >> 16) & 0xFF;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
707 med = (actualAddress >> 8) & 0xFF;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
708 lo = actualAddress & 0xFF;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
709
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
710 write_spi(hi, HOLDCS);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
711 write_spi(med, HOLDCS);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
712 write_spi(lo, unselect_CS_afterwards);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
713 }
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
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
716 static void wait_chip_not_busy(void)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
717 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
718 uint8_t status;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
719
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
720 chip_unselect();
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 write_spi(0x05,HOLDCS); /* RDSR */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
723 status = read_spi(HOLDCS);/* read status */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
724 while(status & 0x01)
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 HAL_Delay(1);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
727 status = read_spi(HOLDCS);/* read status */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
728 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
729 chip_unselect();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
730 }
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
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
733 static void ext_flash_incf_address(uint8_t type)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
734 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
735 uint32_t ringStart, ringStop;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
736
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
737 actualAddress += 1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
738
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
739 switch(type)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
740 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
741 case EF_HEADER:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
742 ringStart = HEADERSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
743 ringStop = HEADERSTOP;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
744 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
745 case EF_SAMPLE:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
746 ringStart = SAMPLESTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
747 ringStop = SAMPLESTOP;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
748 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
749 case EF_DEVICEDATA:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
750 ringStart = DDSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
751 ringStop = DDSTOP;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
752 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
753 case EF_VPMDATA:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
754 ringStart = VPMSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
755 ringStop = VPMSTOP;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
756 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
757 case EF_SETTINGS:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
758 ringStart = SETTINGSSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
759 ringStop = SETTINGSSTOP;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
760 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
761 case EF_FIRMWARE:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
762 ringStart = FWSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
763 ringStop = FWSTOP;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
764 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
765 case EF_FIRMWARE2:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
766 ringStart = FWSTART2;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
767 ringStop = FWSTOP2;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
768 break;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
769 default:
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
770 ringStart = FLASHSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
771 ringStop = FLASHSTOP;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
772 break;
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
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
775 if((actualAddress < ringStart) || (actualAddress > ringStop))
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
776 actualAddress = ringStart;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
777 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
778
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
779 static void ef_hw_rough_delay_us(uint32_t delayUs)
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 if(!delayUs)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
782 return;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
783 delayUs*= 12;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
784 while(delayUs--);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
785 return;
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 static void Error_Handler_extflash(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 while(1)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
791 {
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 }
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 void ext_flash_CloseSector(void)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
796 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
797 uint32_t actualAddressBackup = actualAddress;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
798 int i=0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
799
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
800 if(closeSectorAddress != 0)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
801 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
802 /* 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
803 actualAddress = closeSectorAddress;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
804
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
805 wait_chip_not_busy();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
806 write_spi(0x06,RELEASE); /* WREN */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
807 write_spi(0x02,HOLDCS); /* write cmd */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
808 write_address(HOLDCS);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
809 for(i = 0; i<8; i++)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
810 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
811 write_spi(0xA5,HOLDCS);/* write data */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
812 actualAddress++;
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 /* byte with RELEASE */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
815 write_spi(0xA5,RELEASE);/* write data */
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
816 actualAddress = actualAddressBackup;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
817 closeSectorAddress = 0;
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 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
820
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 uint8_t ext_flash_erase_firmware_if_not_empty(void)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
823 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
824 const uint8_t TESTSIZE_FW = 4;
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 uint8_t data[TESTSIZE_FW];
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
827 uint8_t notEmpty = 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
828
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
829 actualAddress = FWSTART;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
830 ext_flash_read_block_start();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
831 for(int i = 0; i < TESTSIZE_FW; i++)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
832 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
833 ext_flash_read_block(&data[i], EF_FIRMWARE);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
834 if(data[i] != 0xFF)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
835 notEmpty = 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 ext_flash_read_block_stop();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
838
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
839 if(notEmpty)
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 ext_flash_erase_firmware();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
842 return 1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
843 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
844 else
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
845 return 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
846 }
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 uint8_t ext_flash_erase_firmware2_if_not_empty(void)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
849 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
850 const uint8_t TESTSIZE_FW = 4;
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 uint8_t data[TESTSIZE_FW];
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
853 uint8_t notEmpty = 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
854
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
855 actualAddress = FWSTART2;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
856 ext_flash_read_block_start();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
857 for(int i = 0; i < TESTSIZE_FW; i++)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
858 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
859 ext_flash_read_block(&data[i], EF_FIRMWARE2);
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
860 if(data[i] != 0xFF)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
861 notEmpty = 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 ext_flash_read_block_stop();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
864
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
865 if(notEmpty)
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
866 {
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
867 ext_flash_erase_firmware2();
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
868 return 1;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
869 }
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
870 else
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
871 return 0;
aeafa631147d Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff changeset
872 }