blob: 961e74ecf77acfecf9154fd2d7c57a69aa0dfcf0 [file] [log] [blame]
Roman Okhrimenko89ecdac2020-02-28 17:05:55 +02001/* Manual version of auto-generated version. */
2
Roman Okhrimenko13f79ed2021-03-11 19:05:41 +02003#ifndef SYSFLASH_H
4#define SYSFLASH_H
Roman Okhrimenko89ecdac2020-02-28 17:05:55 +02005
Roman Okhrimenko13f79ed2021-03-11 19:05:41 +02006#include <stdint.h>
7#include "cy_syslib.h"
Roman Okhrimenko89ecdac2020-02-28 17:05:55 +02008
Roman Okhrimenko13f79ed2021-03-11 19:05:41 +02009#define FLASH_AREA_BOOTLOADER (0)
10#define FLASH_AREA_IMAGE_0 (1u)
11#define FLASH_AREA_IMAGE_1 (2u)
12#define FLASH_AREA_IMAGE_SCRATCH (3u)
13#define FLASH_AREA_IMAGE_2 (5u)
14#define FLASH_AREA_IMAGE_3 (6u)
15#define FLASH_AREA_IMAGE_SWAP_STATUS (7u)
Roman Okhrimenko89ecdac2020-02-28 17:05:55 +020016
Roman Okhrimenko13f79ed2021-03-11 19:05:41 +020017/* it is related to multi-image case */
18#define FLASH_AREA_IMAGE_IDX_1 (0u)
19#define FLASH_AREA_IMAGE_IDX_2 (1u)
20
21/* This defines if External Flash (SMIF) will be used for Upgrade Slots */
Bohdan Kovalchuk0324f1b2020-05-26 08:04:24 -050022/* #define CY_BOOT_USE_EXTERNAL_FLASH */
23
24/* use PDL-defined offset or one from SMFI config */
25#define CY_SMIF_BASE_MEM_OFFSET (0x18000000)
26
Roman Okhrimenko89ecdac2020-02-28 17:05:55 +020027#define CY_FLASH_ALIGN (CY_FLASH_SIZEOF_ROW)
28#define CY_FLASH_DEVICE_BASE (CY_FLASH_BASE)
29
30#ifndef CY_BOOT_SCRATCH_SIZE
Roman Okhrimenko13f79ed2021-03-11 19:05:41 +020031#ifndef CY_BOOT_USE_EXTERNAL_FLASH
32#define CY_BOOT_SCRATCH_SIZE (0x1000u)
33#else /* CY_BOOT_USE_EXTERNAL_FLASH */
34#define CY_BOOT_SCRATCH_SIZE (0x80000)
35#endif /* CY_BOOT_USE_EXTERNAL_FLASH */
36#endif /* CY_BOOT_SCRATCH_SIZE */
37
38#ifndef CY_BOOT_SWAP_STATUS_SIZE
39#define CY_BOOT_SWAP_STATUS_SIZE (BOOT_SWAP_STATUS_SZ_PRIM + BOOT_SWAP_STATUS_SZ_SEC)
Roman Okhrimenko89ecdac2020-02-28 17:05:55 +020040#endif
41
42#ifndef CY_BOOT_BOOTLOADER_SIZE
43#define CY_BOOT_BOOTLOADER_SIZE (0x18000)
44#endif
45
Roman Okhrimenko13f79ed2021-03-11 19:05:41 +020046/* Sizes of CY_BOOT_IMAGE_1_SIZE and CY_BOOT_IMAGE_2_SIZE
47 * can be defined from build system. Use default values otherwise
48*/
49#ifndef CY_BOOT_USE_EXTERNAL_FLASH
50#ifndef CY_BOOT_IMAGE_1_SIZE
51#define CY_BOOT_IMAGE_1_SIZE (0x10000)
52#endif /* CY_BOOT_IMAGE_1_SIZE */
53#if (MCUBOOT_IMAGE_NUMBER == 2)
54#ifndef CY_BOOT_IMAGE_2_SIZE
55#define CY_BOOT_IMAGE_2_SIZE (0x20000)
56#endif /* CY_BOOT_IMAGE_2_SIZE */
57#endif /* (MCUBOOT_IMAGE_NUMBER == 2) */
58#else /* CY_BOOT_USE_EXTERNAL_FLASH */
59#ifndef CY_BOOT_IMAGE_1_SIZE
60#define CY_BOOT_IMAGE_1_SIZE (0xC0000)
61#endif /* CY_BOOT_IMAGE_1_SIZE */
62#if (MCUBOOT_IMAGE_NUMBER == 2)
63#ifndef CY_BOOT_IMAGE_2_SIZE
64#define CY_BOOT_IMAGE_2_SIZE (0xC0000)
65#endif /* CY_BOOT_IMAGE_2_SIZE */
66#endif /* (MCUBOOT_IMAGE_NUMBER == 2) */
67#endif /* CY_BOOT_USE_EXTERNAL_FLASH */
68
Roman Okhrimenko89ecdac2020-02-28 17:05:55 +020069#ifndef CY_BOOT_PRIMARY_1_SIZE
Roman Okhrimenko13f79ed2021-03-11 19:05:41 +020070#define CY_BOOT_PRIMARY_1_SIZE CY_BOOT_IMAGE_1_SIZE
Roman Okhrimenko89ecdac2020-02-28 17:05:55 +020071#endif
72
73#ifndef CY_BOOT_SECONDARY_1_SIZE
Roman Okhrimenko13f79ed2021-03-11 19:05:41 +020074#define CY_BOOT_SECONDARY_1_SIZE CY_BOOT_IMAGE_1_SIZE
Roman Okhrimenko89ecdac2020-02-28 17:05:55 +020075#endif
76
77#if (MCUBOOT_IMAGE_NUMBER == 2) /* if dual-image */
78#ifndef CY_BOOT_PRIMARY_2_SIZE
Roman Okhrimenko13f79ed2021-03-11 19:05:41 +020079#define CY_BOOT_PRIMARY_2_SIZE CY_BOOT_IMAGE_2_SIZE
Roman Okhrimenko89ecdac2020-02-28 17:05:55 +020080#endif
81
82#ifndef CY_BOOT_SECONDARY_2_SIZE
Roman Okhrimenko13f79ed2021-03-11 19:05:41 +020083#define CY_BOOT_SECONDARY_2_SIZE CY_BOOT_IMAGE_2_SIZE
Roman Okhrimenko89ecdac2020-02-28 17:05:55 +020084#endif
85#endif
86
Roman Okhrimenko13f79ed2021-03-11 19:05:41 +020087#ifndef CY_BOOT_EXTERNAL_FLASH_SECONDARY_1_OFFSET
88#define CY_BOOT_EXTERNAL_FLASH_SECONDARY_1_OFFSET (0x0u)
89#endif
90
91#ifndef CY_BOOT_EXTERNAL_FLASH_SECONDARY_2_OFFSET
92#define CY_BOOT_EXTERNAL_FLASH_SECONDARY_2_OFFSET (0x240000u)
93#endif
94
95#ifndef CY_BOOT_EXTERNAL_FLASH_SCRATCH_OFFSET
96#define CY_BOOT_EXTERNAL_FLASH_SCRATCH_OFFSET (0x440000u)
97#endif
98
99#ifndef CY_BOOT_SECONDARY_1_EXT_MEM_OFFSET
100#define CY_BOOT_SECONDARY_1_EXT_MEM_OFFSET (CY_SMIF_BASE_MEM_OFFSET + CY_BOOT_EXTERNAL_FLASH_SECONDARY_1_OFFSET)
101#endif
102
103#ifndef CY_BOOT_SECONDARY_2_EXT_MEM_OFFSET
104#define CY_BOOT_SECONDARY_2_EXT_MEM_OFFSET (CY_SMIF_BASE_MEM_OFFSET + CY_BOOT_EXTERNAL_FLASH_SECONDARY_2_OFFSET)
105#endif
106
107#define BOOT_MAX_SWAP_STATUS_SECTORS (64)
108
Roman Okhrimenko89ecdac2020-02-28 17:05:55 +0200109#if (MCUBOOT_IMAGE_NUMBER == 1)
110#define FLASH_AREA_IMAGE_PRIMARY(x) (((x) == 0) ? \
111 FLASH_AREA_IMAGE_0 : \
112 FLASH_AREA_IMAGE_0)
113#define FLASH_AREA_IMAGE_SECONDARY(x) (((x) == 0) ? \
114 FLASH_AREA_IMAGE_1 : \
115 FLASH_AREA_IMAGE_1)
116
117#elif (MCUBOOT_IMAGE_NUMBER == 2)
118
Roman Okhrimenko13f79ed2021-03-11 19:05:41 +0200119#ifndef CY_FLASH_MAP_EXT_DESC
Roman Okhrimenko89ecdac2020-02-28 17:05:55 +0200120#define FLASH_AREA_IMAGE_PRIMARY(x) (((x) == 0) ? \
121 FLASH_AREA_IMAGE_0 : \
122 ((x) == 1) ? \
123 FLASH_AREA_IMAGE_2 : \
124 255)
125#define FLASH_AREA_IMAGE_SECONDARY(x) (((x) == 0) ? \
126 FLASH_AREA_IMAGE_1 : \
127 ((x) == 1) ? \
128 FLASH_AREA_IMAGE_3 : \
129 255)
Roman Okhrimenko89ecdac2020-02-28 17:05:55 +0200130#else
Roman Okhrimenko13f79ed2021-03-11 19:05:41 +0200131__STATIC_INLINE uint8_t FLASH_AREA_IMAGE_PRIMARY(uint32_t areaID)
132{
133 uint8_t result;
134
135 if (0U == areaID)
136 {
137 result = FLASH_AREA_IMAGE_0;
138 }
139 else
140 if (1U == areaID)
141 {
142 result = FLASH_AREA_IMAGE_2;
143 }
144 else
145 {
146 result = 0xFF;
147 }
148
149 return result;
150}
151
152__STATIC_INLINE uint8_t FLASH_AREA_IMAGE_SECONDARY(uint32_t areaID)
153{
154 uint8_t result;
155
156 if (0U == areaID)
157 {
158 result = FLASH_AREA_IMAGE_1;
159 }
160 else
161 if (1U == areaID)
162 {
163 result = FLASH_AREA_IMAGE_3;
164 }
165 else
166 {
167 result = 0xFF;
168 }
169
170 return result;
171}
Roman Okhrimenko89ecdac2020-02-28 17:05:55 +0200172#endif
Roman Okhrimenko13f79ed2021-03-11 19:05:41 +0200173#endif
174
175// #else
176// #warning "Image slot and flash area mapping is not defined"
177// #endif
178
Roman Okhrimenko89ecdac2020-02-28 17:05:55 +0200179#define CY_IMG_HDR_SIZE 0x400
180
181#ifndef CY_FLASH_MAP_EXT_DESC
182/* Uncomment in case you want to use separately defined table of flash area descriptors */
183/* #define CY_FLASH_MAP_EXT_DESC */
184#endif
185
Roman Okhrimenko13f79ed2021-03-11 19:05:41 +0200186#endif /* SYSFLASH_H */