Toolbox

This page has information about developing Embedded Linux, including links to toolchains, debuggers and other development tools. Also, it has links to pages with debugging tips.

Toolchains

 * see Toolchains

Debuggers

 * Open On-Chip Debugger
 * GDB - The GNU debugger
 * DDD - Data Display Debugger
 * kgdb - kernel source level debugger
 * valgrind - memory, cache and other debuggers and profilers
 * efence - Memory Debugger

Integrated Development Environments

 * Eclipse - Powerfull IDE written in JAVA.
 * jEdit - Editor written in JAVA which can be expanded to a full IDE with plug-ins.
 * KDevelop - Standard IDE for KDE.
 * Emacs - Powerful IDE, extensible in LISP, ships with modes to integrates with SCM (GIT, SVN, CVS...), build systems, debugger and even fancy multi-window with ECB.
 * VIm - Powerful IDE, extensible with scripting, can use various modules for completion and more.
 * KScope - Cscope based source editing environment with KDE.
 * Anjuta - IDE with nice plugin support
 * FIXTHIS - need more links for IDEs

Emulators

 * Qemu - hardware emulator
 * Skyeye

Tracers and Profilers

 * see Kernel Trace Systems
 * see Profilers

Benchmarks

 * see Benchmark Programs

Source Management Tools
There are a number of tools for managing patches, which are useful for different tasks. There's now a whole page devoted to this. See Source Management Tools

For some simple tools for managing patches, see Diff And Patch Tricks

Test Systems

 * See Test Systems

mailing lists, web sites, etc.

 * See Linux Kernel Resources

Articles on kernel subsystems

 * The TTY Demystified - excellent explanation of kernel tty system
 * Device Trees - a structure used to describe system hardware at startup - can be passed or modified by firmware, or built into kernel

Online

 * Linux Device Drivers, 3rd edition - http://lwn.net/Kernel/LDD3/
 * Papers from the Ottawa Linux Symposium - broken out - see http://kernel.org/doc/ols/
 * Embedded Linux kernel and driver development - http://free-electrons.com/training/drivers
 * Free Software tools for embedded systems - http://free-electrons.com/training/devtools
 * Real time in embedded Linux systems - http://free-electrons.com/articles/realtime/
 * Embedded Linux optimizations - http://free-electrons.com/articles/optimizations
 * Audio in embedded Linux systems - http://free-electrons.com/training/audio
 * Multimedia in embedded Linux systems - http://free-electrons.com/training/multimedia
 * Embedded Linux From Scratch... in 40 minutes! - http://free-electrons.com/articles/elfs/

Books

 * Embedded Linux System Design and Development - by P. Raghavan, Amol Lad, and Sriram Neelakandan (Hardcover - Dec 21, 2005)
 * This one looks quite good.
 * Embedded Linux Primer: A Practical Real-World Approach - by Christopher Hallinan
 * So does this one.
 * Building Embedded Linux Systems - by Karim Yaghmour
 * Be sure to get the second edition (from 2008). The first edition (from 2003) is outdated.


 * Advanced Programming in the UNIX Environment by the late W. Richard Stevens and Stephen A. Rago
 * Not embedded specific, but THE reference for Linux/Unix programming
 * Linux System Programming - by Robert Love
 * Good introduction to Linux system programming

See also Category:Books

Reference Material

 * ARM Processor Reference Manuals - Registration required, but it's free.
 * go to http://infocenter.arm.com/ => ARM architecture => Reference Manuals => ... => registration link (only name, e-mail address and company name are strictly required).

Podcasts

 * http://www.timesys.com/resources/podcast - a series of podcasts from timesys (on linux of course)

Code Style Tips

 * This section is for good Code Styling Tips
 * Extern_Vs_Static_Inline is a short explanation on the proper use of "inline" in kernel code.

Debugging Tips

 * See the Kernel Debugging Tips page
 * See also Debugging Makefiles
 * Printk

GCC Tips and Tricks

 * This section of GCC Tips is a collection of tips and tricks helpful for embedded developers

Network Setup

 * Settings up a Bluetooth Network

Embedded Linux Distributions

 * see Embedded Linux Distributions