Wednesday, February 9, 2011

CodeLite & GDB for ARM

Just after finishing the Elektor article about how to debug the Sceptre (or any other microcontroller that can be debugged over JTAG) using OpenOCD and GDB, I discovered another free IDE that seemed to be good for embedded development: CodeLite. It seemed to have everything needed for this kind of work, so I planned to add a supplement to the article on this blog. I thought that it would be easy to port the setup described in the article to this new IDE, but unfortunately it turned out to be not so. To come straight to the point: I have not succeeded debugging my target using CodeLite with GDB and OpenOCD.

Why? Because CodeLite does not treat GDB well or I am to dumb to figure it out. It seems easy & intuitive enough though. You create a project and then you define a debug setup for the project. You can tell CodeLite where your debugger lives and which commands to execute and CodeLite offers a GDB terminal, so everything is there to make it work. Except that it won't.

There are several issues. One is that it doesn't work always the same way. Sometimes I had to pass through the Quick Debug option to get it more or less going, sometimes this was not necessary. The reset command that I specified to be executed after attaching to the target gets executed several times instead of just once as if CodeLite uses a very short timeout to wait for response and then simply tries again. If it manages to get a connection to OpenOCD it is very difficult to use the GDB terminal that most of the times returns a message "interrupting debugee process: xxxx" where xxxx is a number that corresponds to the PC's process ID of GDB. Very frustrating and in the end I gave up, not succeeding once to execute successfully a step command.

It is a shame, because the IDE is nice. Not as heavy as Eclipse-CDT and easy to set up for embedded software development. It has interesting plugins, like the code formatting option that you can setup the way you like it, or a copyright block inserter. A snippet wizard lets you write quickly and you can hide functions that you don't want to see, it has everything you expect from a modern IDE. Therefore I suggest that you give it a try, maybe you don't care for GDB debugging of embedded platforms, it is definitely worth it.

If by any chance you figure out how to get GDB and OpenOCD working properly in CodeLite, please let me know.

3 comments:

  1. Hi

    i really like the idea of free software but unfortunately quality is very low. I am trying to write a C++ program fro ARm but no success so far. No matter if i use YAGARTO or Toolchain or whatever. Everyone who succesfully wrote a "Hello LED" program for ARM releases and a new package with compilers etc. There are so many and actually noone worth using it. It seems that same happens with this Editor.

    Regards
    George

    ReplyDelete
  2. Hi,

    Just to let you know that the problem with the reset command being executed several times is reported as CodeLite bug #3498001 and the fix is now in trunk.

    Here is a link to the bug report:
    http://sourceforge.net/tracker/?func=detail&aid=3498001&group_id=202033&atid=979960

    ReplyDelete
  3. Has anybody tried J-Link instead of Open-OCD?
    I here it is much easier to use and more stable.
    Just wondering

    ReplyDelete