DFU Verification Failure from Custom App

I am writing my own DFU app for the nRF52832. I am using C# and .NET with Visual Studio.

For reasons I don't want to get into I can't use the Nordic SDK library with this project.

In a previous project I was able to write my own DFU process. I have copied that into this new project.

I have a .zip update file that contains the bootloader and app. This .zip file works fine when I use the nRF connect app and do the DFU process.

If I tried to use that same .zip file with my process it gets a EXT_ERROR_VERIFICATION_FAILED at the final step when I do the Execute operation.

I start by doing the Init download of 141 bytes. The checksum matches.

I then download the 107K binary data file in 4096 byte chunks. All chunk checksums match during the download.

At the end when I have transferred all the firmware I do the execute operation and the response is the extended error EXT_ERROR_VERIFICATION_FAILED.

Please give me some ideas about why this would happen.

Our bootloader and application are using SDK 15.3.0.

Parents
  • We figured out how to fit the bootloader in the flash. We moved it down in flash by 0x1000 and then increased the size by the same.

    Now when we debug the bootloader it is stopping with an error on Stopped by Vector Catch. It is basically hard faulting.

    We are erasing the app so it should in theory stay in the bootloader. We want to be able to debug the bootloader.

    What are we doing wrong?

    Nevermind. We changed from being just 0x1000 larger to being 64k instead of 32k. Turns out it must be on some kind of even boundary or something.

    Now we are trying to figure out why the logging isn't showing up.

Reply
  • We figured out how to fit the bootloader in the flash. We moved it down in flash by 0x1000 and then increased the size by the same.

    Now when we debug the bootloader it is stopping with an error on Stopped by Vector Catch. It is basically hard faulting.

    We are erasing the app so it should in theory stay in the bootloader. We want to be able to debug the bootloader.

    What are we doing wrong?

    Nevermind. We changed from being just 0x1000 larger to being 64k instead of 32k. Turns out it must be on some kind of even boundary or something.

    Now we are trying to figure out why the logging isn't showing up.

Children
No Data
Related