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

High Level DFU Questions

I have pretty much gotten my application fully ported and working on nRF52832. I am now looking at adding in DFU for OTA updates.

 Can you confirm my understanding, based on following statements:

  • nRF5_SDK_17.0.0_9d13099\examples\ble_peripheral\ble_app_buttonless_dfu is the example that shows how to advertise DFU service, which allows BLE app on phone / computer to load a new image after making connection
  • nRF5_SDK_17.0.0_9d13099\examples\dfu\secure_bootloader\pca10040_s132_ble is the example project for secure bootloader.
  • Buttonless-DFU example needs to be merged into my application
  • Secure_bootloader needs to be a separate project from my application

 Does that all appear correct?

 I am using SES; does it make sense to combine my application and secure bootloader under one solution, but two projects within SES?

Parents
  • Hello,

     

    nRF5_SDK_17.0.0_9d13099\examples\ble_peripheral\ble_app_buttonless_dfu is the example that shows how to advertise DFU service, which allows BLE app on phone / computer to load a new image after making connection

     Yes. To clarify. The buttonless DFU Service is used to activate DFU mode on the nRF. It does not contain the bootloader itself.

     

    nRF5_SDK_17.0.0_9d13099\examples\dfu\secure_bootloader\pca10040_s132_ble is the example project for secure bootloader.

     Correct.

     

    Buttonless-DFU example needs to be merged into my application

     That is correct. This mainly means that you need to add the buttonless service in services_init() as it is done in the ble_app_buttonless_dfu example. You also need to include ble_dfu_buttonless_async_svci_init(), as this includes instructions on how to save data for the bootloader, so that it knows when to enter DFU mode, or when to start the already present application (the bootloader will always run before the application on a reset, so it needs to know when to enter DFU mode and when not to do so). 

     

    Secure_bootloader needs to be a separate project from my application

     That is also correct. When the bootloader is present, the softdevice (or MBR, if you do not use any softdevice) will detect that there is a bootloader present (uploaded as a separate .hex file), and start the bootloader. 

    I hope this clarified some of your doubts. Let me know if anything was unclear.

    Best regards,

    Edvin

Reply
  • Hello,

     

    nRF5_SDK_17.0.0_9d13099\examples\ble_peripheral\ble_app_buttonless_dfu is the example that shows how to advertise DFU service, which allows BLE app on phone / computer to load a new image after making connection

     Yes. To clarify. The buttonless DFU Service is used to activate DFU mode on the nRF. It does not contain the bootloader itself.

     

    nRF5_SDK_17.0.0_9d13099\examples\dfu\secure_bootloader\pca10040_s132_ble is the example project for secure bootloader.

     Correct.

     

    Buttonless-DFU example needs to be merged into my application

     That is correct. This mainly means that you need to add the buttonless service in services_init() as it is done in the ble_app_buttonless_dfu example. You also need to include ble_dfu_buttonless_async_svci_init(), as this includes instructions on how to save data for the bootloader, so that it knows when to enter DFU mode, or when to start the already present application (the bootloader will always run before the application on a reset, so it needs to know when to enter DFU mode and when not to do so). 

     

    Secure_bootloader needs to be a separate project from my application

     That is also correct. When the bootloader is present, the softdevice (or MBR, if you do not use any softdevice) will detect that there is a bootloader present (uploaded as a separate .hex file), and start the bootloader. 

    I hope this clarified some of your doubts. Let me know if anything was unclear.

    Best regards,

    Edvin

Children
No Data
Related