1 /* 2 * Copyright (c) 2021 Espressif Systems (Shanghai) Co., Ltd. 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #pragma once 8 9 #include <mcuboot_config/mcuboot_config.h> 10 11 //! A user-defined identifier for different storage mediums 12 //! (i.e internal flash, external NOR flash, eMMC, etc) 13 #define FLASH_DEVICE_INTERNAL_FLASH 0 14 15 //! An arbitrarily high slot ID we will use to indicate that 16 //! there is not slot 17 #define FLASH_SLOT_DOES_NOT_EXIST 255 18 19 //! The slot we will use to track the bootloader allocation 20 #define FLASH_AREA_BOOTLOADER 0 21 22 #define FLASH_AREA_IMAGE_0_PRIMARY 1 23 #define FLASH_AREA_IMAGE_0_SECONDARY 2 24 #define FLASH_AREA_IMAGE_SCRATCH 3 25 #define FLASH_AREA_IMAGE_1_PRIMARY 4 26 #define FLASH_AREA_IMAGE_1_SECONDARY 5 27 28 #if (MCUBOOT_IMAGE_NUMBER == 1) 29 #define FLASH_AREA_IMAGE_PRIMARY(x) (((x) == 0) ? \ 30 FLASH_AREA_IMAGE_0_PRIMARY : \ 31 FLASH_SLOT_DOES_NOT_EXIST) 32 #define FLASH_AREA_IMAGE_SECONDARY(x) (((x) == 0) ? \ 33 FLASH_AREA_IMAGE_0_SECONDARY : \ 34 FLASH_SLOT_DOES_NOT_EXIST) 35 36 #elif (MCUBOOT_IMAGE_NUMBER == 2) 37 #define FLASH_AREA_IMAGE_PRIMARY(x) (((x) == 0) ? \ 38 FLASH_AREA_IMAGE_0_PRIMARY : \ 39 ((x) == 1) ? \ 40 FLASH_AREA_IMAGE_1_PRIMARY : \ 41 FLASH_SLOT_DOES_NOT_EXIST) 42 #define FLASH_AREA_IMAGE_SECONDARY(x) (((x) == 0) ? \ 43 FLASH_AREA_IMAGE_0_SECONDARY : \ 44 ((x) == 1) ? \ 45 FLASH_AREA_IMAGE_1_SECONDARY : \ 46 FLASH_SLOT_DOES_NOT_EXIST) 47 48 #else 49 #warning "Image slot and flash area mapping is not defined" 50 #endif 51