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

how to Switch between over-the-air and uart bootloader mode?

Hi, How to integrate both over-the-air and uart bootloader application for an device? We have a custom board with nrf51822 chipset, and we need to implement the firmware update process, which can support both over-the-air and usb to uart type firmware update. Since we not yet tested the uart bootloader application, we dont have clear idea on it (like, how to make it enter into the bootloader mode). Can anyone suggest us how to handle this?

our requirement as follows, If the device is connected through the usb, and if the user want to update the firmware, the device should enter into dfu_dual_bank_hci (uart) bootloader mode, and do the firmware update.

And if the device is connected through ble, user should make it enter into the dfu_dual_bank_ble (over the air) bootloader mode by writing some value through the special characteristics created for it, and should do the firmware update.

Regards, Balaji

Parents
  • Thanks for the reply Hung Bui, I modified the code memory size and start address to 0x5400 and 0x3C000 respectively, and also modified the code to avoid "multiply defined" error. Now the error facing is ._build\bootloader.axf: Error: L6985E: Unable to automatically place AT section bootloader_util_arm.o(.ARM.__AT_0x0003FC00) with required base address 0x0003fc00. Please manually place in the scatter file using the --no_autoat option. What does it mean, and to overcome this? Looking forward for your example code.

    After setting the Start address = 0x3C400, memory size = 0x5000, and the bootloader setting address = 0x3C000, i can able to build and flash the hexfile with both the bootloaders. When i enable the ble-bootloader manually, i can able to do the over the air firmware update (followed readme file procedure), but the application i have flashed is not at all working (not giving advertisement), but without the bootloader application it is working fine. I have attached the command window log file please refer it and give me your suggestion.

    Regards, Balaji

    FirmwareUpdateWindow.png

Reply
  • Thanks for the reply Hung Bui, I modified the code memory size and start address to 0x5400 and 0x3C000 respectively, and also modified the code to avoid "multiply defined" error. Now the error facing is ._build\bootloader.axf: Error: L6985E: Unable to automatically place AT section bootloader_util_arm.o(.ARM.__AT_0x0003FC00) with required base address 0x0003fc00. Please manually place in the scatter file using the --no_autoat option. What does it mean, and to overcome this? Looking forward for your example code.

    After setting the Start address = 0x3C400, memory size = 0x5000, and the bootloader setting address = 0x3C000, i can able to build and flash the hexfile with both the bootloaders. When i enable the ble-bootloader manually, i can able to do the over the air firmware update (followed readme file procedure), but the application i have flashed is not at all working (not giving advertisement), but without the bootloader application it is working fine. I have attached the command window log file please refer it and give me your suggestion.

    Regards, Balaji

    FirmwareUpdateWindow.png

Children
No Data
Related