I am working with TI's CC2540 SoC using CC2540dk-mini. My software stack is:

  • Ubuntu 12.04
  • sdcc Compiler
  • cc-tool to flash programs onto board using cc-debugger

I can compile, build and flash firmwares perfectly (until now) using these tools. But I do not know how to debug (toggle breakpoints, see sfr values, etc.) or even to "print" from CC2540.

Chapter 3 from CC2540 user guide talks about the debug interface, and reading it I notice that flash programming is done using this interface. So... aparently to debug the firmware I would have to extend cc-tool. It sounds right?

About printing: reading the sdcc user guide (section I realize that I have to provide putchar() function, which makes sense. But what low level protocol should I use? USART? Or something else? (debug interface?) How the CC2540 can talk with cc-debugger? How cc-debugger can talk with Ubuntu?

This all seems a little vague, but it is because I have no experience in this "field" (I always used Arduino and I never had to go in this "low level" before).

  • \$\begingroup\$ With Arduino, you are adapting a runtime communication scheme (serial over USB) to briefly talk to a bootloader on the chip. In contrast, the CC debugger talks to dedicated logic in the chip, and isn't really intended for runtime communication from a user program. There may be a specific secondary capability built into it for that. Or if not, you may be able to create a communication channel by having the debugger monitor mailbox variables for information from the program, and then set a flag to let the program know the message has been collected and can be overwritten by a new one. \$\endgroup\$ Commented May 6, 2014 at 17:21
  • \$\begingroup\$ Why not use Code composer studio?? You get a free license with you dev kit (see here processors.wiki.ti.com/index.php/Licensing_-_CCS), they have a version that runs in linux. Using the full IDE will take away the complexity of setting up your debug environment. As to putchar() the communication interface is your choice, I doubt that you can use the debbuger interface but pretty much take your pick from the available communication interfaces in you micro. \$\endgroup\$
    – Kvegaoro
    Commented Jun 8, 2015 at 20:24

1 Answer 1


I assume you are using code composer and you should(Keil uvision is a other good option). When you must select in the Flash button's arrow the "debug" option(little insect icon).

enter image description here

Than when you are going to Flash your MCU a interface will open showing the register and where you can track variable values.

Regards, MathieuL.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.