annotate BootLoader/Src/externLogbookFlash_mini.c @ 1002:23e94766d00a BootloaderOstc5

Bootloader remove not needed fonts: Only font48 and 24 are used by the bootloader. To reduce bootloader size the other fonts have been removed and the character set of font24 was reduce (no special characters)
author Ideenmodellierer
date Thu, 01 May 2025 17:48:25 +0200
parents aeafa631147d
children 493a5903ec20
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 }