This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Migrating from SDK9 to SDK12

Hi,

We want to upgrade our product from SDK9 to SDK12. I already check the below questions.

devzone.nordicsemi.com/.../

devzone.nordicsemi.com/.../

devzone.nordicsemi.com/.../

I think maybe we can upgrade the SDK9 bootloader allocated size from 16K to 24K and then upgrade to SDK12 bootloader+SD.

But when I try to upgrade the SDK9 bootloader allocated size from 16K to 24K. Follow the question 68698, I modify the dfu_gcc_nrf51.ld and dfu_types.h

at dfu_gcc_nrf51.ld:

from FLASH (rx) : ORIGIN = 0x3C000, LENGTH = 0x3C00

to FLASH (rx) : ORIGIN = 0x39000, LENGTH = 0x6C00

at dfu_types.h:

from #define BOOTLOADER_REGION_START 0x0003C000

to #define BOOTLOADER_REGION_START 0x00039000

If I use the nRFgo Studio to update the bootloader(24K) and SD, the bootloader(24K) can boot up success.

But When I use the bootloader(16K) upgrade to bootloader(24K) by DFU, after the DFU the bootloader(24K) can't boot up success.

I have check the 0x10001014, I think the NRF_UICR_BOOT_START_ADDRESS not correct to make the bootloader(24K) which upgrade from bootloader(16K) DFU can't boot up success.

//at the bootloader(16K)

nrfjprog --memrd 0x10001000 --n 32

0x10001000: FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF |................|

0x10001010: FFFFFFFF 0003C000 FFFFFFFF FFFFFFFF |................|

//at the bootloader(24K)

nrfjprog --memrd 0x10001000 --n 32

0x10001000: FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF |................|

0x10001010: FFFFFFFF 00039000 FFFFFFFF FFFFFFFF |................|

So my question are:

  1. How do I upgrade the bootloader to make the allocated size become 24K by DFU?

  2. We want to upgrade from SDK9 to SDK12 by DFU. This procedure upgrade the SDK9 bootloader allocated size from 16K to 24K and then upgrade to SDK12 bootloader+SD. Is it possible? Or Can you provide the correct procedure to upgrade from SDK9 to SDK12 by DFU?

Please give us your suggestions. Thanks.

Parents
  • In order to update the bootloader from SDK v11.0.0 or older (now referred to as Legacy) to the bootloader in SDK v12.x.0 ( referred to as Secure) you have to ensure that the start address of the legacy bootloader that is flashed to your devices is identical to that of the new Secure Bootloader as this cannot be changed at runtime on the nRF51x22 without erasing the entire chip and reflashing it.

    The default start address of the legacy bootloader is 0x0003C000, while the default start address of the Secure bootloader is 0x3AC00, i.e. the legacy bootloader start address must be set to 0x3AC00 so that there is room for the new Secure bootloader.

    Thus, if the start address of the legacy bootloader that is flashed to the devices that you want to update set to 0x3C000, then it is not possible to update from the legacy bootloader to the secure bootloader beacuse there is not enough room for the new bootloader.

    Best regards

    Bjørn

  • Hi Johnny, I set the memory settings in the dfu_gcc_nrf51.ld to

    FLASH (rx) : ORIGIN = 0x39000, LENGTH = 0x6C00
    

    and set BOOTLOADER_REGION_START to 0x39000. I flashed the generated hex file to a nRF51 DK along with the S130 v2.0.1 SoftDevice and execution is passed to the bootloader without any issues.

Reply Children
No Data
Related