| Both sides previous revision Previous revision Next revision | Previous revision |
| embedded_linux [2011/09/10 11:30] – [Cross-compiling toolchains] admin | embedded_linux [2025/10/31 22:20] (current) – admin |
|---|
| | ====== Embedded linux components ====== |
| | |
| | * Toolchain |
| | * Boot loader |
| | * kernel |
| | * user space |
| |
| ====== Embedded linux tools ====== | ====== Embedded linux tools ====== |
| **U-Boot** - GPL boot loader | **U-Boot** - GPL boot loader |
| |
| **uClibc** is a small C standard library intended for embedded linux systems that was created to support uClinux, a version of linux that does not require an MMU. Currently, the kernel codebases for uClinux and linux are the same, having just different configurations (since the 2.6 Linux release). It is now supported by MontaVista, TimeSys and Windriver. A native uClibc toolchain can be built using the uClibc buildroot-based system. | **uClibc** is a small C standard library intended for embedded linux systems that was created to support uClinux, a version of linux that does not require an MMU. Currently, the kernel codebases for uClinux and linux are the same, having just different configurations (since the 2.6 Linux release). It is now supported by MontaVista, TimeSys and Windriver. A native uClibc toolchain can be built using the uClibc buildroot-based system (see [[http://free-electrons.com/docs/uclinux/]]). |
| |
| **Busybox** is a userland software running on top of the linux kernel, that provides the usual set of Unix tools (sh, ls....). Its size is less than 500KB when compiled statically with uClibc. | **[[http://linux.die.net/man/1/busybox|Busybox]]** is a userland software running on top of the linux kernel, that provides the usual set of Unix tools (sh, ls....). Its size is less than 500KB when compiled statically with uClibc. |
| |
| A cross-compiling toolchain for a specific architecture, like PowerPC or ARM, contains the following components: | A cross-compiling toolchain for a specific architecture, like PowerPC or ARM, contains the following components: |
| |
| libgcc is a low-level runtime library used by gcc-compiled code, e.g. to support complex arithmetic operations | libgcc is a low-level runtime library used by gcc-compiled code, e.g. to support complex arithmetic operations |
| | |
| | ===== Boot process ===== |
| | |
| | * https://www.0xkato.xyz/linux-boot/ |
| |
| |
| |
| * Code Sourcery G++, which includes their modified GNU C and C++ compilers and the Eclipse IDE framework | * Code Sourcery G++, which includes their modified GNU C and C++ compilers and the Eclipse IDE framework |
| * DENX ELDK (U-Boot) | * DENX ELDK (U-Boot). They offer [[http://www.denx.de/wiki/Training2/GenericOverview|training]]. See their further reading [[http://www.denx.de/wiki/view/DULG/MoreInformationFurtherReading|list]]. |
| * Free Electrons | * Free Electrons |
| * CrossWorks for ARM (using the GNU gcc compiler) | * CrossWorks for ARM (using the GNU gcc compiler) |
| |
| * [[http://crosstool-ng.org/|crosstool-ng]] | * [[http://crosstool-ng.org/|crosstool-ng]] |
| * [[http://buildroot.uclibc.org/|Buildroot]] is a set of Makefiles and patches that make it easy to generate a cross-compilation toolchain and root filesystem for your target Linux system using the uClibc C library. | * [[http://buildroot.uclibc.org/|Buildroot]] is a set of Makefiles and patches that make it easy to generate a cross-compilation toolchain and root filesystem for your target Linux system using the uClibc C library. Some instructions [[http://free-electrons.com/pub/conferences/2011/elce/using-buildroot-real-project.pdf|here]]. See http://autobuild.buildroot.org/. |
| * [[http://www.pengutronix.de/software/ptxdist/index_en.html|PTXDist]] is a tool to create a Linux **root filesystem** (kernel, scripts, programs and libraries) for small/embedded computer systems. PTXDist provides a defined and repeatable way of building toolchains and root filesystems, consisting of open-source packages and user applications/libraries. In contrast to tools like OpenWrt or Buildroot, its principal library is glibc and not one of its lightweight counterparts like uclibc or dietlibc. | * [[http://www.pengutronix.de/software/ptxdist/index_en.html|PTXDist]] is a tool to create a Linux **root filesystem** (kernel, scripts, programs and libraries) for small/embedded computer systems. PTXDist provides a defined and repeatable way of building toolchains and root filesystems, consisting of open-source packages and user applications/libraries. In contrast to tools like OpenWrt or Buildroot, its principal library is glibc and not one of its lightweight counterparts like uclibc or dietlibc. |
| * [[http://www.openembedded.org/index.php/Main_Page|Open Embedded]] is a software framework to create Linux distributions aimed at embedded devices. | * [[http://www.openembedded.org/index.php/Main_Page|Open Embedded]] is a software framework to create Linux distributions aimed at embedded devices. |
| [[http://wiki.qemu.org/Index.html|Qemu]] (supports x86, x86_64, ppc, arm, sparc, mips, m68k). User mode emulation on linux hosts (can run applications compiled for another CPU, e.g. we can run busybox compiled for ARM on a i386 linux host). | [[http://wiki.qemu.org/Index.html|Qemu]] (supports x86, x86_64, ppc, arm, sparc, mips, m68k). User mode emulation on linux hosts (can run applications compiled for another CPU, e.g. we can run busybox compiled for ARM on a i386 linux host). |
| |
| ARM emulators: | ARM-specific emulators: |
| * [[http://skyeye.sourceforge.net/index.shtml|Skyeye]] | * [[http://skyeye.sourceforge.net/index.shtml|Skyeye]] |
| * [[http://softgun.sourceforge.net/|Softgun]] | * [[http://softgun.sourceforge.net/|Softgun]] |
| http://www.embeddedlinuxconference.com/elc_europe10/sessions.html#Anders | http://www.embeddedlinuxconference.com/elc_europe10/sessions.html#Anders |
| |
| | ====== ELC2011 ====== |
| |
| | https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_yau.pdf |
| ====== Interesting links ====== | ====== Interesting links ====== |
| |