bootutil: add abstraction for area initialization
Add an abstraction for initializing bootloader state for a particular
flash area.
For now, we preserve some existing hacky behavior related to the
scratch area. This will get cleaned up more later in the series.
Signed-off-by: Marti Bolivar <marti.bolivar@linaro.org>
diff --git a/boot/bootutil/src/loader.c b/boot/bootutil/src/loader.c
index c0ecda2..e6d3b5c 100644
--- a/boot/bootutil/src/loader.c
+++ b/boot/bootutil/src/loader.c
@@ -27,7 +27,6 @@
#include <inttypes.h>
#include <stdlib.h>
#include <string.h>
-#include "sysflash/sysflash.h"
#include <hal/hal_flash.h>
#include <os/os_malloc.h>
#include "bootutil/bootutil.h"
@@ -41,8 +40,6 @@
#include "mynewt/config.h"
#endif
-#define BOOT_MAX_IMG_SECTORS 120
-
static struct boot_loader_state boot_data;
struct boot_status_table {
@@ -326,32 +323,22 @@
static int
boot_read_sectors(void)
{
- const struct flash_area *scratch;
- int num_sectors_slot0;
- int num_sectors_slot1;
int rc;
- num_sectors_slot0 = BOOT_MAX_IMG_SECTORS;
- rc = flash_area_to_sectors(FLASH_AREA_IMAGE_0, &num_sectors_slot0,
- boot_data.imgs[0].sectors);
+ rc = boot_initialize_area(&boot_data, FLASH_AREA_IMAGE_0);
if (rc != 0) {
return BOOT_EFLASH;
}
- boot_img_set_num_sectors(&boot_data, 0, num_sectors_slot0);
- num_sectors_slot1 = BOOT_MAX_IMG_SECTORS;
- rc = flash_area_to_sectors(FLASH_AREA_IMAGE_1, &num_sectors_slot1,
- boot_data.imgs[1].sectors);
+ rc = boot_initialize_area(&boot_data, FLASH_AREA_IMAGE_1);
if (rc != 0) {
return BOOT_EFLASH;
}
- boot_img_set_num_sectors(&boot_data, 1, num_sectors_slot1);
- rc = flash_area_open(FLASH_AREA_IMAGE_SCRATCH, &scratch);
+ rc = boot_initialize_area(&boot_data, FLASH_AREA_IMAGE_SCRATCH);
if (rc != 0) {
return BOOT_EFLASH;
}
- boot_data.scratch_sector = *scratch;
boot_data.write_sz = boot_write_sz();