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

USB Dfu cause hash not match issue.

hi,

I am working on nrf52833 dfu. right now I received an error 

raise NordicSemiException('Extended Error 0x{:02X}: {}'.format(resp[3], data))
pc_ble_driver_py.exceptions.NordicSemiException: Extended Error 0x0C: The hash of the received firmware image does not match the hash in the init packet.

it happened when 96% finished.

my dfu memory settings is :

FLASH (rx) : ORIGIN = 0x74000, LENGTH = 0xA000
RAM (rwx) : ORIGIN = 0x20002ae8, LENGTH = 0x1d518
uicr_bootloader_start_address (r) : ORIGIN = 0x10001014, LENGTH = 0x4
bootloader_settings_page (r) : ORIGIN = 0x0007F000, LENGTH = 0x1000
uicr_mbr_params_page (r) : ORIGIN = 0x10001018, LENGTH = 0x4
mbr_params_page (r) : ORIGIN = 0x0007E000, LENGTH = 0x1000

and my application is :

FLASH (rx) : ORIGIN = 0x27000, LENGTH = 0x4D000
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x20000

Parents
  • I have not change the bootloader code, the only thing I change is makefile and config file, due to there is no example for pca10100 usb with softdevice s140.and also I change the public_key
    I use nrfutil dfu usb-serial -pkg <.zip file> -p <serial port> -fc 0 to flash, and use nrfutil pkg generate --hw-version 52 --sd-req 0xCA --application-version 1 -- application <hex file> --key-file <priv.pen file> <output> to generate the package

  • So what bootloader project did you start with? I suggest you look into starting with the SDK17\examples\dfu\secure_bootloader\pca10056_usb,

    But you need to change the memory settings. 

    Does your bootloader and/or application support BLE as well as USB?

    Your dfu memory settings suggests that you have a softdevice, but your application does not.

    Let's assume you have a softdevice:

    You should change your application's ram to the same as your bootloader's to account for the softdevice.

    There are some other things you should change in the makefile as well. What does your preprocessor definitions and assembly flags look like? (CFLAGS and ASMFLAGS). Perhaps there are some of those that suggests you are using a different chip?

    Also, make sure to set the TARGETS := nrf52833_xxaa_s140.

    I assume you have checked, but are you 100% sure that you used the same key to generate the dfu image as you used in the bootloader? (that you are using the matching private key for the bootloader's public key).

  • yes, I use the same key. my application support BLE. so right now my application works if I flash it. since bootloader start, I can assum the bootloader is working too. the wired part is it stop at 96%.

Reply Children
No Data
Related