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

problem about DFU

Hello I am using nrf51822 .The function of DFU has worked well,but some weird problems puzzle me. 1、After DFU is successful,what is nrf51822's working state? Does it reset?From bootloader?Or directly enter into the BANK1 application program? the problem of my device is that the ADC value changes (less than the normal value) after DFU.If I reset the nrf51822(or wake from the deepsleep state),the ADC value can be right.would you tell me the reason about that or the nrf51822's working process after DFU. 2、image description If there is some error,where does the program pointer will go. I do the debugging with the jlink, and find that after DFU finishes the program runs to this function's( void services_init(void)) last statement and the program pointer's position is unknown.image description Look forward your reply,thank you . Best wishes!

Parents
  • Hi Jane, sorry for the delayed response. If you take a look at the bootloader_secure example in SDK 12.3 for example (SDK12.3/examples/dfu/bootloader_secure), you notice that in the main() function of the main.c file that the function nrf_bootloader_app_start(MAIN_APPLICATION_START_ADDR) is called. This is verified by taking a look at this link: "If there is a valid application, the DFU bootloader starts the application, unless it is explicitly put into DFU mode (for example, by pressing a button)." Normally it is the DFU bootloader that initiates the DFU process, not the application itself (see blog post). It is possible to jump from the application to the dfu bootloader (see link), so I guess you could initiate the DFU again if you want.

Reply
  • Hi Jane, sorry for the delayed response. If you take a look at the bootloader_secure example in SDK 12.3 for example (SDK12.3/examples/dfu/bootloader_secure), you notice that in the main() function of the main.c file that the function nrf_bootloader_app_start(MAIN_APPLICATION_START_ADDR) is called. This is verified by taking a look at this link: "If there is a valid application, the DFU bootloader starts the application, unless it is explicitly put into DFU mode (for example, by pressing a button)." Normally it is the DFU bootloader that initiates the DFU process, not the application itself (see blog post). It is possible to jump from the application to the dfu bootloader (see link), so I guess you could initiate the DFU again if you want.

Children
No Data
Related