Dear Nordic Team,
Thanks for support.
Last two weeks i am try to BLE DFU example code. But its not work. Please Check this Thread also devzone.nordicsemi.com/.../
Anybody know this issue please support.
Dear Nordic Team,
Thanks for support.
Last two weeks i am try to BLE DFU example code. But its not work. Please Check this Thread also devzone.nordicsemi.com/.../
Anybody know this issue please support.
Hello Muragan. I have the same problem and still no solution from Nordic. I tried the example without testing bootloader_app_is_valid(DFU_BANK_0_REGION_START) since it always indicates applications is not valid. However the application starts.
The DFU code does work. We've successfully compiled and used it on both 51822 and 52832 based designs. There are important aspects to remember:
The register for app_is_valid is set by the DFU code. So, once you have a soft device and DFU code loaded on an nRF solution you must successfully load the application using the BLE DFU targ interface. Once the application successfully loads then the DFU code will set the register indicating an application is installed.
If instead you just use segger and put an application in flash it will always go to DFU targ and not run the application because the register has not been set.
The other important thing to remember is that once you have DFU code on your product your application code needs to be modified so that you can take it back into DFU mode for OTA updates. Otherwise you will never be able to load app code unless you use wires and segger.
Thanks for reply. softdevice and bootloader only load through nrfgo studio. Application code always try to load ble . First time application code successfully updated, second time is not updated. Show error dfu service not found . I am using dfu sample code.
There is no need to upload application using DFU (BLE or Serial), you can load application by writing 0x01 to 0x0003fc00. The main steps using nrfjprog are: eraseall, program sd, program bl, program app, write 1 to 0x0003fc00 and run. You can go back to dfu from application just by doing NRF_POWER->GPREGRET = 0xA0; // 0xA0 or other value, as long as you read it in dfu NVIC_SystemReset(); After this you can use segger to change your application by segger (J-Link)
Murugan, not all the sample applications have DFU support in them. Sounds like you are successfully loading the application once through DFU but then you cannot get back to DFU to load/update, correct? If so, you will need to modify the application code to support DFU.
There are at least two different flavors of this on the Nordic site. The simplest version Nordic has is that the user presses a button in the app code which triggers reset and the DFU looks for the button being pressed to know to go into DFU mode vs. running the app code.
The second involves what Miguel wrote about where you write a register in the app code, trigger reset and look for the register in the DFU code to know whether to run as DFU or to load app.
Which DFU application did you use and from which version of the sdk?