Design Article
Do-it-yourself embedded Linux development tools
Alexander Sirotkin
11/30/2007 4:30 PM EST
These key tools can be fine-tuned to fit your needs and your style of work.
Development tools are important. They save development and debug time. But most importantly, they make developers more happy and productive by automating many routine, boring, and time-consuming tasks. It's painful to see programmers spend a significant percentage of their valuable time on such routine tasks as downloading their code to the embedded target. This situation is not uncommon even with traditional embedded systems, but it's far worse with embedded Linux, where the lack of good development tools is evident.
The perception that there are no good embedded Linux tools is not entirely true. First, a few commercial tools are available that are worth considering. However, contrary to the traditional embedded systems development world, commercial tools aren't the only option. A lot can be done with relatively little effort using freely available open-source tools. In fact, I would argue that the do-it-yourself development environment can be far superior to any commercial offering, as it will allow you the level of customization, flexibility, and agility that none of the off-the-shelf products can match.
Commercial tools
Embedded Linux integrated development environment (IDE) software suites are usually available from the same companies that sell embedded Linux. Wind River, MontaVista, TimeSys, LynuxWorks, and a dozen other vendors come to mind. Although these companies will try to sell you both the operating system and the accompanying IDE, this IDE may or may not be tied to that particular distribution. Most of these tools are Eclipse-based and offer similar functionality, which at closer look turns out to be no more than a clumsy editor, compiler wrapper, and debugger. The only exception I'm aware of is Wind River Workbench, which is actually a commercial grade product--not surprising considering Wind River's experience with its Tornado IDE for VxWorks.
The major problem with off-the-shelf IDE suites isn't the software itself, but rather the nature of embedded systems development. To unleash the full power of an IDE, you must run an agent on the target embedded platform, as illustrated in Figure 1. This agent, however, may not be available if you're working on a customer system, or you may not have enough time to integrate it if you're doing a relatively short-term project. However, this agent typically fails to run because it relies on some kernel functionality that may not be available, as all embedded platforms are different and embedded systems programmers love to tweak system internals, often breaking some functionality the IDE agent relies on.




Mohamed Thalib
11/29/2007 1:47 AM EST
The article is really nice...
Thanks..
Sign in to Reply
kdiwan
12/2/2007 11:38 PM EST
Nice article. I have heard that WindRiver's JTAG based debugger can help you debug Linux kernel, kernel modules and user space over one single connection.
Infact you can debug from user space into the kernel space and back into the user space over the same connection giving visibility into the whole call stack as well and is not linux distribution dependent.
Are you aware of any open source tools which can do this?
Sign in to Reply
demiurg
12/3/2007 4:20 AM EST
I'm afraid the closest thing to the
above JTAG debugging functionality
you can get with software (not just open
source) only tools you can get is running
two gdb sessions in parallel - one for
the application and another for the
kernel.
Sign in to Reply