8 years, 4 months ago.

BLE FOTA triggered from app without enabled softdevice?

I am interested in using FOTA but would like to trigger bootloader from app that does not have a running Softdevice. I tried using the following to set the GPRERET register then trigger system reset but does not work. Any ideas?

NRF_POWER->GPREGRET = BOOTLOADER_DFU_START; BOOTLOADER_DFU_START= 0xB1; NVIC_SystemReset();

A simple example would be an app that flashes an LED and a button press triggers a jump to DFU bootloader. The button press would not be at start up but rather anytime. This app but not be running anything from BLE_API and would not use ble.init().

This assumes the bootloader code would do the initial BLE stack init and begin advertising.

#include "mbed.h"
 
DigitalIn enable_DFU(p5);
DigitalOut led(LED1);
 
int main() {
    while(1) {
        if(enable_DFU) 
        {
            // jump to DFU / FOTA
        }
        wait(0.25);
         led = !led;
    }
}

Question relating to:

Bluetooth Low Energy (a.k.a Bluetooth LE, BTLE, Bluetooth Smart)

Please explain what you mean by: "would like to trigger bootloader from app that does not use BLE/Softdevice". Without the softdevice none of this would work. Do you mean without BLE_API?

posted by Rohit Grover 05 Nov 2015

I updated my question.

posted by Joel Anderson 05 Nov 2015
Be the first to answer this question.