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

DFU SDK15 CRC problem.

Hi!

nRF52832, SDK15, S132.

I try to use DFU. I already implemented same DFU on a SDK13. All works correct. 

When flash SD132 and merged firmware with bootloader_setting.hex, always DFU targ started in a air.

 0> <info> app: Inside main
 0> <debug> app: In nrf_bootloader_init
 0> <debug> nrf_dfu_settings: Calling nrf_dfu_settings_init()...
 0> <debug> nrf_dfu_flash: Initializing nrf_fstorage_nvmc backend.
 0> <debug> app: Enter nrf_bootloader_fw_activate
 0> <info> app: No firmware to activate.
 0> <debug> app: Enter nrf_dfu_app_is_valid
 0> <debug> app: Return false in CRC
 0> <debug> app: DFU mode because app is not valid.
 0> <info> nrf_bootloader_wdt: WDT is not enabled
 0> <debug> app: in weak nrf_dfu_init_user
 0> <info> app_timer: RTC: initialized.
 0> <info> app: Entering DFU mode.
 0> <debug> app: Initializing transports (found: 1)
 0> <debug> nrf_dfu_ble: Initializing BLE DFU transport
 0> <debug> nrf_dfu_ble: Setting up vector table: 0x00072000
 0> <debug> nrf_dfu_ble: Enabling SoftDevice.
 0> <debug> nrf_dfu_ble: Configuring BLE stack.
 0> <debug> nrf_dfu_ble: Enabling the BLE stack.
 0> <debug> nrf_dfu_ble: No advertising name found
 0> <debug> nrf_dfu_ble: Using default advertising name
 0> <debug> nrf_dfu_ble: Advertising...
 0> <debug> nrf_dfu_ble: BLE DFU transport initialized.
 0> <debug> nrf_dfu_flash: Initializing nrf_fstorage_sd backend.
 0> <debug> app: Enter main loop

Therefore, problem in a CRC that DFU can't calculate CRC of the app.

        if (crc != s_dfu_settings.bank_0.image_crc)
        {
            // CRC does not match with what is stored.
            NRF_LOG_DEBUG("Return false in CRC");
            return  false;
        }

If I changed to return true; , all work fine.

One more time, I use same merge code for get bootloader_setting.hex in the SDK13 and it wors fine.

I use example from

https://devzone.nordicsemi.com/b/blog/posts/getting-started-with-nordics-secure-dfu-bootloader

Should make any changes for calculate CRC in the SDK15?

Parents
  • Hi,

    Clearly the calculated CRC of the application does not match the CRC in the bootloader settings. Can you verify that you are using the exact same application .hex file when you generate the bootloader settings page using nrfutil as you actually program on the device? If the .hex file is not the same, then the CRC will not match.

  • I use .bat file

    nrfutil pkg generate --hw-version 52 --application-version 1 --application my_app.hex --sd-req 0x98 --key-file private.key app_dfu_package.zip
    nrfutil settings generate --family NRF52 --application my_app.hex --application-version 0 --bootloader-version 0 --bl-settings-version 1 bootloader_setting.hex
    mergehex --merge bootloader_setting.hex nrf52832_xxaa_s132.hex my_app.hex --output boot_my_app.hex
    pause

    When this .bat works, it use compiled bootloader file and generate boot_my_app.hex

    after that I flash via nrf go studio SD 6.0 and this boot_my_app.hex. Is it correct?

    Same I made with SDK13- all works fine.

Reply
  • I use .bat file

    nrfutil pkg generate --hw-version 52 --application-version 1 --application my_app.hex --sd-req 0x98 --key-file private.key app_dfu_package.zip
    nrfutil settings generate --family NRF52 --application my_app.hex --application-version 0 --bootloader-version 0 --bl-settings-version 1 bootloader_setting.hex
    mergehex --merge bootloader_setting.hex nrf52832_xxaa_s132.hex my_app.hex --output boot_my_app.hex
    pause

    When this .bat works, it use compiled bootloader file and generate boot_my_app.hex

    after that I flash via nrf go studio SD 6.0 and this boot_my_app.hex. Is it correct?

    Same I made with SDK13- all works fine.

Children
Related