|
|
| (27 intermediate revisions by 7 users not shown) |
| Line 1: |
Line 1: |
| | 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. | | 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. |
| | | | |
| − | = Development Tools = | + | <div style="width=100%; background:#FFF;"> |
| − | == Logic Analyzers == | + | {| width="100%" cellspacing="5" cellpadding="0" valign="top" style="background:inherit;" |
| − | * see [[Logic_Analyzers]]
| + | | valign="top" style="margin: 0 0 0.5em 1em; border:1px solid #aaa; text-align:left; width: 33%;" cellpadding="5" | |
| | + | <div style="background: #eeeeee; border: 1px solid #2C547A; padding: 5px; margin: 3px; font-weight:bold;text-align:center;font-size:120%;">Development Tools</div> |
| | + | <div style="margin: 0 0 0 1em;"> |
| | + | ;[[Logic_Analyzers]] |
| | + | ;[[Toolchains]] |
| | + | ;[[Build Systems]] |
| | + | ;[[Embedded Linux Distributions]] |
| | + | ;[[Debuggers]] |
| | + | ;[[Memory Debuggers]] |
| | + | ;[[Tools]] |
| | + | ;[[Integrated Development Environments]] |
| | + | ;[[Emulators]] |
| | + | ;[[Tracers and Profilers]] |
| | + | ;[[Benchmark Programs | Benchmarks]] |
| | + | ;[[Source Management Tools]] |
| | + | ;[[Test Systems]] |
| | | | |
| − | == Toolchains ==
| + | </div> |
| − | * see [[Toolchains]]
| + | | valign="top" style="margin: 0 0 0.5em 1em; border:1px solid #aaa; text-align:left; width: 33%;" cellpadding="5"| |
| − | | + | <div style="background: #eeeeee; border: 1px solid #2C547A; padding: 5px; margin: 3px; font-weight:bold;text-align:center;font-size:120%;">Developer Resources </div> |
| − | == Debuggers == | + | <div style="margin: 0 0 0 1em;"> |
| − | Debugging is one of the most common activities of an embedded developper. Here are some debuggers howto and links:
| + | ;[[Linux Kernel Resources]] |
| − | * [http://openocd.berlios.de/web/ Open On-Chip Debugger]
| + | ;Kernel Subsystems |
| − | * [[GDB|GDB - The GNU debugger]]
| + | *[http://www.linusakesson.net/programming/tty/index.php The TTY Demystified] - excellent explanation of kernel tty system |
| − | * [http://www.gnu.org/software/ddd/ DDD - Data Display Debugger]
| + | |
| − | * [[kgdb| kgdb - kernel source level debugger]]
| + | |
| − | * [[Valgrind|valgrind - memory, cache and other debuggers and profilers]]
| + | |
| − | | + | |
| − | == Memory Debuggers == | + | |
| − | See [[Memory Debuggers]]
| + | |
| − | | + | |
| − | == Other debugging tools(not debuggers) ==
| + | |
| − | * [[addr2line for kernel debugging]]
| + | |
| − | * [[ioctl| decode an ioctl]]
| + | |
| − | | + | |
| − | == Integrated Development Environments == | + | |
| − | * [http://www.eclipse.org Eclipse] - Powerfull IDE written in JAVA.
| + | |
| − | * [http://www.jedit.org jEdit] - Editor written in JAVA which can be expanded to a full IDE with plug-ins.
| + | |
| − | * [http://www.kdevelop.org KDevelop] - Standard IDE for KDE.
| + | |
| − | * [http://www.gnu.org/software/emacs 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 [http://ecb.sourceforge.net/ ECB].
| + | |
| − | * [http://www.vim.org/ VIm] - Powerful IDE, extensible with scripting, can use various modules for completion and more.
| + | |
| − | * [http://kscope.sourceforge.net/ KScope] - Cscope based source editing environment with KDE.
| + | |
| − | * [http://www.anjuta.org Anjuta] - IDE with nice plugin support
| + | |
| − | * FIXTHIS - need more links for IDEs
| + | |
| − | | + | |
| − | == Emulators == | + | |
| − | * [[Qemu| Qemu - hardware emulator]] - for everything (try this first)
| + | |
| − | * [http://www.skyeye.org/ Skyeye] - for ARM
| + | |
| − | * [http://aranym.org Aranym] - for M68K
| + | |
| − | * [http://www.hercules-390.org Hercules] - For S390
| + | |
| − | | + | |
| − | == Tracers and Profilers ==
| + | |
| − | * [[Strace]] - trace system calls by a program (or set of programs) (very handy)
| + | |
| − | * ltrace - trace library calls
| + | |
| − | * 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]]
| + | |
| − | | + | |
| − | = Developer Resources =
| + | |
| − | == mailing lists, web sites, etc. ==
| + | |
| − | * See [[Linux Kernel Resources]]
| + | |
| − | | + | |
| − | == Articles on kernel subsystems ==
| + | |
| − | * [http://www.linusakesson.net/programming/tty/index.php 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 | | * [[Device Trees]] - a structure used to describe system hardware at startup - can be passed or modified by firmware, or built into kernel |
| | + | ;Online Documentation |
| | + | * [http://kernel.org/doc/ols/ Papers from the Ottawa Linux Symposium] |
| | + | * [http://free-electrons.com/training/devtools Free Software tools for embedded systems] |
| | + | * [http://free-electrons.com/articles/realtime/ Real time in embedded Linux systems] |
| | + | * [http://free-electrons.com/articles/optimizations Embedded Linux optimizations] |
| | + | * [http://free-electrons.com/training/audio Audio in embedded Linux systems] |
| | + | * [http://free-electrons.com/training/multimedia Multimedia in embedded Linux systems] |
| | + | * [http://free-electrons.com/articles/elfs/ Embedded Linux From Scratch... in 40 minutes!] |
| | + | * [http://www.makelinux.net/reference Linux technology reference] |
| | + | ;[[:Category:Books| Books]] |
| | + | ;[[Reference Material]] |
| | + | ;[[Podcasts]] |
| | + | ;[[Device drivers]] |
| | + | </div> |
| | + | |- |
| | + | | valign="top" style="margin: 0 0 0.5em 1em; border:1px solid #aaa; text-align:left; width: 33%;" cellpadding="5"| |
| | + | <div style="background: #eeeeee; border: 1px solid #2C547A; padding: 5px; margin: 3px; font-weight:bold;text-align:center;font-size:120%;">Tips and Tricks</div> |
| | + | <div style="margin: 0 0 0 1em;"> |
| | + | ;[[Chip_Identification|How to Identify IC Markings]] |
| | + | ;[[Code Styling Tips]] |
| | + | ;[[Debugging Tips]] |
| | + | ;[[GDB Tips]] |
| | + | ;[[GCC Tips]] |
| | + | ;[[:Category:Tips and Tricks]] |
| | + | </div> |
| | | | |
| − | == Documentation == | + | | valign="top" style="margin: 0 0 0.5em 1em; border:1px solid #aaa; text-align:left; width: 33%;" cellpadding="5"| |
| − | ==== Kernel ====
| + | <div style="background: #eeeeee; border: 1px solid #2C547A; padding: 5px; margin: 3px; font-weight:bold;text-align:center;font-size:120%;">Misc & Wishlist</div> |
| − | * See [[Linux Kernel Resources]] - the rest of this material is (mostly) about userspace.
| + | <div style="margin: 0 0 0 1em;"> |
| − | | + | ;[[Bluetooth Network| Setting up a Bluetooth Network]] |
| − | ==== Online ====
| + | ;[[Continuous Logging for Watchdog Timer Expiration]] |
| − | * Papers from the Ottawa Linux Symposium - broken out - see http://kernel.org/doc/ols/
| + | ;[[Crash Diagnostics]] |
| − | * 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 | 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.
| + | |
| − | | + | |
| − | * [http://www.amazon.com/Programming-Environment-Addison-Wesley-Professional-Computing/dp/0321525949/ref=sr_1_1?ie=UTF8&s=books&qid=1259788186&sr=8-1 Advanced Programming in the UNIX Environment, Second Edition] by the late W. Richard Stevens and Stephen A. Rago
| + | |
| − | ** Not embedded specific, but THE reference for Linux/Unix programming
| + | |
| − | | + | |
| − | * [http://www.amazon.com/Linux-System-Programming-Robert-Love/dp/0596009585/ref=sr_1_1?ie=UTF8&s=books&qid=1259788281&sr=1-1 Linux System Programming] - by Robert Love
| + | |
| − | ** Good introduction to Linux system programming
| + | |
| − | | + | |
| − | * [[Linux Debugging and Performance Tuning]] - by Steve Best
| + | |
| − | * [[OMAP and DaVinci Software for Dummies]] - by Steve Blonstein, Alan Campbell, Texas Instruments
| + | |
| − | * [[Essential_Linux_Device_Drivers]]
| + | |
| − | | + | |
| − | 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).
| + | |
| − | * The [[UHAPI]] Forum standardizes hardware-independent application programming interfaces (APIs) for analog and digital televisions, set top boxes, DVD players and recorders, personal video recorders (PVRs), home servers and other consumer audio/video (A/V) devices.
| + | |
| − | | + | |
| − | ==== Podcasts ====
| + | |
| − | * [http://tllts.org] - The (Original) Linux Link Tech Show, weekly Linux podcast with archive going back to 2003.
| + | |
| − | * [http://www.timesys.com/resources/podcast] - Timesys LinuxLink Radio. (Despite the name, it's has nothing to do with the older Linux Link podcast, and it's not on the radio. No longer updates on a regular schedule, but the archives are available.)
| + | |
| − | | + | |
| − | == Code Style Tips == | + | |
| − | * See [[Code Styling Tips]]
| + | |
| − | | + | |
| − | == Debugging Tips ==
| + | |
| − | * See the [[Kernel Debugging Tips]] page
| + | |
| − | * See also [[Debugging Makefiles]]
| + | |
| − | * [[Printk]]
| + | |
| − | * Debug user-space initialization:
| + | |
| − | ** If you get a panic - "not syncing: Attempted to kill init!" it can be for many different reasons. Try setting CONFIG_DEBUG_USER=y in your .config and pass 'user_debug=255' in the kernel command line. That will give you a more verbose output about why user space programs crash. Thanks to Daniel Mack on the linux-arm-kernel mailing list for this tip.
| + | |
| − | | + | |
| − | == 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]]
| + | |
| − | | + | |
| − | = Wishlist Items =
| + | |
| − | *[[Continuous Logging for Watchdog Timer Expiration]]
| + | |
| − | *[[Crash Diagnostics]]
| + | |
| | | | |
| | + | </div> |
| | + | |} |
| | + | </div> |
| | [[Category:Development Tools]] | | [[Category:Development Tools]] |
| | + | [[Category:Tips and Tricks]] |
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.