|
1 | 1 | /*
|
2 |
| - * @copyright SPDX-License-Identifier: Apache-2.0 |
3 | 2 | * Copyright (c) 2017-2020 Arm Limited. All rights reserved.
|
4 | 3 | * Copyright (c) 2020 Nuvoton Technology Corp. All rights reserved.
|
5 | 4 | *
|
|
21 | 20 |
|
22 | 21 | /* Flash layout on M2354 with BL2 (single image boot):
|
23 | 22 | *
|
24 |
| - * 0x0000_0000 BL2 - MCUBoot (64KB) |
25 |
| - * 0x0001_0000 Protected Storage Area (32 KB) |
26 |
| - * 0x0000_8000 Internal Trusted Storage Area (28 KB) |
27 |
| - * 0x0000_F000 NV counters area (4 KB) |
28 |
| - * 0x0002_0000 Primary image area (320KB): |
29 |
| - * 0x0002_0000 Secure image primary |
30 |
| - * 0x0007_0000 Non-secure image primary |
31 |
| - * 0x0010_0000 Scratch area (4KB) |
| 23 | + * Internal Flash: |
| 24 | + * 0x0000_0000 BL2 - MCUBoot (48KB) |
| 25 | + * 0x0000_C000 Protected Storage Area (56 KB) |
| 26 | + * 0x0001_A000 Internal Trusted Storage Area (20 KB) |
| 27 | + * 0x0001_F000 NV counters area (4 KB) |
| 28 | + * 0x0002_0000 Primary image area (896KB): |
| 29 | + * 0x0002_0000 Secure image primary (320KB) |
| 30 | + * 0x0007_0000 Non-secure image primary (576KB) |
| 31 | + * 0x0010_0000 Secondary image area (2KB): |
| 32 | + * 0x0010_0000 Secure image secondary (320KB) (Dummy) |
| 33 | + * 0x0015_0000 Non-secure image secondary (576KB) (Dummy) |
| 34 | + * 0x001E_0000 Scratch area (4KB) (Dummy) |
32 | 35 | *
|
| 36 | + * SDH Flash: |
| 37 | + * 0x0000_0000 Secondary image area (896KB) |
| 38 | + * 0x0000_0000 Secure image secondary (320KB) |
| 39 | + * 0x0005_0000 Non-secure image secondary (576KB) |
| 40 | + * 0x0020_0000 Scratch area (4 KB) |
| 41 | + * |
| 42 | + * Flash layout on M2354 with BL2 (multiple image boot): |
| 43 | + * |
| 44 | + * Internal Flash: |
| 45 | + * 0x0000_0000 BL2 - MCUBoot (48KB) |
| 46 | + * 0x0000_C000 Protected Storage Area (56 KB) |
| 47 | + * 0x0001_A000 Internal Trusted Storage Area (20 KB) |
| 48 | + * 0x0001_F000 NV counters area (4 KB) |
| 49 | + * 0x0002_0000 Secure image primary slot (320KB) |
| 50 | + * 0x0007_0000 Non-secure image primary slot (576KB) |
| 51 | + * 0x0010_0000 Secure image secondary slot (320KB) (Dummy) |
| 52 | + * 0x0015_0000 Non-secure image secondary slot (576KB) (Dummy) |
| 53 | + * 0x001E_0000 Scratch area (4KB) (Dummy) |
| 54 | + * |
| 55 | + * SDH Flash: |
| 56 | + * 0x0000_0000 Secure image secondary slot (320KB) |
| 57 | + * 0x0010_0000 Non-secure image secondary slot (576KB) |
| 58 | + * 0x0020_0000 Scratch area (2 KB) |
33 | 59 | */
|
34 | 60 |
|
35 | 61 | /* This header file is included from linker scatter file as well, where only a
|
|
40 | 66 | */
|
41 | 67 |
|
42 | 68 | /* Size of a Secure and of a Non-secure image */
|
43 |
| -#define FLASH_S_PARTITION_SIZE (0x50000) /* S partition : 192+64+64 KB */ |
44 |
| -#define FLASH_NS_PARTITION_SIZE (0x90000) /* NS partition: 768-64-64 KB */ |
| 69 | +#if !NU_UPDATE_STAGE_FLASH |
| 70 | +#define FLASH_S_PARTITION_SIZE (0x50000) /* S partition : 320 KB */ |
| 71 | +#define FLASH_NS_PARTITION_SIZE (0x90000) /* NS partition: 576 KB */ |
| 72 | +#else |
| 73 | +#define FLASH_S_PARTITION_SIZE (0x46000) /* S partition : 280 KB */ |
| 74 | +#define FLASH_NS_PARTITION_SIZE (0x28000) /* NS partition: 160 KB */ |
| 75 | +#endif |
45 | 76 | #define FLASH_MAX_PARTITION_SIZE ((FLASH_S_PARTITION_SIZE > \
|
46 | 77 | FLASH_NS_PARTITION_SIZE) ? \
|
47 | 78 | FLASH_S_PARTITION_SIZE : \
|
|
50 | 81 | /* Sector size of the flash hardware; same as FLASH0_SECTOR_SIZE */
|
51 | 82 | #define FLASH_AREA_IMAGE_SECTOR_SIZE (0x800) /* 2 KB */
|
52 | 83 | /* Same as FLASH0_SIZE */
|
53 |
| -#define FLASH_TOTAL_SIZE (0x00100000) /* 512 KB */ |
| 84 | +#define FLASH_TOTAL_SIZE (0x00100000) /* 1024 KB */ |
54 | 85 |
|
55 | 86 | /* Flash layout info for BL2 bootloader */
|
56 | 87 | /* Same as FLASH0_BASE_S */
|
57 | 88 | #define FLASH_BASE_ADDRESS (0x00000000)
|
58 | 89 |
|
| 90 | +#if NU_UPDATE_STAGE_SDH |
| 91 | +#define SDH_FLASH_DEVICE_ID (FLASH_DEVICE_ID + 1) |
| 92 | +#define SDH_FLASH_DEV_NAME Driver_SDH_FLASH0 |
| 93 | +#define SDH_FLASH_BASE_ADDRESS (0x00000000) |
| 94 | +#endif |
| 95 | + |
59 | 96 | /* Offset and size definitions of the flash partitions that are handled by the
|
60 | 97 | * bootloader. The image swapping is done between IMAGE_PRIMARY and
|
61 | 98 | * IMAGE_SECONDARY, SCRATCH is used as a temporary storage during image
|
62 | 99 | * swapping.
|
63 | 100 | */
|
64 | 101 | #define FLASH_AREA_BL2_OFFSET (0x0)
|
65 |
| -#define FLASH_AREA_BL2_SIZE (0x10000) /* 64 KB */ |
| 102 | +#define FLASH_AREA_BL2_SIZE (0xC000) /* 48 KB */ |
66 | 103 |
|
67 | 104 | #if !defined(MCUBOOT_IMAGE_NUMBER) || (MCUBOOT_IMAGE_NUMBER == 1)
|
68 | 105 | /* Secure + Non-secure image primary slot */
|
69 | 106 | #define FLASH_AREA_0_ID (1)
|
70 |
| -#define FLASH_AREA_0_OFFSET (FLASH_AREA_BL2_OFFSET + FLASH_AREA_BL2_SIZE + 0x10000) /* 0x10000 */ |
71 |
| -#define FLASH_AREA_0_SIZE (FLASH_S_PARTITION_SIZE + FLASH_NS_PARTITION_SIZE) /* 480 KB */ |
| 107 | +#define FLASH_AREA_0_OFFSET (FLASH_AREA_BL2_OFFSET + FLASH_AREA_BL2_SIZE + 0x14000) /* Reserved for storage */ |
| 108 | +#define FLASH_AREA_0_SIZE (FLASH_S_PARTITION_SIZE + FLASH_NS_PARTITION_SIZE) |
72 | 109 | /* Secure + Non-secure secondary slot */
|
| 110 | +#if NU_UPDATE_STAGE_SDH |
73 | 111 | #define FLASH_AREA_2_ID (FLASH_AREA_0_ID + 1)
|
74 |
| -#define FLASH_AREA_2_OFFSET (0x100000) |
75 |
| -#define FLASH_AREA_2_SIZE (0x800) |
| 112 | +#define FLASH_AREA_2_OFFSET (0x0) |
| 113 | +#define FLASH_AREA_2_SIZE (FLASH_S_PARTITION_SIZE + FLASH_NS_PARTITION_SIZE) |
| 114 | +#define FLASH_DEVICE_ID_2 SDH_FLASH_DEVICE_ID |
| 115 | +#define FLASH_DEV_NAME_2 SDH_FLASH_DEV_NAME |
| 116 | +#else |
| 117 | +#define FLASH_AREA_2_ID (FLASH_AREA_0_ID + 1) |
| 118 | +#define FLASH_AREA_2_OFFSET (FLASH_AREA_0_OFFSET + FLASH_AREA_0_SIZE) |
| 119 | +#define FLASH_AREA_2_SIZE (FLASH_S_PARTITION_SIZE + FLASH_NS_PARTITION_SIZE) |
| 120 | +#endif |
76 | 121 |
|
77 | 122 | /* Scratch area */
|
| 123 | +#if NU_UPDATE_STAGE_SDH |
| 124 | +#define FLASH_AREA_SCRATCH_ID (FLASH_AREA_2_ID + 1) |
| 125 | +#define FLASH_AREA_SCRATCH_OFFSET (0x200000) |
| 126 | +#define FLASH_AREA_SCRATCH_SIZE (0x1000) |
| 127 | +#define FLASH_DEVICE_ID_SCRATCH SDH_FLASH_DEVICE_ID |
| 128 | +#define FLASH_DEV_NAME_SCRATCH SDH_FLASH_DEV_NAME |
| 129 | +#else |
78 | 130 | #define FLASH_AREA_SCRATCH_ID (FLASH_AREA_2_ID + 1)
|
79 |
| -#define FLASH_AREA_SCRATCH_OFFSET (0x100800) |
80 |
| -#define FLASH_AREA_SCRATCH_SIZE (0x800) |
| 131 | +#define FLASH_AREA_SCRATCH_OFFSET (FLASH_AREA_2_OFFSET + FLASH_AREA_2_SIZE) |
| 132 | +#define FLASH_AREA_SCRATCH_SIZE (0x1000) |
| 133 | +#endif |
81 | 134 |
|
82 | 135 | /* The maximum number of status entries supported by the bootloader. */
|
83 | 136 | #define MCUBOOT_STATUS_MAX_ENTRIES ((FLASH_S_PARTITION_SIZE + \
|
|
88 | 141 | #define MCUBOOT_MAX_IMG_SECTORS ((FLASH_S_PARTITION_SIZE + \
|
89 | 142 | FLASH_NS_PARTITION_SIZE) / \
|
90 | 143 | FLASH_AREA_IMAGE_SECTOR_SIZE)
|
| 144 | +#elif (MCUBOOT_IMAGE_NUMBER == 2) |
| 145 | +/* Secure image primary slot */ |
| 146 | +#define FLASH_AREA_0_ID (1) |
| 147 | +#define FLASH_AREA_0_OFFSET (FLASH_AREA_BL2_OFFSET + FLASH_AREA_BL2_SIZE + 0x14000) /* Reserved for storage */ |
| 148 | +#define FLASH_AREA_0_SIZE (FLASH_S_PARTITION_SIZE) |
| 149 | +/* Non-secure image primary slot */ |
| 150 | +#define FLASH_AREA_1_ID (FLASH_AREA_0_ID + 1) |
| 151 | +#define FLASH_AREA_1_OFFSET (FLASH_AREA_0_OFFSET + FLASH_AREA_0_SIZE) |
| 152 | +#define FLASH_AREA_1_SIZE (FLASH_NS_PARTITION_SIZE) |
91 | 153 |
|
| 154 | +/* Secure image secondary slot */ |
| 155 | +#if NU_UPDATE_STAGE_SDH |
| 156 | +#define FLASH_AREA_2_ID (FLASH_AREA_1_ID + 1) |
| 157 | +#define FLASH_AREA_2_OFFSET (0x0) |
| 158 | +#define FLASH_AREA_2_SIZE (FLASH_S_PARTITION_SIZE) |
| 159 | +#define FLASH_DEVICE_ID_2 SDH_FLASH_DEVICE_ID |
| 160 | +#define FLASH_DEV_NAME_2 SDH_FLASH_DEV_NAME |
92 | 161 | #else
|
93 |
| -#error "Only MCUBOOT_IMAGE_NUMBER 1 are supported!" |
| 162 | +#define FLASH_AREA_2_ID (FLASH_AREA_1_ID + 1) |
| 163 | +#define FLASH_AREA_2_OFFSET (FLASH_AREA_1_OFFSET + FLASH_AREA_1_SIZE) |
| 164 | +#define FLASH_AREA_2_SIZE (FLASH_S_PARTITION_SIZE) |
| 165 | +#endif |
| 166 | + |
| 167 | +/* Non-secure image secondary slot */ |
| 168 | +#if NU_UPDATE_STAGE_SDH |
| 169 | +#define FLASH_AREA_3_ID (FLASH_AREA_2_ID + 1) |
| 170 | +#define FLASH_AREA_3_OFFSET (0x100000) |
| 171 | +#define FLASH_AREA_3_SIZE (FLASH_NS_PARTITION_SIZE) |
| 172 | +#define FLASH_DEVICE_ID_3 SDH_FLASH_DEVICE_ID |
| 173 | +#define FLASH_DEV_NAME_3 SDH_FLASH_DEV_NAME |
| 174 | +#else |
| 175 | +#define FLASH_AREA_3_ID (FLASH_AREA_2_ID + 1) |
| 176 | +#define FLASH_AREA_3_OFFSET (FLASH_AREA_2_OFFSET + FLASH_AREA_2_SIZE) |
| 177 | +#define FLASH_AREA_3_SIZE (FLASH_NS_PARTITION_SIZE) |
| 178 | +#endif |
| 179 | + |
| 180 | +/* Scratch area */ |
| 181 | +#if NU_UPDATE_STAGE_SDH |
| 182 | +#define FLASH_AREA_SCRATCH_ID (FLASH_AREA_3_ID + 1) |
| 183 | +#define FLASH_AREA_SCRATCH_OFFSET (0x200000) |
| 184 | +#define FLASH_AREA_SCRATCH_SIZE (0x1000) |
| 185 | +#define FLASH_DEVICE_ID_SCRATCH SDH_FLASH_DEVICE_ID |
| 186 | +#define FLASH_DEV_NAME_SCRATCH SDH_FLASH_DEV_NAME |
| 187 | +#else |
| 188 | +#define FLASH_AREA_SCRATCH_ID (FLASH_AREA_3_ID + 1) |
| 189 | +#define FLASH_AREA_SCRATCH_OFFSET (FLASH_AREA_3_OFFSET + FLASH_AREA_3_SIZE) |
| 190 | +#define FLASH_AREA_SCRATCH_SIZE (0x1000) |
| 191 | +#endif |
| 192 | + |
| 193 | +/* The maximum number of status entries supported by the bootloader. */ |
| 194 | +#define MCUBOOT_STATUS_MAX_ENTRIES (FLASH_MAX_PARTITION_SIZE / \ |
| 195 | + FLASH_AREA_SCRATCH_SIZE) |
| 196 | + |
| 197 | +/* Maximum number of image sectors supported by the bootloader. */ |
| 198 | +#define MCUBOOT_MAX_IMG_SECTORS (FLASH_MAX_PARTITION_SIZE / \ |
| 199 | + FLASH_AREA_IMAGE_SECTOR_SIZE) |
| 200 | +#else /* MCUBOOT_IMAGE_NUMBER > 2 */ |
| 201 | +#error "Only MCUBOOT_IMAGE_NUMBER 1 and 2 are supported!" |
94 | 202 | #endif /* MCUBOOT_IMAGE_NUMBER */
|
95 | 203 |
|
96 | 204 | /* Protected Storage (PS) Service definitions */
|
97 |
| -#define FLASH_PS_AREA_OFFSET (0x10000) |
98 |
| -#define FLASH_PS_AREA_SIZE (0x8000) |
| 205 | +#define FLASH_PS_AREA_OFFSET (FLASH_AREA_BL2_OFFSET + FLASH_AREA_BL2_SIZE) |
| 206 | +#define FLASH_PS_AREA_SIZE (0xE000) |
99 | 207 |
|
100 | 208 | /* Internal Trusted Storage (ITS) Service definitions */
|
101 | 209 | #define FLASH_ITS_AREA_OFFSET (FLASH_PS_AREA_OFFSET + \
|
102 | 210 | FLASH_PS_AREA_SIZE)
|
103 |
| -#define FLASH_ITS_AREA_SIZE (0x7000) |
| 211 | +#define FLASH_ITS_AREA_SIZE (0x5000) |
104 | 212 |
|
105 | 213 | /* NV Counters definitions */
|
106 | 214 | #define FLASH_NV_COUNTERS_AREA_OFFSET (FLASH_ITS_AREA_OFFSET + \
|
107 | 215 | FLASH_ITS_AREA_SIZE)
|
108 |
| -#define FLASH_NV_COUNTERS_AREA_SIZE (FLASH_AREA_IMAGE_SECTOR_SIZE) |
| 216 | +#define FLASH_NV_COUNTERS_AREA_SIZE (0x1000) |
109 | 217 |
|
110 | 218 | /* Offset and size definition in flash area used by assemble.py */
|
111 | 219 | #define SECURE_IMAGE_OFFSET (0x0)
|
|
0 commit comments