KBA_BT_0701: Upgrading from factory firmware (v2.0.0) and from Bluetooth SDK v2.1.x with UART DFU type legacy bootloader
12/355/2017 | 12:22 PM
Many Silicon Labs Bluetooth Low Energy devices are shipped with Bluetooth stack v2.0.0. This image includes the NCP application and the UART DFU type legacy bootloader v3.
However, if there is absolutely no way to connect to your device’s programming pins, and you can only access the device via UART using a host controller, bootloader v3 can still be used as a last solution.
When you use bootloader v3 for upgrade, the images to be uploaded must have a length multiple of 4 bytes! The same applies for legacy bootloader v4 that is part of Bluetooth SDK v2.1.x (as described in https://www.silabs.com/community/wireless/bluetooth/knowledge-base.entry.html/2016/12/06/bootloader_changesi-jsoH). That is, if you use the factory firmware, or if you flashed your device with Bluetooth SDK v2.0.x or v2.1.x, you have to be careful with the uploaded images. Bootloader v5 (introduced in Bluetooth SDK 2.3.0) can handle also images that are not word aligned.
If you use GCC compiler to build the upgrade image, the 4-byte alignment is not always satisfied, hence it can happen, that the bootloader returns with CRC error, even if you uploaded a valid image. To ensure that the image has a correct length you have to modify the linker file in your project before build.
Find the appropriate .ld file in your project and modify it like this:
Now you can build your project, and generate the .ebl files by running create_bl_files.bat in your project. You will need full.ebl for upgrading your device with a new SW.
Bluetooth Low Energy
Knowledge Base Articles
Excellent! However is there any roadmap available on what Devices will be shipped with what FIrmware ? For instance I am looking on BGM111A256v2. Will this device be shipped with Bootloader v3 in the future ?
0
Hi!
On these question please reach out to the sales team:
Hello, is it possible to update sdk 2.0.2 to sdk 2.7 from uart DFU ?
How can I create EBL file ? I'm only able to have GBL (with create_bl_files.bat) which is not compatible for DFU over UART in sdk 2.0.2 right ?
Edit:
**********************************************************************
Creating full.ebl and full.gbl for UART DFU
**********************************************************************
Parsing file output_ebl\full.srec...
Parse .s37 format for flash
DONE
ERROR: Could not find AAT. Either the major version is unknown or the image is corrupt.
ERROR: Could not generate ebl header
0
Hi,
Actually, from v2.7 we only support the Gecko Bootloader. So if you plan to use v2.7 or later, you should reprogram your device with Gecko Bootloader.
KBA_BT_0701: Upgrading from factory firmware (v2.0.0) and from Bluetooth SDK v2.1.x with UART DFU type legacy bootloader
Many Silicon Labs Bluetooth Low Energy devices are shipped with Bluetooth stack v2.0.0. This image includes the NCP application and the UART DFU type legacy bootloader v3.
Since the legacy bootloader is not upgradable, and will not be supported in the future, it is strongly recommended to reprogram all your devices with the latest Gecko Bootloader (https://www.silabs.com/documents/public/user-guides/ug266-gecko-bootloader-user-guide.pdf) as a first step.
However, if there is absolutely no way to connect to your device’s programming pins, and you can only access the device via UART using a host controller, bootloader v3 can still be used as a last solution.
When you use bootloader v3 for upgrade, the images to be uploaded must have a length multiple of 4 bytes! The same applies for legacy bootloader v4 that is part of Bluetooth SDK v2.1.x (as described in https://www.silabs.com/community/wireless/bluetooth/knowledge-base.entry.html/2016/12/06/bootloader_changesi-jsoH). That is, if you use the factory firmware, or if you flashed your device with Bluetooth SDK v2.0.x or v2.1.x, you have to be careful with the uploaded images. Bootloader v5 (introduced in Bluetooth SDK 2.3.0) can handle also images that are not word aligned.
If you use GCC compiler to build the upgrade image, the 4-byte alignment is not always satisfied, hence it can happen, that the bootloader returns with CRC error, even if you uploaded a valid image. To ensure that the image has a correct length you have to modify the linker file in your project before build.
Find the appropriate .ld file in your project and modify it like this:
Now you can build your project, and generate the .ebl files by running create_bl_files.bat in your project. You will need full.ebl for upgrading your device with a new SW.
Hi!
On these question please reach out to the sales team:
https://www.silabs.com/buysample/pages/contact-sales.aspx
Best Regards,
Arnold
Hello, is it possible to update sdk 2.0.2 to sdk 2.7 from uart DFU ?
How can I create EBL file ? I'm only able to have GBL (with create_bl_files.bat) which is not compatible for DFU over UART in sdk 2.0.2 right ?
Edit:
**********************************************************************
Creating full.ebl and full.gbl for UART DFU
**********************************************************************
Parsing file output_ebl\full.srec...
Parse .s37 format for flash
DONE
ERROR: Could not find AAT. Either the major version is unknown or the image is corrupt.
ERROR: Could not generate ebl header
Hi,
Actually, from v2.7 we only support the Gecko Bootloader. So if you plan to use v2.7 or later, you should reprogram your device with Gecko Bootloader.
Best Regards,
Arnold