... ) and can boot several operating systems (Linux, uClinux, and others)Softgun: http://softgun.sourceforge.netVirtual ARM system with many virtual onboard peripherals. Boots Linux.SWARM Software ARM arm7 emulatorhttp://www.cl.cam.ac.uk/~mwd24/phd/swarm.htmlCan run uClinux13 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008klibchttp://www.kernel.org/pub/linux/libs/klibc/“Kernel C library”Tiny and minimalistic C library designed for use in an initramfs at boot time (alternative to initrds).Fine for the creation of simple shell scripts.Ships with small executables for use in shells, built with klibc,and a klcc compiler to compile your own applications.Not elaborate enough to support BusyBox applications.Useful details in http://en.wikipedia.org/wiki/Klibc19 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008Platform specific toolchains (1)ARMCode Sourcery (supports GNU/Linux, EABI and uClinux):http://www.codesourcery.com/gnu_toolchains/arm/Also available for Windows workstations.MIPShttp://www.linuxmips.org/wiki/Toolchains (useful links)6 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008Training contents (3)AnnexesAutomatic system generation with BitBake / OpenEmbedded33 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008Other emulatorsColdFire emulatorhttp://www.slicer.ca/coldfire/Can boot uClinux37 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008Minicom (1)Definition: serial communication programAvailable in all GNU / Linux distributionsCapabilities (all through a serial link):Serial console to a remote Unix systemFile transferModem control and dialupSerial port configuration50 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008Denx Software Engineeringhttp://denx.deCreated by Wolfgang Denk,the author of the UBoot bootloader.Create and support the Embedded Linux Development Kit (ELDK),a complete and well documented development environment.This kit is not only Free Software,it can be downloaded freely by anyone.A great community member and contributor!15 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008 Free Software tools for embedded systems GNU / Linux workstationCrosscompiling toolchains9 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008uClibchttp://www.uclibc.org/ from CodePoet ConsultingLicense: LGPLLightweight C library for small embedded systems, with most features though.The whole Debian Woody was ported to it ... Support servicesUseful if you don't have your own support resourcesLong term support commitment, even for versions considered as obsolete by the community, but not by your users!44 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008Commercial toolsetsCaution: commercial doesn't mean proprietary!Vendors play fair with the GPL and do make their source code available to their users, and most of the time, to the community.As long as they distribute the sources to their users, the GPL doesn't require vendors to share their sources with any third party.No issue with all the GPL sources developed by or with the community.Graphical toolkits developed by the vendors look proprietary. Their licenses are not advertised on their websites! You have to be a customer to know or get a free preview kit to know.35 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008 Free Software tools for embedded systems GNU / Linux workstationVarious tools34 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008Emulators SummarySystem emulatorsUseful to experiment with a full system, including the kernelqemu: x86, x86_64, arm, sparc, ppc, mipsSkyEye: several arm architecturesUser emulatorsUseful to run or debug user space binaries for other CPUsqemu: x86, arm, sparc, ppc, mips20 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008Platform specific toolchains (2)ColdfireCode Sourcery (supports ELF, GNU/Linux and uClinux):http://www.codesourcery.com/gnu_toolchains/coldfirePowerPCCode Sourcery (supports GNU/Linux and EABI)http://www.codesourcery.com/gnu_toolchains/power.html49 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008Sysgo Koan Softwarehttp://sysgo.comELinOS development toolset,in particular based on Eclipseand the Linux Trace Toolkit.Includes FreeToolBox, a freely downloadable compiling and rootfs creating toolchain.Supports i386, arm and ppc.Hard realtime support with their own microkernel (PikeOS),an approach similar to RTAI.http://koansoftware.comMakers of KaeilOS(http://koansoftware.com/kaeilos/), a GPL embedded Linux distribution for industrial applications.KaeilOS supports i386 and popular arm platforms. Other platforms supported upon request.Includes several graphical toolkits and supports hard realtime (RTAI, Xenomai, preemption patches).Unfortunately, KaeilOS is GPL but not available for public download.16 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008Standalone toolchain buildBuilding a crosscompiling toolchain by yourself is a difficult and painful task! Can take days or weeks!Lots of details to learn. Several components to build(building gcc twice: once for gcc + once for compilers that need the C library).Lots of decisions to make(such as C library version and configuration for your platform)Need kernel headers and C library sourcesNeed to be familiar with current gcc issues and patches on your platformUseful to be familiar with building and configuring toolshttp://www.aleph1.co.uk/armlinux/docs/toolchain/toolchHOWTO.pdfcan show you how fun it can be!21 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008Toolchain building utilitiesBuildroot: http://buildroot.uclibc.org/Dedicated Makefile to build uClibc based toolchainsand even entire root filesystems.Downloads sources and applies patches.Crosstool: http://www.kegel.com/crosstool/Dedicated script to build glibc based toolchainsDoesn’t support uClibc yet.Downloads sources and applies patches.26 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008Toolchains useful resourceseLinux.org toolchain page:http://elinux.org/Tool_Chains29 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008 Free Software tools for embedded systems GNU / Linux workstationEmulators8 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008glibchttp://www.gnu.org/software/libc/License: LGPLC library from the GNU projectDesigned for performance, standards compliance and portabilityFound on all GNU / Linux host systemsQuite big for small embedded systems: about 1.7 MB on Familiar Linux iPAQs (libc: 1.2 MB, libm: 500 KB)36 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008chrootAvailable in all GNU/Linux distributionsUsage:chroot <dir> [command]Runs a command or an interactive shellwith a special root directory.Standard usage: Internet serversServices executed in chroot jails: even when compromised,the service cannot gain access to the rest of the system.Usage for embedded system development:Develop and test a new root filesystem on the development host.Very easy to use when the host and target have the same CPU instruction set.Used by LFS (Linux From Scratch).Also used by Scratchbox: Qemu makes the usage of target binaries transparent./binlibetchttp/libetcbinchrootjail ... Support servicesUseful if you don't have your own support resourcesLong term support commitment, even for versions considered as obsolete by the community, but not by your users!44 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008Commercial toolsetsCaution: commercial doesn't mean proprietary!Vendors play fair with the GPL and do make their source code available to their users, and most of the time, to the community.As long as they distribute the sources to their users, the GPL doesn't require vendors to share their sources with any third party.No issue with all the GPL sources developed by or with the community.Graphical toolkits developed by the vendors look proprietary. Their licenses are not advertised on their websites! You have to be a customer to know or get a free preview kit to know.35 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008 Free Software tools for embedded systems GNU / Linux workstationVarious tools34 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008Emulators SummarySystem emulatorsUseful to experiment with a full system, including the kernelqemu: x86, x86_64, arm, sparc, ppc, mipsSkyEye: several arm architecturesUser emulatorsUseful to run or debug user space binaries for other CPUsqemu: x86, arm, sparc, ppc, mips20 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008Platform specific toolchains (2)ColdfireCode Sourcery (supports ELF, GNU/Linux and uClinux):http://www.codesourcery.com/gnu_toolchains/coldfirePowerPCCode Sourcery (supports GNU/Linux and EABI)http://www.codesourcery.com/gnu_toolchains/power.html49 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008Sysgo Koan Softwarehttp://sysgo.comELinOS development toolset,in particular based on Eclipseand the Linux Trace Toolkit.Includes FreeToolBox, a freely downloadable compiling and rootfs creating toolchain.Supports i386, arm and ppc.Hard realtime support with their own microkernel (PikeOS),an approach similar to RTAI.http://koansoftware.comMakers of KaeilOS(http://koansoftware.com/kaeilos/), a GPL embedded Linux distribution for industrial applications.KaeilOS supports i386 and popular arm platforms. Other platforms supported upon request.Includes several graphical toolkits and supports hard realtime (RTAI, Xenomai, preemption patches).Unfortunately, KaeilOS is GPL but not available for public download.16 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008Standalone toolchain buildBuilding a crosscompiling toolchain by yourself is a difficult and painful task! Can take days or weeks!Lots of details to learn. Several components to build(building gcc twice: once for gcc + once for compilers that need the C library).Lots of decisions to make(such as C library version and configuration for your platform)Need kernel headers and C library sourcesNeed to be familiar with current gcc issues and patches on your platformUseful to be familiar with building and configuring toolshttp://www.aleph1.co.uk/armlinux/docs/toolchain/toolchHOWTO.pdfcan show you how fun it can be!21 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008Toolchain building utilitiesBuildroot: http://buildroot.uclibc.org/Dedicated Makefile to build uClibc based toolchainsand even entire root filesystems.Downloads sources and applies patches.Crosstool: http://www.kegel.com/crosstool/Dedicated script to build glibc based toolchainsDoesn’t support uClibc yet.Downloads sources and applies patches.26 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008Toolchains useful resourceseLinux.org toolchain page:http://elinux.org/Tool_Chains29 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008 Free Software tools for embedded systems GNU / Linux workstationEmulators8 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008glibchttp://www.gnu.org/software/libc/License: LGPLC library from the GNU projectDesigned for performance, standards compliance and portabilityFound on all GNU / Linux host systemsQuite big for small embedded systems: about 1.7 MB on Familiar Linux iPAQs (libc: 1.2 MB, libm: 500 KB)36 Free Software tools for embedded systems © Copyright 20042008, Free ElectronsCreative Commons AttributionShareAlike 2.5 licensehttp://freeelectrons.comJan 24, 2008chrootAvailable in all GNU/Linux distributionsUsage:chroot <dir> [command]Runs a command or an interactive shellwith a special root directory.Standard usage: Internet serversServices executed in chroot jails: even when compromised,the service cannot gain access to the rest of the system.Usage for embedded system development:Develop and test a new root filesystem on the development host.Very easy to use when the host and target have the same CPU instruction set.Used by LFS (Linux From Scratch).Also used by Scratchbox: Qemu makes the usage of target binaries transparent./binlibetchttp/libetcbinchrootjail...