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

Modify bootloader address

Hi Sir,

As check below link, we know how to re-write the bootloader address.

https://devzone.nordicsemi.com/f/nordic-q-a/26300/how-to-use-nrfjprog-to-write-uicr-bootloaderaddr 

1. But could we re-write the bootloader address in Application layer?

2. If we program two application image in the flash (example,like one in 0x26000, another in 0x46000)

   Could we jump to difference application address from bootloader?

Thank you.

BRs, Han

Parents
  • Hello,

    When you compile an application and generate a packet using nrfutil the start address of the application is not stored in that packet. It is the bootloader that deals with placing the application in the correct place.

    What SDK version do you use?

    Best regards,

    Edvin

  • Hi Edvin,

    The project use SDK 15.0.0

    BRs, Han

  • Hello,

    Sorry. I thought forced dual banking was included in the later SDK versions, but it seems like it isn't.

    So the answer is that currently, we don't support this. It is probably possible to implement this by adjusting some registers from the application, such as storing the address of where to start next in the UICR registers, and use this register in the bootloader. 

    The place where the bootloader starts the application is:

    main() -> nrf_bootloader_init -> nrf_bootloader_app_start -> nrf_bootloader_app_start_final(start_addr);

    So if you read the start_addr from the UICR, it may be possible. You would also have to change the bootloader to store the applications in the places that you want to store them when performing the DFU.

    Best regards,

    Edvin

Reply
  • Hello,

    Sorry. I thought forced dual banking was included in the later SDK versions, but it seems like it isn't.

    So the answer is that currently, we don't support this. It is probably possible to implement this by adjusting some registers from the application, such as storing the address of where to start next in the UICR registers, and use this register in the bootloader. 

    The place where the bootloader starts the application is:

    main() -> nrf_bootloader_init -> nrf_bootloader_app_start -> nrf_bootloader_app_start_final(start_addr);

    So if you read the start_addr from the UICR, it may be possible. You would also have to change the bootloader to store the applications in the places that you want to store them when performing the DFU.

    Best regards,

    Edvin

Children
Related