@@ -152,107 +152,21 @@ uint32_t flash_get_size(const flash_t *obj)
152
152
*/
153
153
static uint32_t GetSector (uint32_t address )
154
154
{
155
- uint32_t sector = 0 ;
156
-
157
- if ((address < ADDR_FLASH_SECTOR_1 ) && (address >= ADDR_FLASH_SECTOR_0 ))
158
- {
159
- sector = FLASH_SECTOR_0 ;
160
- }
161
- else if ((address < ADDR_FLASH_SECTOR_2 ) && (address >= ADDR_FLASH_SECTOR_1 ))
162
- {
163
- sector = FLASH_SECTOR_1 ;
164
- }
165
- else if ((address < ADDR_FLASH_SECTOR_3 ) && (address >= ADDR_FLASH_SECTOR_2 ))
166
- {
167
- sector = FLASH_SECTOR_2 ;
168
- }
169
- else if ((address < ADDR_FLASH_SECTOR_4 ) && (address >= ADDR_FLASH_SECTOR_3 ))
170
- {
171
- sector = FLASH_SECTOR_3 ;
172
- }
173
- else if ((address < ADDR_FLASH_SECTOR_5 ) && (address >= ADDR_FLASH_SECTOR_4 ))
174
- {
175
- sector = FLASH_SECTOR_4 ;
176
- }
177
- else if ((address < ADDR_FLASH_SECTOR_6 ) && (address >= ADDR_FLASH_SECTOR_5 ))
178
- {
179
- sector = FLASH_SECTOR_5 ;
180
- }
181
- else if ((address < ADDR_FLASH_SECTOR_7 ) && (address >= ADDR_FLASH_SECTOR_6 ))
182
- {
183
- sector = FLASH_SECTOR_6 ;
184
- }
185
- else if ((address < ADDR_FLASH_SECTOR_8 ) && (address >= ADDR_FLASH_SECTOR_7 ))
186
- {
187
- sector = FLASH_SECTOR_7 ;
188
- }
189
- else if ((address < ADDR_FLASH_SECTOR_9 ) && (address >= ADDR_FLASH_SECTOR_8 ))
190
- {
191
- sector = FLASH_SECTOR_8 ;
192
- }
193
- else if ((address < ADDR_FLASH_SECTOR_10 ) && (address >= ADDR_FLASH_SECTOR_9 ))
194
- {
195
- sector = FLASH_SECTOR_9 ;
196
- }
197
- else if ((address < ADDR_FLASH_SECTOR_11 ) && (address >= ADDR_FLASH_SECTOR_10 ))
198
- {
199
- sector = FLASH_SECTOR_10 ;
200
- }
201
- else if ((address < ADDR_FLASH_SECTOR_12 ) && (address >= ADDR_FLASH_SECTOR_11 ))
202
- {
203
- sector = FLASH_SECTOR_11 ;
204
- }
205
- else if ((address < ADDR_FLASH_SECTOR_13 ) && (address >= ADDR_FLASH_SECTOR_12 ))
206
- {
207
- sector = FLASH_SECTOR_12 ;
208
- }
209
- else if ((address < ADDR_FLASH_SECTOR_14 ) && (address >= ADDR_FLASH_SECTOR_13 ))
210
- {
211
- sector = FLASH_SECTOR_13 ;
212
- }
213
- else if ((address < ADDR_FLASH_SECTOR_15 ) && (address >= ADDR_FLASH_SECTOR_14 ))
214
- {
215
- sector = FLASH_SECTOR_14 ;
216
- }
217
- else if ((address < ADDR_FLASH_SECTOR_16 ) && (address >= ADDR_FLASH_SECTOR_15 ))
218
- {
219
- sector = FLASH_SECTOR_15 ;
220
- }
221
- else if ((address < ADDR_FLASH_SECTOR_17 ) && (address >= ADDR_FLASH_SECTOR_16 ))
222
- {
223
- sector = FLASH_SECTOR_16 ;
224
- }
225
- else if ((address < ADDR_FLASH_SECTOR_18 ) && (address >= ADDR_FLASH_SECTOR_17 ))
226
- {
227
- sector = FLASH_SECTOR_17 ;
228
- }
229
- else if ((address < ADDR_FLASH_SECTOR_19 ) && (address >= ADDR_FLASH_SECTOR_18 ))
230
- {
231
- sector = FLASH_SECTOR_18 ;
232
- }
233
- else if ((address < ADDR_FLASH_SECTOR_20 ) && (address >= ADDR_FLASH_SECTOR_19 ))
234
- {
235
- sector = FLASH_SECTOR_19 ;
236
- }
237
- else if ((address < ADDR_FLASH_SECTOR_21 ) && (address >= ADDR_FLASH_SECTOR_20 ))
238
- {
239
- sector = FLASH_SECTOR_20 ;
240
- }
241
- else if ((address < ADDR_FLASH_SECTOR_22 ) && (address >= ADDR_FLASH_SECTOR_21 ))
242
- {
243
- sector = FLASH_SECTOR_21 ;
244
- }
245
- else if ((address < ADDR_FLASH_SECTOR_23 ) && (address >= ADDR_FLASH_SECTOR_22 ))
246
- {
247
- sector = FLASH_SECTOR_22 ;
248
- }
249
- else /*(address < FLASH_END_ADDR) && (address >= ADDR_FLASH_SECTOR_23))*/
250
- {
251
- sector = FLASH_SECTOR_23 ;
252
- }
253
-
254
-
255
- return sector ;
155
+ uint32_t sector = 0 ;
156
+ uint32_t tmp = address - ADDR_FLASH_SECTOR_0 ;
157
+ if (address & 0x100000 ) { // handle 2nd bank
158
+ sector = FLASH_SECTOR_12 ;
159
+ tmp = address - ADDR_FLASH_SECTOR_12 ;
160
+ }
161
+ if (address < ADDR_FLASH_SECTOR_4 ) { // 16k sectorsize
162
+ //printf("tmp for sectors less than 4: 0X%4x")
163
+ sector += tmp >>14 ;
164
+ } else if (address < ADDR_FLASH_SECTOR_5 ) { //64k sector size
165
+ sector += FLASH_SECTOR_4 ;
166
+ } else {
167
+ sector += 4 + (tmp >>17 );
168
+ }
169
+ return sector ;
256
170
}
257
171
258
172
/**
@@ -262,15 +176,17 @@ static uint32_t GetSector(uint32_t address)
262
176
*/
263
177
static uint32_t GetSectorSize (uint32_t Sector )
264
178
{
265
- uint32_t sectorsize = 0x00 ;
266
- if ((Sector == FLASH_SECTOR_0 ) || (Sector == FLASH_SECTOR_1 ) || (Sector == FLASH_SECTOR_2 ) || \
267
- (Sector == FLASH_SECTOR_3 ) || (Sector == FLASH_SECTOR_12 ) || (Sector == FLASH_SECTOR_13 ) || \
268
- (Sector == FLASH_SECTOR_14 ) || (Sector == FLASH_SECTOR_15 )) {
269
- sectorsize = 16 * 1024 ;
270
- } else if ((Sector == FLASH_SECTOR_4 ) || (Sector == FLASH_SECTOR_16 )) {
271
- sectorsize = 64 * 1024 ;
272
- } else {
273
- sectorsize = 128 * 1024 ;
274
- }
275
- return sectorsize ;
179
+ uint32_t sectorsize = 0x00 ;
180
+ if ((Sector == FLASH_SECTOR_0 ) || (Sector == FLASH_SECTOR_1 ) || (Sector == FLASH_SECTOR_2 ) || \
181
+ (Sector == FLASH_SECTOR_3 ) || (Sector == FLASH_SECTOR_12 ) || (Sector == FLASH_SECTOR_13 ) || \
182
+ (Sector == FLASH_SECTOR_14 ) || (Sector == FLASH_SECTOR_15 )) {
183
+ sectorsize = 16 * 1024 ;
184
+ } else if ((Sector == FLASH_SECTOR_4 ) || (Sector == FLASH_SECTOR_16 )){
185
+ sectorsize = 64 * 1024 ;
186
+ } else {
187
+ sectorsize = 128 * 1024 ;
188
+ }
189
+ return sectorsize ;
276
190
}
191
+
192
+ #endif
0 commit comments