Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| embedded_linux [2011/09/01 09:11] – created admin | embedded_linux [2025/10/31 22:20] (current) – admin | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Embedded linux components ====== | ||
| + | * Toolchain | ||
| + | * Boot loader | ||
| + | * kernel | ||
| + | * user space | ||
| + | ====== Embedded linux tools ====== | ||
| + | **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 (see [[http:// | ||
| + | |||
| + | **[[http:// | ||
| + | |||
| + | A cross-compiling toolchain for a specific architecture, | ||
| + | |||
| + | * GCC compiler | ||
| + | * C libraries - glibc (1.7MB on ARM), uClibc (400kB on ARM), eglibc, dietlibc, newlibc, etc. It should be chosen at the toolchain generation time, as the GCC compiler has been compiled against a specific C library | ||
| + | * an assembler | ||
| + | * a linker/ | ||
| + | * associated binary utilities, binutils, which includes e.g. objdump and readelf | ||
| + | * kernel header files (required for compilation of the C library as well as many applications) | ||
| + | * a debugger, like gdb (equivalent to dbx in UNIX) (an useful tutorial is http:// | ||
| + | * trace tools like strace/ | ||
| + | |||
| + | libgcc is a low-level runtime library used by gcc-compiled code, e.g. to support complex arithmetic operations | ||
| + | |||
| + | ===== Boot process ===== | ||
| + | |||
| + | * https:// | ||
| + | |||
| + | |||
| + | ===== Cross-compiling toolchains ===== | ||
| + | |||
| + | * Code Sourcery G++, which includes their modified GNU C and C++ compilers and the Eclipse IDE framework | ||
| + | * DENX ELDK (U-Boot). They offer [[http:// | ||
| + | * Free Electrons | ||
| + | * CrossWorks for ARM (using the GNU gcc compiler) | ||
| + | * SnapGear (using the GNU gcc compiler) | ||
| + | * [[http:// | ||
| + | * Emdebian is Debian for embedded devices, providing different architectures: | ||
| + | * arm, using old ABI, by default generates armv5t code, retired in favour of armel. | ||
| + | * armel, new ARM EABI Little-endian, | ||
| + | * armhf, makes use of fpu, needs at least ARMv7 CPU with Thumb-2. In practice armel will be used for older CPUs (armv4t, armv5, armv6), and armhf for newer CPUs (armv7+VFP). | ||
| + | * (see also http:// | ||
| + | |||
| + | Other third party development tools (with their own compilers): | ||
| + | |||
| + | * ARM RealView Development Suite, RVDS4 (RVCT tools, including armcc, the ARM compiler), succesor of the ARM Developer Suite (ADS) | ||
| + | * Green Hills MULTI Integrated Development Environment | ||
| + | * [[http:// | ||
| + | * Keil Development Studio 5 (DS-5), using a modified GNU gcc compiler | ||
| + | * Keil [[http:// | ||
| + | |||
| + | We can build our own toolchain instead of using a third-party one, using tools like these: | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * Buildcross, used by emdebian | ||
| + | |||
| + | The above tools also build the needed **root filesystem**, | ||
| + | |||
| + | |||
| + | |||
| + | ===== Workstation emulators ===== | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | ARM-specific emulators: | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | |||
| + | ===== Flash utilities ===== | ||
| + | |||
| + | * Flash Magic (Windows) | ||
| + | * lpc21isp | ||
| + | |||
| + | |||
| + | ===== Debugging ===== | ||
| + | |||
| + | * OpenOCD | ||
| + | * gdb/ddd | ||
| + | |||
| + | |||
| + | ====== Embedded linux distributions ====== | ||
| + | |||
| + | * [[http:// | ||
| + | * Angstrom, using also the Open Embedded framework. | ||
| + | |||
| + | |||
| + | ====== ELC2010 ====== | ||
| + | |||
| + | Board bring up\\ | ||
| + | http:// | ||
| + | |||
| + | ====== ELC2011 ====== | ||
| + | |||
| + | https:// | ||
| ====== Interesting links ====== | ====== Interesting links ====== | ||
| + | |||
| + | podcast on embedded linux:\\ | ||
| + | http:// | ||
| + | |||
| + | good embedded linux documents\\ | ||
| + | http:// | ||