This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Universal Boot loader - setup and operation

Other Parts Discussed in Thread: CC2540

I have custom hardware using the CC2540. I am trying to use the Universal Boot Loader to update the firmware. I have never used the USB port or Universal Boot loader before. I have read the "Universal Boot Loader .... Developer's Guide" several times.  I believe I have followed the steps indicated in the document. I generate a hex file and a bin file.  I am using the IAR tools to load the compiled app.
The APP ran fine until I added the UBL support. I was able to connect and read/write all of my characteristics. With the steps in UBL document followed, the APP does not advertise (I have an LED blink if advertising) and does not connect. It seems to reset several times since I have a print statement at the start of init.

Can someone explain the process of using the UBL and how it is setup and used with a custom APP. I do not see a "default.cfg" file. Where and how do I use this. I do see a "app.bin" file that I assume I use to flash new firmware if my device enumerates as a MSD drive.


I am a sure I am making some simple rookie mistakes as I have been going through a lot of postings and still very confused.

any help would be appreciated, we have some deadlines and commitments to keep.

  • Hi Timothy,

    We do have other customers using UBL, so it's hard to say what is going on here. Are you using BLE 1.4.0 and IAR 8.20.2? Did you remove the print statement and retry? It would good if you could debug with the CC debugger and advise the results.

    Best wishes
  • The first problem I guess is that I do not understand the mechanism of what is going on. I have a BLE app that was running perfectly for many weeks. I can read and write all of the custom characteristics that I have added as well as run the standard services such as battery monitor. The firmware is running on custom hardware with a CC2540 with a USB connection. The plan was to get everything working and then the last step add in a process to update the firmware via the USB. I had done several BLE designs before all based on the simple peripheral app but none involved the USB port. So I am sure it is something I am missing or doing wrong.

    I followed all of the steps in the "Universal Boot Loader ... Developers Guide" to the best of my knowledge and changed my working app to match what is in the document. I do match the screen shots and had no problem compiling and loading the app. The problem is that it now does not run correctly. it does not advertise and I can not connect to it. I removed all print statements and I still cannot connect to it.


    I then saw the app under ble\util\UBL\soc_8051\usb_msd\iar\UBL.eww . this looks like "the" UBL app so I compiled and loaded that and tried to run that. I do not get any errors and I am not sure exactly what it is supposed to do. I connected to a USB port on my PC hoping it would show up a MSD device but I did not see anything at all when I connected or removed the usb cable.


    so I am very confused. How do I implement UBL so I can update firmware from my USB connection? do I create and flash two apps, do I just flash UBL app and somehow it knows how to load my edited app. when it loads my changed app will it suddenly start working again if loaded via UBL. is the only reason it is not working is because I loaded via debugger and trdied to run it directly? Is the edited working app still supposed to run when loaded into the via the debugger with nothing else flashed.


    I appreciate any tips you could give. We have enjoyed quite a bit of success with the TI BLE chip offerings and intend to expand it further once I am able to upgrade my firmware in the field.

  • I am using IAR tools 8.30.1 and TI BLE-CC254x-1.4.0.