I am trying to implement DFU to my project. I have done all the steps to generate packages, private and public keys etc. My program now starts at dfu and I can upload the package to nrf52 but it then get stuck to (Jump to 0x0029000).
Can anyone help me target setting on keil? Thanks
Could you try to test updating an example in our SDK (you need to configure it so it works with S332) instead of your application, just to make sure that DFU works properly ? You can also start with testing with a simple application to blink an LED.
I assume your app works if you don't flash the bootloader ?
I got successful in running dfu on s132 but struggling on s332. I think its IROM1 and IRAM1 settings for dfu bootloader. Currently settings are
IROM1: 0x75000 and size: 0xB000
IRAM1: 0x20002E00 and size: 0xD370
I am working on nrf52832 512k chip.
Is there any way to find out the correct IRAM1?
I don't think it's the RAM/ROM configuration issue. If you have wrong configuration, the softdevice will assert and the bootloader would crash even before it starts advertising.
But note that the SUM of IRAM1 location + size must fit inside 0x10000 since it's the physical size of RAM. You should not have something above 0x10000.
Could you follow this guide and check at which step it doesn't work ?
Note that if you change the optimization level of the bootloader to 0, you can step into the code of the bootloader and debug.
I have just found out that GPREGRET is 0. Should it be 0xB1? What can cause this? Thanks
How do you start DFU ? If you flash only the softdevice and the bootloader and no application, you don't have to worry about GPREGRET.
That register is only needed when you wan to do buttonless DFU (switch to DFU from the application)