Skip to content

Commit a2b009d

Browse files
committed
sim: Add implementation of flash_area_get_sectors_fa
Variant of flash_area_get_sectors that takes flash_area object pointer instead of flash area identifier. Signed-off-by: Dominik Ermel <[email protected]>
1 parent 2dd1fc2 commit a2b009d

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

Diff for: sim/mcuboot-sys/csupport/run.c

+34
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,40 @@ int flash_area_to_sectors(int idx, int *cnt, struct flash_area *ret)
396396
return 0;
397397
}
398398

399+
int flash_area_get_sectors_fa(const struct flash_area *fa, uint32_t *count,
400+
struct flash_sector *sectors)
401+
{
402+
uint32_t i;
403+
struct area *slot;
404+
struct area_desc *flash_areas;
405+
406+
flash_areas = sim_get_flash_areas();
407+
for (i = 0; i < flash_areas->num_slots; i++) {
408+
if (flash_areas->slots[i].id == fa->fa_id)
409+
break;
410+
}
411+
if (i == flash_areas->num_slots) {
412+
printf("Unsupported area\n");
413+
abort();
414+
}
415+
416+
slot = &flash_areas->slots[i];
417+
418+
if (slot->num_areas > *count) {
419+
printf("Too many areas in slot\n");
420+
abort();
421+
}
422+
423+
for (i = 0; i < slot->num_areas; i++) {
424+
sectors[i].fs_off = slot->areas[i].fa_off -
425+
slot->whole.fa_off;
426+
sectors[i].fs_size = slot->areas[i].fa_size;
427+
}
428+
*count = slot->num_areas;
429+
430+
return 0;
431+
}
432+
399433
int flash_area_get_sectors(int fa_id, uint32_t *count,
400434
struct flash_sector *sectors)
401435
{

Diff for: sim/mcuboot-sys/csupport/storage/flash_map.h

+5
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,11 @@ uint8_t flash_area_erased_val(const struct flash_area *);
135135
*/
136136
int flash_area_get_sectors(int fa_id, uint32_t *count,
137137
struct flash_sector *sectors);
138+
/*
139+
* Given flash area object poiner, return info about sectors within the area.
140+
*/
141+
int flash_area_get_sectors_fa(const struct flash_area *fa, uint32_t *count,
142+
struct flash_sector *sectors);
138143

139144

140145
/* Retrieve the flash sector a given offset belongs to.

0 commit comments

Comments
 (0)