Hello,
I'm working on updating my copy of the nRF Connect SDK from 1.7.0 to 2.4.2. My project runs on an nRF9160 so I had SPM configured for my project and now I need to use TFM instead. To do that, I'm following these instructions: https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/security/tfm.html#ug-tfm-migrate. However, I get an error during build configuration from the partition manager saying that there are gaps in my partitions:
Partition manager failed: Incorrect amount of gaps found in static configuration. There must be exactly one gap in the static configuration to support placing the dynamic partitions (such as 'app'). Gaps found (2):0x20000000-0x20010000 0x200144e8-0x20040000 The most common solution to this problem is to fill the smallest of these gaps with statically defined partition(s) until there is only one gap left. Alternatively re-order the already defined static partitions so that only one gap remains.
I'm not finding any gaps in my file, and I'm changing over the names as instructed. Here's my new pm_static.yml file
app: address: 0x1c200 end_address: 0xfa000 region: flash_primary size: 0xdde00 external_flash: address: 0xf2000 end_address: 0x400000 placement: after: - mcuboot_secondary region: external_flash size: 0x30e000 mcuboot: address: 0x0 end_address: 0xc000 placement: before: - mcuboot_primary region: flash_primary size: 0xc000 mcuboot_pad: address: 0xc000 # end_address: 0xc200 placement: before: - mcuboot_primary_app region: flash_primary size: 0x0 mcuboot_primary: address: 0xc000 end_address: 0xfe000 orig_span: &id001 - tfm - mcuboot_pad - app region: flash_primary size: 0xf2000 span: *id001 mcuboot_primary_app: address: 0xc200 end_address: 0xfe000 orig_span: &id002 - app - tfm region: flash_primary size: 0xf1e00 span: *id002 mcuboot_secondary: address: 0x0 device: MX25L3 end_address: 0xf2000 placement: align: start: 0x0 region: external_flash size: 0xf2000 nrf_modem_lib_ctrl: address: 0x20010000 end_address: 0x200104e8 inside: - sram_nonsecure placement: after: - start region: sram_primary size: 0x4e8 nrf_modem_lib_rx: address: 0x200124e8 end_address: 0x200144e8 inside: - sram_nonsecure placement: after: - nrf_modem_lib_tx region: sram_primary size: 0x2000 nrf_modem_lib_sram: address: 0x20010000 end_address: 0x200144e8 orig_span: &id003 - nrf_modem_lib_ctrl - nrf_modem_lib_tx - nrf_modem_lib_rx region: sram_primary size: 0x44e8 span: *id003 nrf_modem_lib_tx: address: 0x200104e8 end_address: 0x200124e8 inside: - sram_nonsecure placement: after: - nrf_modem_lib_ctrl region: sram_primary size: 0x2000 otp: address: 0xff8108 end_address: 0xff83fc region: otp size: 0x2f4 tfm: address: 0xc000 end_address: 0x1c200 inside: - mcuboot_primary_app placement: before: - app region: flash_primary size: 0x10200 tfm_secure: address: 0xc000 size: 0x10000 span: [mcuboot_pad, tfm] tfm_nonsecure: address: 0x1c200 size: 0xdde00 span: [app] sram_nonsecure: address: 0x20010000 end_address: 0x20040000 orig_span: &id004 - sram_primary - nrf_modem_lib_ctrl - nrf_modem_lib_tx - nrf_modem_lib_rx region: sram_primary size: 0x30000 span: *id004 sram_primary: address: 0x200144e8 end_address: 0x20040000 region: sram_primary size: 0x2bb18 sram_secure: address: 0x20000000 end_address: 0x20010000 orig_span: &id005 region: sram_primary size: 0x10000 span: *id005 lwm2m_carrier: address: 0xfa000 size: 0x4000 inside: - tfm_nonsecure settings_storage: address: 0xfe000 end_address: 0x100000 placement: before: - end region: flash_primary inside: - tfm_nonsecure size: 0x2000
compared to my old one:
app: address: 0x1c200 end_address: 0xfa000 region: flash_primary size: 0xdde00 external_flash: address: 0xf2000 end_address: 0x400000 placement: after: - mcuboot_secondary region: external_flash size: 0x30e000 mcuboot: address: 0x0 end_address: 0xc000 placement: before: - mcuboot_primary region: flash_primary size: 0xc000 mcuboot_pad: address: 0xc000 end_address: 0xc200 placement: before: - mcuboot_primary_app region: flash_primary size: 0x200 mcuboot_primary: address: 0xc000 end_address: 0xfe000 orig_span: &id001 - spm - mcuboot_pad - app region: flash_primary size: 0xf2000 span: *id001 mcuboot_primary_app: address: 0xc200 end_address: 0xfe000 orig_span: &id002 - app - spm region: flash_primary size: 0xf1e00 span: *id002 mcuboot_secondary: address: 0x0 device: MX25L3 end_address: 0xf2000 placement: align: start: 0x0 region: external_flash size: 0xf2000 nrf_modem_lib_ctrl: address: 0x20010000 end_address: 0x200104e8 inside: - sram_nonsecure placement: after: - spm_sram - start region: sram_primary size: 0x4e8 nrf_modem_lib_rx: address: 0x200124e8 end_address: 0x200144e8 inside: - sram_nonsecure placement: after: - nrf_modem_lib_tx region: sram_primary size: 0x2000 nrf_modem_lib_sram: address: 0x20010000 end_address: 0x200144e8 orig_span: &id003 - nrf_modem_lib_ctrl - nrf_modem_lib_tx - nrf_modem_lib_rx region: sram_primary size: 0x44e8 span: *id003 nrf_modem_lib_tx: address: 0x200104e8 end_address: 0x200124e8 inside: - sram_nonsecure placement: after: - nrf_modem_lib_ctrl region: sram_primary size: 0x2000 otp: address: 0xff8108 end_address: 0xff83fc region: otp size: 0x2f4 spm: address: 0xc200 end_address: 0x1c200 inside: - mcuboot_primary_app placement: before: - app region: flash_primary size: 0x10000 spm_sram: address: 0x20000000 end_address: 0x20010000 inside: - sram_secure placement: after: - start region: sram_primary size: 0x10000 sram_nonsecure: address: 0x20010000 end_address: 0x20040000 orig_span: &id004 - sram_primary - nrf_modem_lib_ctrl - nrf_modem_lib_tx - nrf_modem_lib_rx region: sram_primary size: 0x30000 span: *id004 sram_primary: address: 0x200144e8 end_address: 0x20040000 region: sram_primary size: 0x2bb18 sram_secure: address: 0x20000000 end_address: 0x20010000 orig_span: &id005 - spm_sram region: sram_primary size: 0x10000 span: *id005 lwm2m_carrier: address: 0xfa000 size: 0x4000 settings_storage: address: 0xfe000 end_address: 0x100000 placement: before: - end region: flash_primary size: 0x2000
Does anyone see anything glaringly wrong or have any tips?