@@ -152,107 +152,21 @@ uint32_t flash_get_size(const flash_t *obj)
152152 */
153153static uint32_t GetSector (uint32_t address )
154154{
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 ;
256170}
257171
258172/**
@@ -262,15 +176,17 @@ static uint32_t GetSector(uint32_t address)
262176 */
263177static uint32_t GetSectorSize (uint32_t Sector )
264178{
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 ;
276190}
191+
192+ #endif
0 commit comments