19
19
20
20
#if DEVICE_FLASH
21
21
22
- #if defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3U )
23
-
24
- #include <arm_cmse.h>
25
22
#include "fsl_iap.h"
26
23
#include "partition/region_defs.h"
24
+ #if defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3U )
25
+ #include <arm_cmse.h>
26
+ #endif
27
+
28
+ #define LPC55S69_SECURE_FLASH_START (PSA_SECURE_ROM_START - S_ROM_ALIAS_BASE)
29
+ #define LPC55S69_SECURE_FLASH_SIZE (PSA_SECURE_ROM_SIZE + FLASH_SST_AREA_SIZE)
27
30
28
31
static flash_config_t flash_config ;
29
32
33
+ #if defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3U )
30
34
/* Check if address range [start_addr, end_addr] is in non-secure flash
31
35
*
32
36
* @param obj The flash object
@@ -43,15 +47,15 @@ static int32_t flash_check_nonsecure(flash_t *obj, uint32_t start_addr, uint32_t
43
47
}
44
48
45
49
/* Check if start address is in non-secure flash */
46
- if ((start_addr < FLASH_AREA_IMAGE_1_OFFSET ) ||
47
- (start_addr >= (FLASH_AREA_IMAGE_1_OFFSET + NS_CODE_SIZE ))) {
50
+ if ((start_addr < PSA_NON_SECURE_ROM_START ) ||
51
+ (start_addr >= (PSA_NON_SECURE_ROM_START + PSA_NON_SECURE_ROM_SIZE ))) {
48
52
return -1 ;
49
53
}
50
54
51
55
/* Check if end address is in non-secure flash */
52
56
if (end_addr != start_addr ) {
53
- if ((end_addr < FLASH_AREA_IMAGE_1_OFFSET ) ||
54
- (end_addr >= (FLASH_AREA_IMAGE_1_OFFSET + NS_CODE_SIZE ))) {
57
+ if ((end_addr < PSA_NON_SECURE_ROM_START ) ||
58
+ (end_addr >= (PSA_NON_SECURE_ROM_START + PSA_NON_SECURE_ROM_SIZE ))) {
55
59
return -1 ;
56
60
}
57
61
}
@@ -68,11 +72,6 @@ MBED_NONSECURE_ENTRY int32_t flash_init(flash_t *obj)
68
72
}
69
73
}
70
74
71
- MBED_NONSECURE_ENTRY int32_t flash_free (flash_t * obj )
72
- {
73
- return 0 ;
74
- }
75
-
76
75
MBED_NONSECURE_ENTRY int32_t flash_erase_sector (flash_t * obj , uint32_t address )
77
76
{
78
77
if (cmse_nonsecure_caller ()) {
@@ -127,25 +126,6 @@ MBED_NONSECURE_ENTRY int32_t flash_program_page(flash_t *obj, uint32_t address,
127
126
}
128
127
}
129
128
130
- MBED_NONSECURE_ENTRY uint32_t flash_get_sector_size (const flash_t * obj , uint32_t address )
131
- {
132
- if (cmse_nonsecure_caller ()) {
133
- if ((address >= FLASH_AREA_IMAGE_1_OFFSET ) &&
134
- (address < (FLASH_AREA_IMAGE_1_OFFSET + NS_CODE_SIZE ))) {
135
- return flash_config .PFlashPageSize ;
136
- }
137
-
138
- return MBED_FLASH_INVALID_SIZE ;
139
- }
140
-
141
- if ((address >= FLASH_AREA_IMAGE_0_OFFSET ) &&
142
- (address < (FLASH_AREA_IMAGE_0_OFFSET + 0x40000 ))) {
143
- return flash_config .PFlashPageSize ;
144
- }
145
-
146
- return MBED_FLASH_INVALID_SIZE ;
147
- }
148
-
149
129
MBED_NONSECURE_ENTRY int32_t flash_read (flash_t * obj , uint32_t address , uint8_t * data , uint32_t size )
150
130
{
151
131
if (cmse_nonsecure_caller ()) {
@@ -164,37 +144,61 @@ MBED_NONSECURE_ENTRY int32_t flash_read(flash_t *obj, uint32_t address, uint8_t
164
144
memcpy (data , (const void * )address , size );
165
145
return 0 ;
166
146
}
147
+ #endif // #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
167
148
168
- MBED_NONSECURE_ENTRY uint32_t flash_get_page_size ( const flash_t * obj )
149
+ int32_t flash_free ( flash_t * obj )
169
150
{
170
- return flash_config . PFlashPageSize ;
151
+ return 0 ;
171
152
}
172
153
173
- MBED_NONSECURE_ENTRY uint32_t flash_get_start_address (const flash_t * obj )
154
+ uint32_t flash_get_sector_size (const flash_t * obj , uint32_t address )
174
155
{
175
- if (cmse_nonsecure_caller ()) {
176
- return FLASH_AREA_IMAGE_1_OFFSET ;
156
+ #if defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3U )
157
+ if ((address >= LPC55S69_SECURE_FLASH_START ) &&
158
+ (address < (LPC55S69_SECURE_FLASH_START + LPC55S69_SECURE_FLASH_SIZE ))) {
159
+ return FSL_FEATURE_SYSCON_FLASH_PAGE_SIZE_BYTES ;
177
160
}
178
161
179
- return FLASH_AREA_IMAGE_0_OFFSET ;
162
+ return MBED_FLASH_INVALID_SIZE ;
163
+ #else
164
+ if ((address >= PSA_NON_SECURE_ROM_START ) &&
165
+ (address < (PSA_NON_SECURE_ROM_START + PSA_NON_SECURE_ROM_SIZE ))) {
166
+ return FSL_FEATURE_SYSCON_FLASH_PAGE_SIZE_BYTES ;
167
+ }
168
+
169
+ return MBED_FLASH_INVALID_SIZE ;
170
+ #endif
180
171
}
181
172
182
- MBED_NONSECURE_ENTRY uint32_t flash_get_size (const flash_t * obj )
173
+ uint32_t flash_get_page_size (const flash_t * obj )
183
174
{
184
- if (cmse_nonsecure_caller ()) {
185
- return NS_CODE_SIZE ;
186
- }
175
+ return FSL_FEATURE_SYSCON_FLASH_PAGE_SIZE_BYTES ;
176
+ }
177
+
178
+ uint32_t flash_get_start_address (const flash_t * obj )
179
+ {
180
+ #if defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3U )
181
+ return LPC55S69_SECURE_FLASH_START ;
182
+ #else
183
+ return PSA_NON_SECURE_ROM_START ;
184
+ #endif
185
+ }
187
186
188
- return 0x40000 ;
187
+ uint32_t flash_get_size (const flash_t * obj )
188
+ {
189
+ #if defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3U )
190
+ return LPC55S69_SECURE_FLASH_SIZE ;
191
+ #else
192
+ return PSA_NON_SECURE_ROM_SIZE ;
193
+ #endif
189
194
}
190
195
191
- MBED_NONSECURE_ENTRY uint8_t flash_get_erase_value (const flash_t * obj )
196
+ uint8_t flash_get_erase_value (const flash_t * obj )
192
197
{
193
198
(void )obj ;
194
199
195
200
return 0x0 ;
196
201
}
197
202
198
- #endif // #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
199
- #endif
203
+ #endif //DEVICE_FLASH
200
204
0 commit comments