This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Flashing bootloader and application via J-Link

Hello. I want to make flashing of devices for production faster. So I want to write application together with bootloader via J-Link simultaneously and not via OTA DFU. I'm using S110 v6 and dual bank BLE DFU from SDK 5.1 example. I know that after flashing bootloader and application I just need to compute CRC16 of the DFU bank 0 and write this value to the bootloader settings in the flash, but maybe someone already has a solution to this problem?

  • I also have the exact same question - does anyone have a solution to this?

    Many thanks.

  • I believe you can accomplish what you want by changing the following line in bootloader_util_arm.c from:

    uint8_t __attribute__((section (".bootloader_settings_sect"))) m_boot_settings[CODE_PAGE_SIZE] __attribute__((used));
    

    To:

    uint8_t  m_boot_settings[CODE_PAGE_SIZE] __attribute__((at(BOOTLOADER_SETTINGS_ADDRESS))) __attribute__((used)) = {BANK_VALID_APP};
    

    Then you can program your merged app and bootloader with nrfjprog without it thinking the application is not valid.

  • Exactly! I had overlooked this. Thank you very much.

  • Thanks also.

    So flashing can then be achieved with: (?) nrfjprog --program <bootloader.hex> <app.hex>

    Is the above code change all that is required? Or do we have to still write the CRC value to the bootloader settings as well?

  • We don't have to write the CRC because bootloader_app_is_valid function first checks if the application in CODE region 1 is flagged as valid during update and if it's flagged as valid it then checks whether CRC matches but if CRC = 0 it skips this check and assume that the application is valid. And just flash it all like this: nrfjprog.exe --eraseall --programs s110_nrf51822_6.0.0_softdevice.hex --program application.hex nRF51822_BLE_DFU.hex --verify --reset

Related