nrf5340: How to use xip feature and app image burning to external flash

Hi,

Now I'm using the matter lock demo to develop products(v2.1.2\nrf\samples\matter\lock), but I find that the demo image is too large, and it is impossible to extend our application with internal flash.

I want to use the xip feature, but I don't know how to use it and change the pm_static or other config,  I didn't get any useful information in this project of machine learning. Is there any detailed documentation on how to use the xip execution.

In the matter lock demo, I have add my application code to it, it is show the follow error 

pls check it and give me helping, thanks!

  • add the pm_static_dfu.yaml and .config

    PM_MCUBOOT_OFFSET=0x0
    PM_MCUBOOT_ADDRESS=0x0
    PM_MCUBOOT_END_ADDRESS=0x8000
    PM_MCUBOOT_SIZE=0x8000
    PM_MCUBOOT_NAME=mcuboot
    PM_MCUBOOT_ID=0
    PM_mcuboot_ID=PM_MCUBOOT_ID
    PM_mcuboot_IS_ENABLED=1
    PM_0_LABEL=MCUBOOT
    PM_MCUBOOT_PRIMARY_1_OFFSET=0x0
    PM_MCUBOOT_PRIMARY_1_ADDRESS=0x0
    PM_MCUBOOT_PRIMARY_1_END_ADDRESS=0x40000
    PM_MCUBOOT_PRIMARY_1_SIZE=0x40000
    PM_MCUBOOT_PRIMARY_1_NAME=mcuboot_primary_1
    PM_MCUBOOT_PRIMARY_1_ID=1
    PM_mcuboot_primary_1_ID=PM_MCUBOOT_PRIMARY_1_ID
    PM_mcuboot_primary_1_IS_ENABLED=1
    PM_1_LABEL=MCUBOOT_PRIMARY_1
    PM_MCUBOOT_SECONDARY_OFFSET=0x0
    PM_MCUBOOT_SECONDARY_ADDRESS=0x0
    PM_MCUBOOT_SECONDARY_END_ADDRESS=0xf3000
    PM_MCUBOOT_SECONDARY_SIZE=0xf3000
    PM_MCUBOOT_SECONDARY_NAME=mcuboot_secondary
    PM_MCUBOOT_SECONDARY_ID=2
    PM_mcuboot_secondary_ID=PM_MCUBOOT_SECONDARY_ID
    PM_mcuboot_secondary_IS_ENABLED=1
    PM_2_LABEL=MCUBOOT_SECONDARY
    PM_MCUBOOT_PAD_OFFSET=0x8000
    PM_MCUBOOT_PAD_ADDRESS=0x8000
    PM_MCUBOOT_PAD_END_ADDRESS=0x8200
    PM_MCUBOOT_PAD_SIZE=0x200
    PM_MCUBOOT_PAD_NAME=mcuboot_pad
    PM_MCUBOOT_PAD_ID=3
    PM_mcuboot_pad_ID=PM_MCUBOOT_PAD_ID
    PM_mcuboot_pad_IS_ENABLED=1
    PM_3_LABEL=MCUBOOT_PAD
    PM_MCUBOOT_PRIMARY_OFFSET=0x8000
    PM_MCUBOOT_PRIMARY_ADDRESS=0x8000
    PM_MCUBOOT_PRIMARY_END_ADDRESS=0xfb000
    PM_MCUBOOT_PRIMARY_SIZE=0xf3000
    PM_MCUBOOT_PRIMARY_NAME=mcuboot_primary
    PM_MCUBOOT_PRIMARY_ID=4
    PM_mcuboot_primary_ID=PM_MCUBOOT_PRIMARY_ID
    PM_mcuboot_primary_IS_ENABLED=1
    PM_4_LABEL=MCUBOOT_PRIMARY
    PM_MCUBOOT_PRIMARY_SPAN="mcuboot_pad app"
    PM_APP_OFFSET=0x8200
    PM_APP_ADDRESS=0x8200
    PM_APP_END_ADDRESS=0xfb000
    PM_APP_SIZE=0xf2e00
    PM_APP_NAME=app
    PM_APP_ID=5
    PM_app_ID=PM_APP_ID
    PM_app_IS_ENABLED=1
    PM_5_LABEL=APP
    PM_MCUBOOT_PRIMARY_APP_OFFSET=0x8200
    PM_MCUBOOT_PRIMARY_APP_ADDRESS=0x8200
    PM_MCUBOOT_PRIMARY_APP_END_ADDRESS=0xfb000
    PM_MCUBOOT_PRIMARY_APP_SIZE=0xf2e00
    PM_MCUBOOT_PRIMARY_APP_NAME=mcuboot_primary_app
    PM_MCUBOOT_PRIMARY_APP_ID=6
    PM_mcuboot_primary_app_ID=PM_MCUBOOT_PRIMARY_APP_ID
    PM_mcuboot_primary_app_IS_ENABLED=1
    PM_6_LABEL=MCUBOOT_PRIMARY_APP
    PM_MCUBOOT_PRIMARY_APP_SPAN="app"
    PM_RAM_FLASH_OFFSET=0x40000
    PM_RAM_FLASH_ADDRESS=0x40000
    PM_RAM_FLASH_END_ADDRESS=0x40000
    PM_RAM_FLASH_SIZE=0x0
    PM_RAM_FLASH_NAME=ram_flash
    PM_RAM_FLASH_ID=7
    PM_ram_flash_ID=PM_RAM_FLASH_ID
    PM_ram_flash_IS_ENABLED=1
    PM_7_LABEL=RAM_FLASH
    PM_MCUBOOT_SECONDARY_1_OFFSET=0xf3000
    PM_MCUBOOT_SECONDARY_1_ADDRESS=0xf3000
    PM_MCUBOOT_SECONDARY_1_END_ADDRESS=0x133000
    PM_MCUBOOT_SECONDARY_1_SIZE=0x40000
    PM_MCUBOOT_SECONDARY_1_NAME=mcuboot_secondary_1
    PM_MCUBOOT_SECONDARY_1_ID=8
    PM_mcuboot_secondary_1_ID=PM_MCUBOOT_SECONDARY_1_ID
    PM_mcuboot_secondary_1_IS_ENABLED=1
    PM_8_LABEL=MCUBOOT_SECONDARY_1
    PM_FACTORY_DATA_OFFSET=0xfb000
    PM_FACTORY_DATA_ADDRESS=0xfb000
    PM_FACTORY_DATA_END_ADDRESS=0xfc000
    PM_FACTORY_DATA_SIZE=0x1000
    PM_FACTORY_DATA_NAME=factory_data
    PM_FACTORY_DATA_ID=9
    PM_factory_data_ID=PM_FACTORY_DATA_ID
    PM_factory_data_IS_ENABLED=1
    PM_9_LABEL=FACTORY_DATA
    PM_SETTINGS_STORAGE_OFFSET=0xfc000
    PM_SETTINGS_STORAGE_ADDRESS=0xfc000
    PM_SETTINGS_STORAGE_END_ADDRESS=0x100000
    PM_SETTINGS_STORAGE_SIZE=0x4000
    PM_SETTINGS_STORAGE_NAME=settings_storage
    PM_SETTINGS_STORAGE_ID=10
    PM_settings_storage_ID=PM_SETTINGS_STORAGE_ID
    PM_settings_storage_IS_ENABLED=1
    PM_10_LABEL=SETTINGS_STORAGE
    PM_EXTERNAL_FLASH_OFFSET=0x133000
    PM_EXTERNAL_FLASH_ADDRESS=0x133000
    PM_EXTERNAL_FLASH_END_ADDRESS=0x800000
    PM_EXTERNAL_FLASH_SIZE=0x6cd000
    PM_EXTERNAL_FLASH_NAME=external_flash
    PM_EXTERNAL_FLASH_ID=11
    PM_external_flash_ID=PM_EXTERNAL_FLASH_ID
    PM_external_flash_IS_ENABLED=1
    PM_11_LABEL=EXTERNAL_FLASH
    PM_OTP_OFFSET=0x0
    PM_OTP_ADDRESS=0xff8100
    PM_OTP_END_ADDRESS=0xff83fc
    PM_OTP_SIZE=0x2fc
    PM_OTP_NAME=otp
    PM_PCD_SRAM_OFFSET=0x0
    PM_PCD_SRAM_ADDRESS=0x20000000
    PM_PCD_SRAM_END_ADDRESS=0x20002000
    PM_PCD_SRAM_SIZE=0x2000
    PM_PCD_SRAM_NAME=pcd_sram
    PM_SRAM_PRIMARY_OFFSET=0x2000
    PM_SRAM_PRIMARY_ADDRESS=0x20002000
    PM_SRAM_PRIMARY_END_ADDRESS=0x20070000
    PM_SRAM_PRIMARY_SIZE=0x6e000
    PM_SRAM_PRIMARY_NAME=sram_primary
    PM_RPMSG_NRF53_SRAM_OFFSET=0x70000
    PM_RPMSG_NRF53_SRAM_ADDRESS=0x20070000
    PM_RPMSG_NRF53_SRAM_END_ADDRESS=0x20080000
    PM_RPMSG_NRF53_SRAM_SIZE=0x10000
    PM_RPMSG_NRF53_SRAM_NAME=rpmsg_nrf53_sram
    PM_NUM=12
    PM_ALL_BY_SIZE="ram_flash mcuboot_pad otp factory_data pcd_sram settings_storage mcuboot rpmsg_nrf53_sram mcuboot_primary_1 mcuboot_secondary_1 sram_primary app mcuboot_primary_app mcuboot_secondary mcuboot_primary external_flash"

  • Hi,

     Is there any detailed documentation on how to use the xip execution.

    You can have a look at this sample: https://github.com/nrfconnect/sdk-nrf/tree/main/tests/modules/mcuboot/direct_xip. The external flash test sample https://github.com/nrfconnect/sdk-nrf/tree/main/tests/modules/mcuboot/external_flash might help you allocate the flash areas. 

    In addition we have this documentation: for the nRF5340 with XiP, as well as some more information here on the infocenter, and this page from the MCUboot documentation  

    I didn't get any useful information in this project of machine learning.

    Could you link to which project you're referring to?

    In the matter lock demo, I have add my application code to it, it is show the follow error 

    It is as you state, your application is exceeding 1MB and you don't have room for it on the internal flash. You're using 99.97% of the available flash area for your application, which does not leave any room for image size + trailer. 

    The lock sample uses statically allocated RAM for DoorLock credentials so it might be worth tuning the parameters like LOCK_NUM_CREDENTIALS_PER_USER or LOCK_NUM_CREDENTIALS to save some memory.

    Kind regards,
    Andreas

Related