Hello,
I turned on the flash protect function through the CONFIG_FPROTECT switch, and the system kept running until spm_config_flash restarted.
Flash protect code in mcuboot
#define PROTECT_SIZE 0x8000
#define PROTECT_ADDR 0
#endif
rc = fprotect_area(PROTECT_ADDR, PROTECT_SIZE);
if (rc != 0) {
BOOT_LOG_ERR("Protect mcuboot flash failed, cancel startup.");
while (1)
;
}
Configure No-secure Flash code in SPM :
static void spm_config_flash(void)
{
/* Regions of flash up to and including SPM are configured as Secure.
* The rest of flash is configured as Non-Secure.
*/
const uint32_t secure_flash_perm = FLASH_READ | FLASH_WRITE | FLASH_EXEC
| FLASH_LOCK | FLASH_SECURE;
const uint32_t nonsecure_flash_perm = FLASH_READ | FLASH_WRITE | FLASH_EXEC
| FLASH_LOCK | FLASH_NONSEC;
PRINT("Flash regions\t\tDomain\t\tPermissions\n");
config_regions(false, 0, NON_SECURE_FLASH_REGION_INDEX,
secure_flash_perm);
config_regions(false, NON_SECURE_FLASH_REGION_INDEX,
NUM_FLASH_SECURE_ATTRIBUTION_REGIONS,
nonsecure_flash_perm);
PRINT("\n");
It seems a bit contradictory here, we protect the 0~0x8000 address in Flash, but set the 0~0x100 address in SPM as a non-secure area.
How to enable mcuboot's FPROTECT feature in nrf9160 No-Secure app? Can you provide some examples?