Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs
This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Can't jump to a custom app location using nrf_bootloader_app_start with SDK V15

With SDK V14.2, I was able to specify internal flash address argument into nrf_bootloader_app_start(uint32_t start_addr) and was able to boot into the address. With SDK V15, the argument option is removed and the jump address is fixed to MBR_SIZE within the nrf_bootloader_app_start(void) function. I tried modifying the start address within nrf_bootloader_app_start but I was not able to boot into the custom app location.

Parents
  • Hello

    i have a question to the appstart.

    I have the application "secure bootloader ble s140" and there is the function "nrf_bootloader_app_start();" This should call my application, right?

    This application must be at which address?

    I have also the s140 flashed which is there from 0x00001000 - 0x00025E7C and the bl app from 0x000F8000 - 0x000FDA94.

    If i define the flash_start 0x00026000 which is behind the sd it could be called from the bl app, right and how ?

    I just quoted this because its confusing that it's said that anyway the app will start at 0x1000 but in my case after i flashed the sd with nrfgo studio this is at 0x1000 ?!

    The DFU we provide only allows placing apps 1) at 0x1000 (after the 'MBR'), or 2) after the SoftDevice if there is a SoftDevice present. The start address in both cases can be 0x1000, so we hard-coded it.

    Thanks in advance.

    twittich

Reply
  • Hello

    i have a question to the appstart.

    I have the application "secure bootloader ble s140" and there is the function "nrf_bootloader_app_start();" This should call my application, right?

    This application must be at which address?

    I have also the s140 flashed which is there from 0x00001000 - 0x00025E7C and the bl app from 0x000F8000 - 0x000FDA94.

    If i define the flash_start 0x00026000 which is behind the sd it could be called from the bl app, right and how ?

    I just quoted this because its confusing that it's said that anyway the app will start at 0x1000 but in my case after i flashed the sd with nrfgo studio this is at 0x1000 ?!

    The DFU we provide only allows placing apps 1) at 0x1000 (after the 'MBR'), or 2) after the SoftDevice if there is a SoftDevice present. The start address in both cases can be 0x1000, so we hard-coded it.

    Thanks in advance.

    twittich

Children
  • The reason the start address is 0x1000 in both cases is that, when the SoftDevice is present, the BL will boot the SoftDevice instead of the app. The SoftDevice will in turn boot the app, if the app is located right after the SoftDevice (rounded up to the nearest flash page boundary). In all cases, the bootloader boots whatever is located at 0x1000.

    So, in your case when you call nrf_bootloader_app_start(), it will boot the SD, and the SD will boot the app at 0x26000.

  • Just to complement the thematic:

    First the mbr will boot and jump to the sd which starts at 0x1000 and the sd will jumb after its end to the next flash page in case of s140 it will be 0x26000.

    I have the application "secure bootloader ble s140" and there is the function "nrf_bootloader_app_start();" This should call my application, right?

    And i explained it a little vaguely.

    My plan was/is that the app "secure ble" will jump to another application. The problem to jump between different apps is already solved.

    I'm still hanging on the boot into ble secure...

    The procedure should be as follows.

    Flash the sd which includes the mbr which jumps to the sd and after the sd i want to start the ble app, but this is standard at

    bl app from 0x000F8000 - 0x000FDA94.

    i think i have to make a small app which only jumps there or change the flash start address of the ble app, but for this the support said to read first some stuff about memory layout and the ble app and so on what i'm doing in parallel.

Related