Embedded Linux system development

Embedded Linux  application  development

.S

Michael Opdenacker Thomas Petazzoni Free Electrons

make

.h

.c++

.c

© Copyright 2004­2009, Free Electrons. Creative Commons BY­SA 3.0 license Latest update: Sep 28, 2010,  Document sources, updates and translations: http://free­electrons.com/docs/appdev Corrections, suggestions, contributions and translations are welcome!

1
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free­electrons.com

Contents
Application development Developing applications on embedded Linux Building your applications Source management Integrated development environments (IDEs) Version control systems Debugging and analysis tools Debuggers Static code checkers Memory checkers System analysis Development environments Developing on Windows
2

Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free­electrons.com

Application development

Developing applications on embedded Linux

3
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free­electrons.com

Application development
An embedded Linux system is just a normal Linux system, with  usually a smaller selection of components In terms of application development, developing on embedded  Linux is exactly the same as developing on a desktop Linux  system All existing skills can be re­used, without any particular  adaptation All existing libraries, either third­party or in­house, can be  integrated into the embedded Linux system
Taking into account, of course, the limitation of the embedded  systems in terms of performance, storage and memory

4
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free­electrons.com

Programming language
The default programming language for system­level application in  Linux is usually C
The C library is already present on your system, nothing to add

C++ can be used for larger applications
The C++ library must be added to the system Some libraries, including Qt, are developed in C++ so they need the  C++ library on the system anyway

Scripting languages can also be useful for quick application  development, web applications or scripts
But they require an interpreter on the embedded system and have  usually higher memory consumption and slightly lower  performances

Languages: Python, Perl, Lua, Ada, Fortran, etc.
5
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free­electrons.com

 using a higher level framework. or in any « Linux system  programming » book However. Kernel.C library or higher­level libraries ? For many applications. threads and synchronization. in the order of a few megabytes 6 Free Electrons. networking.com . training and support. inter­ process communication Thoroughly described in the glibc manual. the API carries a lot of history and is not necessarily easy  to grasp for new comers Therefore. these libraries have some memory and storage  footprint. the C library already provides a relatively  large set of features file and device I/O. such as Qt or the Gtk  stack. might be a good idea These frameworks are not only graphical libraries. consulting. their core is  separate from the graphical part But of course. http//free­electrons. drivers and embedded Linux development.

