Partition Manager configuration

I understand from many posts that the DTS file is ignored when in multi-image  (mcuboot enabled) I need to change the partitions to reduce the bootloader from 48K to 32K & increase the 

partition slots. But I can't work out how to do this. There's talk of the partition manager but I don't know where this is in VS code or how to use it.
Also I noticed that when I enable mcuboot from sysbuild.conf it doesn't copy the bootloader into the work space / folder, it just uses it directly from the Nordic tools library, so any changes to prj.conf etc will change the source code & not a copy.
Am I generating the bootloader incorrectly?
This is in sysbuild.conf local to my project
SB_CONFIG_BOOTLOADER_MCUBOOT=y
& this is in prj.conf of my main application local to my project 
CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU=y
Parents
  • Hi,

    There's talk of the partition manager but I don't know where this is in VS code or how to use it.

    Just a quick comment that may clarify this: The partition manager is included by default when you add MCUboot and/or are doing anything multi-image. By default it is set up with dynamic partitioning (i.e the build system with partition manager handles allocationing of partitions based on your configurations), and you can modify it to use static partitioning where you yourself set the partition sizes through a pm_static.yml instead of through configurations.

    Also I noticed that when I enable mcuboot from sysbuild.conf it doesn't copy the bootloader into the work space / folder, it just uses it directly from the Nordic tools library, so any changes to prj.conf etc will change the source code & not a copy.

    Whenever you add mcuboot through sysbuild, the build system will use the default mcuboot that is within <sdk>/bootloaders folder. Whatever you apply to your projects mcuboot/prj.conf will only have any effect on this specific project and not the bootloader in the SDK.

    For instance in this sample I have some project-specifc configurations within sysbuild/mcuboot.conf that only applies to this project and doesn't modify the source mcuboot configuration.

     

    However if you end up modifying anything directly within <sdk>/bootloader/mcuboot, where <sdk> is the NCS installation you have present, this will affect every build that you do in any project that is using this NCS version.

    Am I generating the bootloader incorrectly?

    Maybe, but based on the configurations you mention it looks right. You enable mcuboot through the sysbuild configuration you mention in your local project and you can have something like the ncs_sample configuration for BLE OTA DFU in the prj.conf. This is better explained in the third link in the bullet list below

    I recommend both the fundamental and intermediate courses at devacademy for all levels of expertise in embedded systems, but here's 3 selected topics that may help shed some light on the uncertainties you present:

    Let me know if this answers your questions and feel free to follow up if you have any uncertainties

    Kind regards,
    Andreas

Reply
  • Hi,

    There's talk of the partition manager but I don't know where this is in VS code or how to use it.

    Just a quick comment that may clarify this: The partition manager is included by default when you add MCUboot and/or are doing anything multi-image. By default it is set up with dynamic partitioning (i.e the build system with partition manager handles allocationing of partitions based on your configurations), and you can modify it to use static partitioning where you yourself set the partition sizes through a pm_static.yml instead of through configurations.

    Also I noticed that when I enable mcuboot from sysbuild.conf it doesn't copy the bootloader into the work space / folder, it just uses it directly from the Nordic tools library, so any changes to prj.conf etc will change the source code & not a copy.

    Whenever you add mcuboot through sysbuild, the build system will use the default mcuboot that is within <sdk>/bootloaders folder. Whatever you apply to your projects mcuboot/prj.conf will only have any effect on this specific project and not the bootloader in the SDK.

    For instance in this sample I have some project-specifc configurations within sysbuild/mcuboot.conf that only applies to this project and doesn't modify the source mcuboot configuration.

     

    However if you end up modifying anything directly within <sdk>/bootloader/mcuboot, where <sdk> is the NCS installation you have present, this will affect every build that you do in any project that is using this NCS version.

    Am I generating the bootloader incorrectly?

    Maybe, but based on the configurations you mention it looks right. You enable mcuboot through the sysbuild configuration you mention in your local project and you can have something like the ncs_sample configuration for BLE OTA DFU in the prj.conf. This is better explained in the third link in the bullet list below

    I recommend both the fundamental and intermediate courses at devacademy for all levels of expertise in embedded systems, but here's 3 selected topics that may help shed some light on the uncertainties you present:

    Let me know if this answers your questions and feel free to follow up if you have any uncertainties

    Kind regards,
    Andreas

Children
No Data
Related