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

Issue with serial DFU on NRF52

Hi All,

I am trying to get the serial DFU working with nRF52832 development kit with SDK 13. I am able to get the bootloader flashed and have installed the nrfUtil tool. I followed the exact sequence of the steps mentioned here and got it right until the final step where I am trying to sent the application image to the device. The image transfer doesn't progress from 0% and it finally fails with the below logs: image description

I did some debugging and found that in the "on_packet_received" function, the device is getting an invalid opcode and so its responding with an error. I also tried disabling the HFC in device and the nrfutil tool as mentioned in this thread with no success. Finally I also tried changing the UART Tx/Rx pins to to P[0].3 and P[0].4 with no improvements.

Please let me know if you have some pointers which would help me in debugging this.

Parents
  • So now I did a "erase all" in nRFGO, programmed the SD from it (nRFGo) and then did a full flash erase in keil and programmed the bootloader (from keil) to check the behavior. Surprisingly that too worked. In the keil debugger the address range set for the flash is 0x0 - 0x7FFFF which is the entire flash memory range of nrf52. So clearly there is something which the keil is not able to do in a full flash erase but the nrfGo can do. Because if the keil did a full flash erase like the nrfGo tool does the "erase all" then I wouldn't have got that working. In other words there is something which the nrfGo tool writes which is required by the bootloader and can't be deleted by an IDE like keil even if you try to erase the entire flash. Is there some kind of vector table which is required an inaccessible to keil? Sorry for the long comments. Let me know if you need more clarification.

Reply
  • So now I did a "erase all" in nRFGO, programmed the SD from it (nRFGo) and then did a full flash erase in keil and programmed the bootloader (from keil) to check the behavior. Surprisingly that too worked. In the keil debugger the address range set for the flash is 0x0 - 0x7FFFF which is the entire flash memory range of nrf52. So clearly there is something which the keil is not able to do in a full flash erase but the nrfGo can do. Because if the keil did a full flash erase like the nrfGo tool does the "erase all" then I wouldn't have got that working. In other words there is something which the nrfGo tool writes which is required by the bootloader and can't be deleted by an IDE like keil even if you try to erase the entire flash. Is there some kind of vector table which is required an inaccessible to keil? Sorry for the long comments. Let me know if you need more clarification.

Children
No Data
Related