From the errors, it seems that dfu-util is rejecting the
file-extension.
The NRF imgtool is actually generating a zip containing three
files: mainfest.json, hello.dat, hello.bin.
I have embedded this tool into cmake with a custom command, used
with a nRF52832-board:
On 10. mai 2018 23:52, Nathan Miller
wrote:
Hi all,
I'm attempting to run the Zephyr USB DFU sample on an nRF52840
(pca10056 dev board) and having a bit of trouble getting it to
work. I've compiled mcuboot and can load it on the board without
a problem. I compiled it with no configuration changes except
setting the board to nrf52840_pca10056 (export
ZEPHYR_BOARD=nrf52840_pca10056 before running cmake). I
then compiled the DFU sample (samples/subsys/usb/dfu), targeting
the same board. I signed the image using the following command:
~/mcuboot/scripts/imgtool.py sign --key
~/mcuboot/root-rsa-2048.pem --header-size 0x200 --align 8
--version 1.2 --included-header ./zephyr/zephyr.hex
signed-zephyr.hex
and loaded it on the board using nrfjprog. I used the hex file
for the first image so as to not overwrite mcuboot, which seems
to work as in the console output from the board I see this:
[MCUBOOT]
[INF] main: Starting bootloader
[MCUBOOT]
[INF] boot_status_source: Image 0: magic=unset,
copy_done=0xff, image_ok=0xff
[MCUBOOT]
[INF] boot_status_source: Scratch: magic=unset, copy_done=0x0,
image_ok=0xff
[MCUBOOT]
[INF] boot_status_source: Boot source: slot 0
[MCUBOOT]
[INF] boot_swap_type: Swap type: none
[MCUBOOT]
[INF] main: Bootloader chainload address offset: 0xc000
[MCUBOOT]
[INF] main: Jumping to the first image slot
*****
Booting Zephyr OS v1.11.0-952-gdc97fc2a6 *****
after this, I tried compiling the hello world application and
signing the bin file using this command:
~/mcuboot/scripts/imgtool.py
sign --key ~/mcuboot/root-rsa-2048.pem --header-size 0x200
--align 8 --version 1.2 --included-header ./zephyr/zephyr.bin
signed-hello.bin
and loading it using dfu-util:
sudo
dfu-util --alt 1 --download signed-hello.bin
This unfortunately doesn't work. The error message seems
intermittent, as sometimes I see
dfu-util:
Invalid DFU suffix signature
dfu-util:
A valid DFU suffix will be required in a future dfu-util
release!!!
Opening
DFU capable USB device...
ID
2fe3:0100
Run-time
device DFU version 0110
Claiming
USB DFU Interface...
Setting
Alternate Setting #1 ...
dfu-util:
Cannot set alternate interface
and sometimes instead I see
dfu-util:
Invalid DFU suffix signature
dfu-util:
A valid DFU suffix will be required in a future dfu-util
release!!!
Opening
DFU capable USB device...
ID
2fe3:0100
Run-time
device DFU version 0110
Claiming
USB DFU Runtime Interface...
Determining
device status: state = appIDLE, status = 0
Device
really in Runtime Mode, send DFU detach request...
Resetting
USB...
Opening
DFU USB Device...
Claiming
USB DFU Interface...
Setting
Alternate Setting #1 ...
Determining
device status: state = dfuIDLE, status = 0
dfuIDLE,
continuing
DFU mode
device DFU version 0110
Device
returned transfer size 64
Copying
data from PC to DFU device
Download
[ ] 0% 0 bytesdfu-util:
Error during download get_status
Regardless of which error I see, it never applies the new
firmware. In the second case, I see this on the device console:
[MCUBOOT]
[INF] main: Starting bootloader
[MCUBOOT]
[INF] boot_status_source: Image 0: magic=unset,
copy_done=0xff, image_ok=0xff
[MCUBOOT]
[INF] boot_status_source: Scratch: magic=unset, copy_done=0x0,
image_ok=0xff
[MCUBOOT]
[INF] boot_status_source: Boot source: slot 0
[MCUBOOT]
[INF] boot_swap_type: Swap type: none
[MCUBOOT]
[INF] main: Bootloader chainload address offset: 0xc000
[MCUBOOT]
[INF] main: Jumping to the first image slot
*****
Booting Zephyr OS v1.11.0-952-gdc97fc2a6 *****
[usb/dc]
[ERR] handle_ctrl_ep_data_state_events: invalid event 0 in
data state for EP 0
Am I doing something wrong or missing a step? I'm attempting to
follow the instructions on these pages: http://docs.zephyrproject.org/samples/subsys/usb/dfu/README.html
and https://mcuboot.com/mcuboot/readme-zephyr.html
I'm a bit stuck at this point and don't exactly know how to
proceed.