2020-01-30 11:27 AM
I have found a possible bug in DfuSe DFU File Manager. I extracted a HEX file from a DFU file, but the addresses in the resulting HEX file seem to be mangled. The HEX file looks like this:
:020000040800F2
:203000005071002069E9030895DE030897DE030899DE03089BDE03089DDE030800000000E8
:203020000000000000000000000000009FDE0308A1DE030800000000A3DE0308A5DE030864
[... lots of other data ...]
:20FFE000A1FD6B7ACDF8008002465946FFF73EFEFFF7A6FFB8B2801D484512DA14F8010BED
:200000003070BF1D14F8010B70706820B0709DF80600F0709AF80100307168207071B61D59
[... more data ...]
The first line sets the base address to 0x08000000. Subsequent lines specify data starting from 0x08003000. When it reaches 0x0800FFE0, the next 32 bytes of data are written to 0x08000000. I suspect that this is not intentional, but rather a simple address overflow bug.
I tried inserting an Extended Segment Address record between the two problematic lines:
:20FFE000A1FD6B7ACDF8008002465946FFF73EFEFFF7A6FFB8B2801D484512DA14F8010BED
:020000021000EC
:200000003070BF1D14F8010B70706820B0709DF80600F0709AF80100307168207071B61D59
I think it fixed the issue, the contents of the HEX file now match the contents of the BIN file generated from the DFU.