The ARM processor is popular in the embedded space because it has the best power consumption to performance ratio, meaning it has the longest battery life and smallest amount of heat generated for a given computing task. For more information, see the architectures page.
QEMU 0.11 - ARMv4l, little endian, soft float, OABI
tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com> mice: PS/2 mouse device common for all mice rtc-pl031 dev:e8: rtc core: registered pl031 as rtc0 TCP cubic registered NET: Registered protocol family 17 rtc-pl031 dev:e8: setting system clock to 2009-11-07 03:13:47 UTC (1257563627) VFS: Mounted root (squashfs filesystem) readonly on device 8:0. Freeing init memory: 92K eth0: link up, 100Mbps, full-duplex, lpa 0x05E1 Not using distcc. Type exit when done. /home # cat /proc/cpuinfo Processor : ARM926EJ-S rev 5 (v5l) BogoMIPS : 346.52 Features : swp half thumb fastmult edsp java CPU implementer : 0x41 CPU architecture: 5TEJ CPU variant : 0x0 CPU part : 0x926 CPU revision : 5 Hardware : ARM-Versatile PB Revision : 0000 Serial : 0000000000000000 /home #
Lorem ipsum dolor sit amet consectetuer tellus orci lacinia lacinia semper. Lorem eros vitae a nec hendrerit orci ante augue ante sociis. Vivamus condimentum lorem interdum Donec mus Donec Mauris semper Cras Nullam. Amet id libero auctor pulvinar pulvinar In hendrerit id Nunc risus. Nec ac fringilla Pellentesque suscipit cursus Nullam odio netus tellus nibh.
QEMU 0.11 - ARMv4l, little endian, soft float, EABI
mice: PS/2 mouse device common for all mice rtc-pl031 dev:e8: rtc core: registered pl031 as rtc0 TCP cubic registered NET: Registered protocol family 17 VFP support v0.3: implementor 41 architecture 1 part 10 variant 9 rev 0 rtc-pl031 dev:e8: setting system clock to 2009-11-07 07:31:08 UTC (1257579068) VFS: Mounted root (squashfs filesystem) readonly on device 8:0. Freeing init memory: 92K eth0: link up, 100Mbps, full-duplex, lpa 0x05E1 Not using distcc. Type exit when done. /home # cat /proc/cpuinfo Processor : ARM926EJ-S rev 5 (v5l) BogoMIPS : 371.09 Features : swp half thumb fastmult vfp edsp java CPU implementer : 0x41 CPU architecture: 5TEJ CPU variant : 0x0 CPU part : 0x926 CPU revision : 5 Hardware : ARM-Versatile PB Revision : 0000 Serial : 0000000000000000 /home #
Lorem ipsum dolor sit amet consectetuer tellus orci lacinia lacinia semper. Lorem eros vitae a nec hendrerit orci ante augue ante sociis. Vivamus condimentum lorem interdum Donec mus Donec Mauris semper Cras Nullam. Amet id libero auctor pulvinar pulvinar In hendrerit id Nunc risus. Nec ac fringilla Pellentesque suscipit cursus Nullam odio netus tellus nibh.
Mips implementations are currently primarily used in many embedded systems such as the Series2 TiVo, Windows CE devices, Cisco routers, residential gateways, and video game consoles like the Nintendo 64 and Sony PlayStation, PlayStation 2, and PlayStation Portable handheld system. Until late 2006, they were also used in many of SGI's computer products. MIPS implementations were also used by Digital Equipment Corporation, NEC, Pyramid Technology, Siemens Nixdorf, Tandem Computers and others during the late 1980s and 1990s. In the mid to late 1990s, it was estimated that one in three RISC microprocessors produced were MIPS implementations.
For more information, see the architectures page.
QEMU 0.11
tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com> mice: PS/2 mouse device common for all mice rtc-pl031 dev:e8: rtc core: registered pl031 as rtc0 TCP cubic registered NET: Registered protocol family 17 rtc-pl031 dev:e8: setting system clock to 2009-11-07 03:13:47 UTC (1257563627) VFS: Mounted root (squashfs filesystem) readonly on device 8:0. Freeing init memory: 92K eth0: link up, 100Mbps, full-duplex, lpa 0x05E1 Not using distcc. Type exit when done. /home # cat /proc/cpuinfo Processor : ARM926EJ-S rev 5 (v5l) BogoMIPS : 346.52 Features : swp half thumb fastmult edsp java CPU implementer : 0x41 CPU architecture: 5TEJ CPU variant : 0x0 CPU part : 0x926 CPU revision : 5 Hardware : ARM-Versatile PB Revision : 0000 Serial : 0000000000000000 /home #
Lorem ipsum dolor sit amet consectetuer tellus orci lacinia lacinia semper. Lorem eros vitae a nec hendrerit orci ante augue ante sociis. Vivamus condimentum lorem interdum Donec mus Donec Mauris semper Cras Nullam. Amet id libero auctor pulvinar pulvinar In hendrerit id Nunc risus. Nec ac fringilla Pellentesque suscipit cursus Nullam odio netus tellus nibh.
QEMU 0.11
mice: PS/2 mouse device common for all mice rtc-pl031 dev:e8: rtc core: registered pl031 as rtc0 TCP cubic registered NET: Registered protocol family 17 VFP support v0.3: implementor 41 architecture 1 part 10 variant 9 rev 0 rtc-pl031 dev:e8: setting system clock to 2009-11-07 07:31:08 UTC (1257579068) VFS: Mounted root (squashfs filesystem) readonly on device 8:0. Freeing init memory: 92K eth0: link up, 100Mbps, full-duplex, lpa 0x05E1 Not using distcc. Type exit when done. /home # cat /proc/cpuinfo Processor : ARM926EJ-S rev 5 (v5l) BogoMIPS : 371.09 Features : swp half thumb fastmult vfp edsp java CPU implementer : 0x41 CPU architecture: 5TEJ CPU variant : 0x0 CPU part : 0x926 CPU revision : 5 Hardware : ARM-Versatile PB Revision : 0000 Serial : 0000000000000000 /home #
Lorem ipsum dolor sit amet consectetuer tellus orci lacinia lacinia semper. Lorem eros vitae a nec hendrerit orci ante augue ante sociis. Vivamus condimentum lorem interdum Donec mus Donec Mauris semper Cras Nullam. Amet id libero auctor pulvinar pulvinar In hendrerit id Nunc risus. Nec ac fringilla Pellentesque suscipit cursus Nullam odio netus tellus nibh.
Lorem ipsum dolor sit amet consectetuer metus lorem id tincidunt et. Orci dui Ut id interdum nibh Cum risus sapien sodales vitae. Justo pede sociis nec consectetuer pede at gravida justo egestas quis. Mauris nec congue congue mi nulla ante nibh pharetra non congue. Id ac nibh leo id sed id Nunc velit tortor morbi. Pellentesque libero et id dapibus consectetuer a interdum pellentesque Maecenas morbi. Aenean Curabitur quis facilisi cursus nulla nulla Nulla Morbi nonummy accumsan. Sed eget nec nunc adipiscing suscipit nulla eu et quis magnis. Porttitor Nunc pellentesque justo malesuada turpis purus tempus urna natoque tincidunt. Neque ridiculus urna nibh Morbi feugiat ante semper nibh est felis. Sed tempus dictum dolor ut libero vestibulum fermentum pellentesque montes fames. Lacus enim ante fermentum lorem vitae nunc lacus Integer lacus Maecenas. Vivamus.
QEMU 0.11
tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com> mice: PS/2 mouse device common for all mice rtc-pl031 dev:e8: rtc core: registered pl031 as rtc0 TCP cubic registered NET: Registered protocol family 17 rtc-pl031 dev:e8: setting system clock to 2009-11-07 03:13:47 UTC (1257563627) VFS: Mounted root (squashfs filesystem) readonly on device 8:0. Freeing init memory: 92K eth0: link up, 100Mbps, full-duplex, lpa 0x05E1 Not using distcc. Type exit when done. /home # cat /proc/cpuinfo Processor : ARM926EJ-S rev 5 (v5l) BogoMIPS : 346.52 Features : swp half thumb fastmult edsp java CPU implementer : 0x41 CPU architecture: 5TEJ CPU variant : 0x0 CPU part : 0x926 CPU revision : 5 Hardware : ARM-Versatile PB Revision : 0000 Serial : 0000000000000000 /home #
Lorem ipsum dolor sit amet consectetuer tellus orci lacinia lacinia semper. Lorem eros vitae a nec hendrerit orci ante augue ante sociis. Vivamus condimentum lorem interdum Donec mus Donec Mauris semper Cras Nullam. Amet id libero auctor pulvinar pulvinar In hendrerit id Nunc risus. Nec ac fringilla Pellentesque suscipit cursus Nullam odio netus tellus nibh.
Screenshot - The boot messages produced by launching this system image under qemu (using the "run-emulator.sh" script included in each system image tarball), and then typing "cat /proc/cpuinfo" inside the emulated system.
Cross Compiler - A compiler which runs on a standard PC host (x86 or x86-64 Linux system) and produces output binaries for the specified $TARGET architecture (Linux binaries linked against uClibc). To use, extract the tarball and add its "bin" subdirectory to your $PATH, and then compile with $TARGET-cc as your compiler name, such as:
mips-cc root-filesystem-mips/usr/src/thread-hello2.c -lpthread -static -o hello
The "bin" subdirectory contains a bunch of tools prefixed with the $TARGET name followed by a dash, such as "powerpc-strip". The "lib" subdirectory contains shared libraries built for the target, including uClibc as the standard C library to link binaries against and uClibc++ as the standard C++ library. The "include" subdirectory contains the header files #included by programs.
Native Compiler - A compiler which runs on the $TARGET and produces output binaries which also run on the $TARGET.
You should be able to extract this inside an existing target system, add its "bin" directory to the $PATH, and use it as you would the cross compiler. (Except its binaries have no $TARGET- prefixes.)
Root Filesystem - A root filesystem for the target, suitable for chroot-ing into, containing the smallest/simplest Linux development environment capable of rebuilding itself from source code.
This system is based on busybox and uClibc, includes a native compiler toolchain (binutils, gcc, linux headers), additional development utilities (make, bash, distcc), and miscelaneous files and directories (such as some /etc files and an sbin/init.sh boot script).
System Image - A bootable linux kernel and filesystem image configured for use with the emulator QEMU.
The filesystem image contains the same set of files as the root filesystem tarball, this time packaged into a squashfs. It also has Linux kernel configured for qemu, and shell scripts to launch qemu to run this kernel with this filesystem image.
Basically you download this tarball, extract it, cd into the directory, and "./run-emulator.sh". This gives you a shell prompt inside the emulator, ala the above screen shots. Type "exit" when done.
Static Busybox Binary - Busybox implements hundreds of standard [LINK] command line utilities in a single binary, generally smaller than one megabyte.
Busybox is a "swiss army knife" binary, which behaves differently based on the name of its executable. This means that populating a directory of symlinks to the busybox binary can provide access to all these commands without requiring multiple copies of the binary.
This binary is statically linked against uClibc, so can be run independently on a target system, in a chroot environment, or via QEMU application emulation.
Static Dropbear Binary - Dropbear is a combination ssh server and client (and scp, and an encryption key generator) in a single executable (another "swiss army knife" binary) that weighs in at around 100k.
This binary is statically linked against uClibc for maximum portability.
Static Strace Binary - Strace is a debugging tool that runs a child process, sniffing all the child's system calls and printing a description of them to stderr, ala:
execve("/bin/false", ["false"], [/* 34 vars */]) = 0
brk(0) = 0x14ca000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb
e69a44000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
...
And so on. If a binary is failing or hanging, strace can give you an idea of what it's doing, at least when it interacts with the rest of the system.
This binary is statically linked against uClibc for maximum portability.