com . complicated but very widely used) or  CMake (modern. drivers and embedded Linux development. a simple Makefile will  be sufficient For more complicated applications. using a build system is recommended Look at the autotools (ancient. or if you want to be able to  run your application on a desktop Linux PC and on the target  device. since it comes with its own build  system for applications.Building your applications For simple applications that do not need to be really portable or  provide compile­time configuration options. Kernel. smaller but growing user base) The QT library is a special case. simpler. consulting. training and support. http//free­electrons. called qmake 7 Free Electrons.

o bar. Kernel. training and support.Simple Makefile (1) Case of an application that only uses the C library. drivers and embedded Linux development. http//free­electrons. contains two  source files and generates a single binary CROSS_COMPILE?=arm­linux­ CC=$(CROSS_COMPILE)gcc OBJS=foo. consulting.o all: foobar foobar: $(OBJS) $(CC) ­o $@ $^ clean: $(RM) ­f foobar $(OBJS) 8 Free Electrons.com .

o bar. training and support.com .o CC=$(CROSS_COMPILE)gcc CFLAGS=$(shell pkg­config ­­cflags $(LIBS)) LDFLAGS=$(shell pkg­config ­­libs $(LIBS)) all: foobar foobar: $(OBJS) $(CC) ­o $@ $^ $(LDFLAGS) clean: $(RM) ­f foobar $(OBJS) 9 Free Electrons. consulting. http//free­electrons. drivers and embedded Linux development.Simple Makefile (2) Case of an application that uses the Glib and the GPS libraries CROSS_COMPILE?=arm­linux­ LIBS=libgps glib­2.0 OBJS=foo. Kernel.

com .Application development Source management Integrated Development Environments (IDE) 10 Free Electrons. http//free­electrons. drivers and embedded Linux development. training and support. Kernel. consulting.

cscope Console mode source browsing tool. See our Linux kernel and driver development training materials (http://free­electrons. Integrates with editors like vi and emacs.com/docs/kernel) for more details.Source browsers LXR: Linux Cross Reference Allows to browse code through a web browser. 11 Free Electrons. KScope A graphical interface to cscope. http//free­electrons.com . Kernel. consulting. drivers and embedded Linux development. training and support.

 training and support. C.com . but also GTK. Perl. Kernel. debugger interface.. syntax highlighting.  compiler interface. Many features: editor. drivers and embedded Linux development. code completion.. C++..org A full featured IDE! License: GPL Supports many languages: Ada. kernel drivers. class  browser. Gnome. PHP. file manager. Ruby. Shell Supports many kinds of projects: KDE. Nice overview: http://en. consulting. Database.KDevelop http://kdevelop.. http//free­electrons.org/wiki/Kdevelop 12 Free Electrons. Java.wikipedia. Python. embedded (Opie).

KDevelop screenshot Ruby debugger 13 Free Electrons. http//free­electrons. consulting. Kernel.com . training and support. drivers and embedded Linux development.

Anjuta DevStudio http://www. compiler and debugger interface. License: GPL Supported languages: C and C++ Supported project types: command line. training and support. syntax highlighting. code  completion. 14 Free Electrons.anjuta.  wxWindows. GTK. http//free­electrons.org/ Gnome's IDE Less features than KDevelop so far. tag browser. Features: integrated editor. Kernel. consulting.com . Xlib. Gnome. drivers and embedded Linux development.

 drivers and embedded Linux development. training and support. consulting. Kernel. http//free­electrons.com .Anjuta screenshot Anjuta's class inheritance graph and terminal 15 Free Electrons.

 typically used for creating IDEs. Zend. Unix. WindRiver. Kernel.. Supported by the Eclipse foundation. Computer Associates. http//free­electrons. consulting. Free Software license (Eclipse Public License). plugin based software development kit. Nokia. Windows Extremely popular: created a lot of attraction.). Incompatible with the GPL. Intel.Eclipse (1) http://www.org/ An extensible. 16 Free Electrons. drivers and embedded Linux development. training and support. a non­profit  consortium  of major software industry vendors (IBM.eclipse..  Borland.com . Supported platforms: GNU/Linux.

Eclipse is a huge project. Windriver  Workbench. It would require an entire training session! 17 Free Electrons. Sysgo ELinOS.org/projects/ Some projects are dedicated at integrating into Eclipse features  useful for embedded developers (cross­compilation.Eclipse (2) Eclipse is actually a platform composed of many projects: http://www. http//free­electrons. drivers and embedded Linux development.) The platform is used by major embedded Linux software vendors  for their (proprietary) system development kits: MontaVista DevRocket.eclipse. etc. TimeSys TimeStorm. remote debugging. training and support. remote  development.com . consulting. Kernel.

 http//free­electrons.com .Application development Source management Version control systems 18 Free Electrons. training and support. drivers and embedded Linux development. Kernel. consulting.

 consulting. training and support.Version control systems Real projects can't do without them Allow multiple developers to contribute on the same project. drivers and embedded Linux development. Each  developer can see the latest changes from the others.com . and revert them if needed. http//free­electrons. or choose  to stick with older versions of some components. Kernel. Allow developers to have their own development branch  (branching) Supposed to help developers resolving conflicts with different  branches (merging) 19 Free Electrons. Allow to keep track of changes.

com . http://en. Kernel.Traditional version control systems Rely on a central repository Only mentioning the most popular ones CVS ­ Concurrent Versions System Still quite popular http://en. consulting.wikipedia. The user interface is very similar.org/wiki/Concurrent_Versions_System Subversion Created as a replacement of CVS. drivers and embedded Linux development.org/wiki/Subversion_(software) 20 Free Electrons. training and support. http//free­electrons.  removing many of its  limitations.wikipedia.

 consulting.Distributed source control systems (1) No longer have a central repository More adapted to the way the Free Software community develops  software and organizes People get working copies from other people's working copies. 21 Free Electrons. drivers and embedded Linux development. Kernel.com . training and support. http//free­electrons. making their own  experiments without having to apply for  repository access.  and exchange changes between themselves. Branching and  merging is made easier. Make it easier for new developers to join.

Outstanding performance. http://en. drivers and embedded Linux development.org/wiki/Version_control_systems#Distributed_revision_control 22 Free Electrons.wikipedia.Distributed source control systems (2) Only mentioning the most popular Git Initially designed and developed by Linus Torvalds for Linux kernel development. created with the same goals as Git. http//free­electrons. training and support.wikipedia. Used by big projects too. Extremely popular in the community. in particular in big projects.wikipedia. http://en.org/wiki/Git_(software) http://en.com . and used by more and more projects. Kernel.org/wiki/Git_(software) Mercurial Another system. consulting.

 drivers and embedded Linux development. Kernel.Software development tools Debugging and analysis tools Debuggers 23 Free Electrons. training and support. http//free­electrons. consulting.com .

 dumped into a core file). Pascal. Console interface (useful for remote debugging).com . http//free­electrons. Can be used to control the execution of a program. Graphical front­ends available. Kernel. Fortran. Supported languages: C.. available for most embedded architectures. training and support. You can also use it to  see what a program was doing when it crashed (by loading its  memory image.org/software/gdb/ The debugger on GNU/Linux.org/wiki/Gdb 24 Free Electrons.gnu. Objective­C. drivers and embedded Linux development.wikipedia..  Ada. consulting. See also http://en.GDB The GNU Project Debugger http://www. C++. set  breakpoints or change internal variables.

fd prints the variable var.com . consulting. line 42 print var or print task­>files[0]. Kernel. http//free­electrons. stepping over function calls step continue to the next line. or a more complicated reference.GDB crash course A few useful GDB commands break foobar puts a breakpoint at the entry of function foobar() break foobar.c.c:42 puts a breakpoint in foobar. drivers and embedded Linux development. GDB can  also nicely display structures with all their members continue continue the execution next continue to the next line. entering into subfunctions 25 Free Electrons. training and support.

redhat.GDB graphical front­ends DDD ­ Data Display Debugger http://www. with advanced data plotting capabilities.com . GDB/Insight http://sources.kdbg. training and support.org/ Another front­end. consulting.gnu. http//free­electrons.org/software/ddd/ The most popular graphical front­end. for the K Display Environment. 26 Free Electrons. drivers and embedded Linux development.com/insight/ From the GDB maintainers (Red Hat). KDbg http://www. Kernel.

 Kernel. consulting. http//free­electrons.com . training and support. drivers and embedded Linux development.Introduction to software development tools Debugging and analysis tools Remote debugging 27 Free Electrons.

 training and support.4 MB on x86). gdbserver is used on the target system (only 100 KB on arm). debugging takes place using gdb or  one of its front­end. http//free­electrons. gdb gdbserver 28 Free Electrons. gdb has direct access to the binary and libraries compiled with  debugging symbols. the target platform environment is  often too limited to allow direct debugging with gdb (2. Remote debugging is preferred gdb is used on the development workstation. drivers and embedded Linux development. in an embedded context. However.com . consulting. offering all its features.Remote debugging In a non­embedded environment. Kernel.

 consulting. drivers and embedded Linux development. training and support. http//free­electrons.com . Kernel.Remote debugging: architecture Host Target gdbserver Serial or  Ethernet  connection Binaries and libraries with debugging symbols not stripped Running program with binaries and libraries that can be stripped ARCH­linux­gdb 29 Free Electrons.

 on the host. http//free­electrons. and use the following gdb commands:  To connect to the target: gdb > target remote <target>:<port> gdb > target remote /dev/ttyS0 To tell gdb where shared libraries are: gdb > set sysroot <library­path> (networking) (serial link) (without lib/) 30 Free Electrons. consulting. run ARCH­linux­gdb program. drivers and embedded Linux development.com .Remote debugging: usage On the target. run a program through gdbserver. Program execution will not start immediately. attach gdbserver to an already running program: gdbserver ­­attach localhost:<port> <pid> Then. Kernel. gdbserver localhost:<port> <executable> <args> gdbserver /dev/ttyS0 <executable> <args> Otherwise. training and support.

 drivers and embedded Linux development. and  run ARCH­linux­gdb ­c core­file application­binary 31 Free Electrons.Post mortem analysis When an application crashes due to a segmentation fault and the  application was not under control of a debugger.com . consulting. transfer the core file from the target to the host. we get no  informations about the crash Fortunately. Linux can generate a core file that contains the  image of the application memory at the moment of the crash. Kernel. http//free­electrons. and  gdb can use this core file to let us analyze the state of the  crashed application On the target Use ulimit ­c unlimited to enable the generation of a core  file when a crash occurs On the host After the crash. training and support.

 http//free­electrons. training and support. drivers and embedded Linux development.Software development tools Debugging and analysis tools Static code checkers and memory checkers 32 Free Electrons. consulting. Kernel.com .

 training and support. Very complete manual and documentation Doesn't support C++ 33 Free Electrons.Splint http://splint. http//free­electrons. drivers and embedded Linux development.org/. from the University of Virginia GPL tool for statically checking C programs for security  vulnerabilities and coding mistakes Today's lint program for GNU/Linux. The successor of LClint.com . consulting. Kernel.

memcheck http://hald.dnsalias.com . drivers and embedded Linux development.net/projects/memcheck/ GNU GPL tool for dynamic memory checking Works by replacing glibc's memory management functions  by its own. Kernel. Supports most useful CPU architectures. training and support. consulting. 34 Free Electrons. http//free­electrons.

 http//free­electrons. GDB will then display the source­code line that causes the  bug. 35 Free Electrons. drivers and embedded Linux development. Works on any platform supported by Linux. Works by using the virtual­memory hardware to create a  red­zone at the border of each buffer ­ touch that. whatever the  CPU (provided virtual memory support is available).DUMA Detect Unintended Memory Access http://duma. Kernel.sourceforge.com . and your  program stops. training and support. consulting.net/ Fork and replacement for Electric Fence Stops your program on the exact instruction that overruns or  underruns a malloc() memory buffer.

The most popular tool for this usage. Even used by projects with hundreds of programmers.org/ GNU GPL Software suite for debugging and profiling programs. Supported platforms: Linux on x86. 36 Free Electrons. consulting. Can detect many memory management and threading bugs. drivers and embedded Linux development. Profiler: provides information helpful to speed up your program  and reduce its memory usage.com . x86_64. http//free­electrons. ppc64 Others: compile your program to these platforms to use Valgrind. ppc32. training and support. Kernel.Valgrind (1) http://valgrind.

org/info/ and http://valgrind. Example usage valgrind ­­leak­check=yes ls ­la Works by adding its own instrumentation to your code and  then running in on its own virtual x86 (or ppc) core. but still fine for testing! More details on http://valgrind. without the need to  recompile it.html#howworks 37 Free Electrons.Valgrind (2) Can be used to run any program. Kernel. drivers and embedded Linux development. training and support. http//free­electrons. consulting.com .org/docs/manual/coregrind_core. Significantly slows down execution.

 http//free­electrons. in which memory errors are very difficult to find. consulting.com . 38 Free Electrons. drivers and embedded Linux development. training and support. you can get back to your original platform. Once bugs are found and fixed. debug your application with Valgrind.Valgrind on other platforms To check programs on non x86 or non ppc CPU architectures Write portable code (always useful). and compile it for x86 or ppc Then. This is particularly useful with uClinux. Kernel.

 drivers and embedded Linux development. Kernel. http//free­electrons. training and support.com .Software development tools Debugging and analysis tools System analysis 39 Free Electrons. consulting.

net/projects/strace/ Available on all GNU/Linux systems Can be built by your cross­compiling toolchain generator. consulting. drivers and embedded Linux development.com . Kernel. Allows to see what any of your processes is doing: accessing files. allocating memory. http//free­electrons...strace System call tracer http://sourceforge. Usage: strace <command>  strace ­p<pid>  See man strace for details. training and support. Often sufficient to find simple bugs. (starting a new process) (tracing an existing process) 40 Free Electrons.

 F_OK)      = ­1 ENOENT (No such file or directory) open("/lib/tls/i686/cmov/libc.nohwcap".  "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\320h\1\0004\0\0\0\344". . O_RDONLY)      = 3 fstat64(3..cache".so. consulting.. MAP_PRIVATE|MAP_DENYWRITE. st_size=1442180. 111585. st_size=111585. 1451632.so. 3. {st_mode=S_IFREG|0644. 512)  = 512 fstat64(3. O_RDONLY) = 3 read(3. {st_mode=S_IFREG|0755. 3. ­1. training and support. MAP_PRIVATE|MAP_ANONYMOUS.6". . [/* 38 vars */]) = 0 brk(0)                                  = 0x98b4000 access("/etc/ld.so. R_OK)      = ­1 ENOENT (No such file or directory) open("/etc/ld. 0) = 0xb7f69000 close(3)                                = 0 access("/etc/ld. 4096. MAP_PRIVATE. 8192.com . "Makefile"]. ­1. 0) =  0xb7e06000 mprotect(0xb7f62000. 0) =  0xb7f85000 access("/etc/ld.strace example output > strace cat Makefile  execve("/bin/cat". 12288.}) = 0 mmap2(NULL.. Kernel.}) = 0 mmap2(NULL. 3... F_OK)      = ­1 ENOENT (No such file or directory) mmap2(NULL.so. MAP_PRIVATE|MAP_FIXED| MAP_DENYWRITE. PROT_READ|PROT_WRITE. PROT_READ|PROT_WRITE. 0x15c) = 0xb7f63000 mmap2(0xb7f66000. http//free­electrons. PROT_READ|PROT_EXEC.. PROT_NONE)   = 0 mmap2(0xb7f63000.nohwcap".. 9840. PROT_READ|PROT_WRITE. MAP_PRIVATE|MAP_FIXED| MAP_ANONYMOUS.preload". drivers and embedded Linux development. ["cat". 0) = 0xb7f66000 close(3)                                = 0 41 Free Electrons.so. PROT_READ.

or just by a list of function names. consulting. Kernel. http//free­electrons. Of course. works even if you don't have the sources Allows to filter library calls with regular expressions. Manual page: http://linux.wikipedia.org/wiki/Ltrace for details 42 Free Electrons. which shows only system calls.ltrace A tool to trace library calls used by a program and all the signals it receives Very useful complement to strace.net/man/1/ltrace See http://en.com . training and support. drivers and embedded Linux development.die.

.ltrace example output ltrace nedit index. 0xbfaadfe8.html sscanf(0x8274af1. "const 0")       = ­1 strcmp("$rangeset_list". "const 0")                = ­1 strcmp("$search_end". 0x8132618. drivers and embedded Linux development. 43 Free Electrons. "const 0")         = ­1 strcmp("$shell_cmd_status". "const 0")                = ­1 strcmp("const 200". 0)                = 7 strcmp("startScan". 0x8248640. training and support. "const 0")                 = ­1 . "const 0")              = ­1 strcmp("$calltip_ID". "const 0")           = ­1 strcmp("$read_status". "const 0")                   = 1 strcmp("ScanDistance". "const 0")                 = ­1 strcmp("$string_dialog_button".com . Kernel. consulting. http//free­electrons. "const %d". 0) = 1 sprintf("const 0".. "const 0")                   = 1 strcmp("$list_dialog_button".

000000           0        19           close   0. training and support. Kernel. drivers and embedded Linux development.00    0.000000           0        80        63 open   0.000050          50         1           set_thread_area   0.00    0.000000           0         3           brk   0.000000           0        18           fstat64 ­­­­­­ ­­­­­­­­­­­ ­­­­­­­­­­­ ­­­­­­­­­ ­­­­­­­­­ ­­­­­­­­­­­­­­­­ 100.00    0.000000           0         1           mprotect   0.00    0.00    0. consulting.00    0.00    0.com .00    0.00    0.000050                   288       111 total 44 Free Electrons.000000           0         1           execve   0.ltrace summary Example summary at the end of the ltrace output (­c option) Process 17019 detached % time     seconds  usecs/call     calls    errors syscall ­­­­­­ ­­­­­­­­­­­ ­­­­­­­­­­­ ­­­­­­­­­ ­­­­­­­­­ ­­­­­­­­­­­­­­­­ 100.00    0.000000           0        19           mmap2   0.000000           0        44           write   0.00    0.00    0.00    0.000000           0        48           read   0.000000           0         1           munmap   0.00    0.000000           0        50        46 stat64   0. http//free­electrons.00    0.000000           0         2         2 access   0.000000           0         1           uname   0.

 consulting.com . Requires a kernel patch to access all features. Kernel. training and support.sourceforge. oprofile­gui 45 Free Electrons. Ubuntu/Debian packages: oprofile. Requires more investigation to see how it works.Oprofile http://oprofile. but is already available in a standard kernel.net A system­wide profiling tool Can collect statistics like the top users of the CPU. drivers and embedded Linux development. http//free­electrons. Works without having the sources.

 Perl  and PHP.Callgrind / KCachegrind Cachegrind / Callgrind: part of the Valgrind tool suite Collects function call statistics and call graphs. Kernel. KCachegrind can also import data from other profilers (such as OProfile).sourceforge. drivers and embedded Linux development. training and support. Useful to know in which functions most time is spent. KCachegrind: http://kcachegrind.com . http//free­electrons.net/ An amazing visualizer for Cachegrind / Callgrind data. and from profiling output from Python. consulting. 46 Free Electrons.

 training and support. http//free­electrons. drivers and embedded Linux development. consulting.KCachegrind screenshot 47 Free Electrons. Kernel.com .

 consulting. Debug a simple application  running on the target using  remote debugging 48 Free Electrons. Kernel. http//free­electrons. drivers and embedded Linux development.Practical lab – Remote debugging Time to start Lab! Set up remote debugging tools  on the target: strace.com . training and support. ltrace and gdbserver.

 http//free­electrons. training and support. Kernel. consulting.Software development tools Developing on Windows 49 Free Electrons. drivers and embedded Linux development.com .

 drivers and embedded Linux development. Much fewer issues you are the only one to  face. consulting. However. 50 Free Electrons. http//free­electrons. training and support. some developers have no choice: Windows is the only desktop OS allowed in their company.com .Developing on Windows!? Using a GNU/Linux workstation is the easiest way to create  software for GNU/Linux or embedded Linux You use the same tools and environment as all community  developers do. You get familiar with the system. Kernel. Essential for understanding issues.

com/ Linux (POSIX)­like environment for Windows 2 components: Linux API emulation layer: cygwin1. consulting.. Kernel. X Window. Very easy to install.. training and support. compiler.Cygwin http://cygwin. http servers. 51 Free Electrons. For embedded Linux system developers: makes it possible to use GNU toolchains (compiled for Windows)  required to build Linux binaries (kernel.com . Can choose which tools to download and install. http//free­electrons. drivers and embedded Linux development.dll A collection of tools originally found in GNU/Linux Allows to compile and run many GNU/Linux programs on Windows:  shells. GTK. libraries or applications).

com . http//free­electrons. consulting. training and support.Cygwin screenshot 52 Free Electrons. Kernel. drivers and embedded Linux development.

 Don't expect them to test that their  tools build on Windows with Cygwin. the best solution is to run Linux inside Windows! 53 Free Electrons.com . You may be the first to face or report building issues on this  platform for a given compiler or tool version. consulting. Almost all developers work on GNU/Linux or on another Unix  platform (typically BSD). training and support. drivers and embedded Linux development.Cygwin limitations Cygwin is not a complete substitute for a real GNU/Linux system. So. Kernel. The number of Cygwin users is quite small. http//free­electrons.

54 Free Electrons.com .org/wiki/VMware License: proprietary Can run a GNU/Linux PC from Windows. Many Free Software system images available for download. training and support. Kernel. The most popular solution in the corporate world. http//free­electrons.wikipedia. VMware Player is now available free of charge. consulting.VMware http://en. almost at the host speed. drivers and embedded Linux development.

See http://en.org from Sun Microsystems PC emulation solution available on both Windows and GNU/Linux 2 licenses: Proprietary: free of cost for personal use and evaluation.wikipedia. training and support. drivers and embedded Linux development.com .VirtualBox http://virtualbox. Most features (except in particular USB support).org/wiki/VirtualBox 55 Free Electrons. Open Source Edition (OSE): GPL license. http//free­electrons. Full features. consulting. No binaries released for Windows so far (but possible). Kernel. Performance similar to that of VMware. Binaries available for Windows. Based on QEMU's core engine.

com . drivers and embedded Linux development. consulting. Kernel.com/docs Linux kernel Device drivers Architecture specifics Embedded Linux system development Free Electrons.Related documents All our technical presentations on http://free­electrons. http//free­electrons. training and support.

 Kernel. suggestions.com/).. consulting  and training services performed by the authors of these  documents (see http://free­electrons. to increase their visibility in search engine results.. colleagues and with the local Free Software community. By sending corrections.How to help You can help us to improve and maintain this document. http//free­electrons.com . drivers and embedded Linux development. consulting. Free Electrons. By adding links on your website to our on­line materials. contributions and  translations By asking your organization to order development. training and support. By sharing this document with your friends.

 uClinux Development and profiling tools Lightweight tools for embedded systems Root filesystem creation Audio and multimedia System optimization Free Electrons Our services Custom Development System integration Embedded Linux demos and prototypes System optimization Application and interface development Consulting and technical support Help in decision making System architecture System design and performance review Development tool and application support Investigating issues and fixing tool bugs .Linux kernel Linux device drivers Board support code Mainstreaming kernel code Kernel debugging Embedded Linux Training All materials released with a free license! Unix and GNU/Linux basics Linux kernel and drivers development Real­time Linux.

Sign up to vote on this title
UsefulNot useful