Mercurial > hg > aboriginal
changeset 881:0da87d1ef528
Update the web page. Put the left-side nav bar back, move about page to "about.html" and make news.html the default index. Add architectures page. Note that IRC discussion is now on #edev.
author | Rob Landley <rob@landley.net> |
---|---|
date | Sun, 08 Nov 2009 21:02:19 -0600 |
parents | b0aeb3446aa5 |
children | d81382a8bb66 |
files | www/about.html www/architectures.html www/documentation.html www/footer.html www/header.html www/history.html www/index.html www/news.html www/screenshots/index.html |
diffstat | 9 files changed, 477 insertions(+), 61 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/about.html Sun Nov 08 21:02:19 2009 -0600 @@ -0,0 +1,53 @@ +<!--#include file="header.html" --> + +<h2><a href=news.html>News: 0.9.8 released November 7, 2009</a></h2> + +<b><h1><a href=documentation.html>What is Firmware Linux?</a></h1></b> + +<blockquote> +<p>Firmware Linux is an embedded Linux build system, designed to eliminate +the need for cross compiling.</p> + +<p>The build system is a series of bash scripts which create a small native +Linux development environment for each target, runnable on real hardware or +under emulators such as <a href=http://qemu.org>QEMU</a>.</p> + +<p>Currently supported targets include arm, mips, powerpc, x86, and x86-64. +Partial support is available for sparc, sh4, and m68k.</p> + +<p>For more information, see <a href=documentation.html>the documentation +page</a>.</p> +</blockquote> + +<b><h1><a href=downloads>Downloading Firmware Linux</a></h1></b> + +<blockquote> +<b><h2><a href=downloads>Source Code</a></h2></b> +<p>The current source tarball is +<a href=downloads/firmware-0.9.7.tar.bz2>Firmware Linux version 0.9.7</a>. +This is the series of shell scripts you run to create the various binary +images. See the <a href=downloads/README>README</a> for usage instructions, +and the <a href=news.html>release notes</a>.</p> + +<p>Several <a href=downloads/binaries>prebuilt binary images</a> +are available, based on the current Firmware Linux release. The +<a href=downloads/README>README</a> describes each tarball. The +release notes on the <a href=news.html>news page</a> explain recent +changes.</p> + +</blockquote> + +<b><h1><a href=/hg/firmware>Development</a></h1></b> + +<p>The project maintains a <a href=/hg/firmware>development repository</a> +using the Mercurial source control system. This includes RSS feeds for +<a href=/hg/firmware/rss-log>each checkin</a> +and for <a href=/hg/firmware/rss-tags>new releases</a>.</p> + +<p>Questions about Firmware Linux should be addressed to the project's +<a href=http://lists.impactlinux.com/listinfo.cgi/firmware-impactlinux.com>mailing +list</a>, or the IRC channel #firmware on irc.freenode.org. The project +maintainer's <a href=http://landley.net/notes.html>blog</a> often includes notes about +ongoing Firmware Linux development.</p> + +<!--#include file="footer.html" -->
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/architectures.html Sun Nov 08 21:02:19 2009 -0600 @@ -0,0 +1,107 @@ +<html> +<title>Target architectures</title> +<body> + +<!--#include file="header.html" --> + +<hr /><h1><a name="arm" \><center>ARM</center></h1> + +<p>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.</p> + +<h2>Processor vs archtecture</h2> + +<p>Although ARM hardware has many different processor designs with varying +clock speeds, cache sizes, and integrated peripherals, from a software +perspective what matters is ARM +<a href=http://www.arm.com/products/CPUs/architecture.html>architectures</a>, which are the different +instruction sets a compiler can produce. The architecture names have a "v" +in them and the processor designs don't, so "ARM922T" is a hardware processor +design which implements the "ARMv4T" software instruction set.</p> + +<p>The basic architectures are numbered: ARMv3, ARMv4, ARMv5, ARMv6, and +ARMv7. An ARMv5 capable processor can run ARMv4 binaries, ARMv6 can run ARMv5, +and so on. Each new architecture is a superset of the old ones, and the main +reason to compile for newer platforms is efficiency: faster speed and better +battery life. (I.E. they work about like i386, i486, i586, and i686 do in +the x86 world. Recompiling ARMv4 code to ARMv5 code provides about a 25% +speedup on the same hardware.)</p> + +<p>The oldest architecture this compatability goes back to is ARMv3 (which +introduced 32-bit addressing), but that hardware is now obsolete. (Not just no +longer being sold, but mostly cycled out of the installed base.) The oldest +architecture still in use is "ARMv4", which should run on any ARM hardware +still in use today (except ARMv7M, which is ARM in name only).</p> + +<h2>Architecture extensions</h2> + +<p>ARM architectures can have several instruction set extensions, indicated +by letters after the ARMv# part. Some (such as the letter "E" denoting the +"Jazelle" bytecode interpreter, which provides hardware acceleration for +running Java bytecode) can safely be ignored if you're not using them, and +others are essentially always there in certain architectures (such as the DSP +extension signified by the letter "E" which always seems to be present in +ARMv5). But some are worth mentioning:</p> + +<p>The "Thumb" extension (ARMv4T) adds +a smaller instruction set capable of fitting more code in a given amount +of memory. Unfortunately thumb instructions sometimes run more slowly, and +the instruction set isn't complete enough to implement a kernel, so they +supplement rather than replace the conventional ARM instruction set. Note +that all ARMv5 and later processors include Thumb support by default, only +ARMv4T offers it as an extension. Also, a new "Thumb2" fixes most of the +deficiencies of the original Thumb, and is part of the ARMv7 architecture.</p> + +<p>The VFP (Vector Floating Point) coprocessor provides hardware floating +point acceleration. There are some older hardware floating point options, +and some newer ones backwards compatible with VFP, but in general you can +treat a chip as either "software floating point" or "VFP".</p> + +<p>The other detail is "l" vs "b" for little-endian and big-endian. +In theory ARM can do both (this is a compiler distinction, not a hardware +distinction), but in practice little-endian is almost universally +used on ARM, and most boards are wired up to support little-endian only even if +the processor itself can theoretically handle both.</p> + +<p>So for example, "armv4tl" is ARMv4 with Thumb extensions, little endian.</p> + +<h2>Application Binary Interface</h2> + +<p>Linux initially implemented a somewhat ad-hoc ABI for ARM with +<a href=http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/Why-ARMs-EABI-matters/>poor +performance and several limitations</a>, and when ARM got around to documenting +a new one the main downside was that it was incompatible with the old +binaries.</p> + +<p>So ARM has two ABIs that can run on the same hardware, the old one is +called OABI and the new one is +<a href=http://wiki.debian.org/ArmEabiPort>EABI</a>. (This is a bit like +the way BSD binaries won't run under Linux even though the hardware's the +same, or the long ago switch from +<a href=http://www.linuxjournal.com/article/1059>aout to ELF</a> executable +formats.</p> + +<p>The oldest hardware that can run EABI is ARMv4T, so ARMv4 hardware +without the Thumb extensions still has to use OABI. (The kernel, C +library, and compiler must all agree which ABI is in use or the binaries +won't run.)</p> + +<h2>Further Reading</h2> + +<p>In theory the best reference for ARM processors is the +<a href=http://www.arm.com>website of ARM Limited</a>, but unfortunately +they make it somewhat hard to find information about their +<a href=http://www.arm.com/products/CPUs/ARM920T.html>older products</a> +and <a href=http://www.arm.com/products/CPUs/families/ARM7Family.html>many +of their pages</a> are more concerned with advertising their newest products +than giving the requested information. Wikipedia may be less frustrating, +and occasionally even accurate.</p> + +<hr /><h1><a name="mips" \><center>ARM</center></h1> +<hr /><h1><a name="powerpc" \><center>ARM</center></h1> +<hr /><h1><a name="sh" \><center>ARM</center></h1> +<hr /><h1><a name="sparc" \><center>ARM</center></h1> +<hr /><h1><a name="x86" \><center>ARM</center></h1> + +<!--#include file="footer.html" -->
--- a/www/documentation.html Sun Nov 08 16:05:48 2009 -0600 +++ b/www/documentation.html Sun Nov 08 21:02:19 2009 -0600 @@ -1,3 +1,5 @@ +<!--#include file="header.html" --> + <h1>Documentation for Firmware Linux</h1> <p>Note, this documentation is currently under construction. This is three @@ -2024,3 +2026,5 @@ you have a brick.)</p> --> + +<!--#include file="footer.html" -->
--- a/www/footer.html Sun Nov 08 16:05:48 2009 -0600 +++ b/www/footer.html Sun Nov 08 21:02:19 2009 -0600 @@ -1,7 +1,5 @@ </td></tr></table> <hr /> <table width="100%"> -<tr><td>Copyright 2002, 2008 Rob Landley <rob@landley.net></td></tr> +<tr><td>Copyright 2002, 2009 Rob Landley <rob@landley.net></td></tr> </table> -</body> -</html>
--- a/www/header.html Sun Nov 08 16:05:48 2009 -0600 +++ b/www/header.html Sun Nov 08 21:02:19 2009 -0600 @@ -1,9 +1,4 @@ -<html> -<head> -<title>Firmware Linux</title> -</head> -<body> -<table border=0 cellpadding=0 cellspacing=0> +<table border=0 cellpadding=4 cellspacing=0> <tr><td> <table border=0 cellspacing=1 cellpadding=4> <tr><td><h1>Firmware Linux</h1></td></tr> @@ -13,8 +8,9 @@ <tr><td valign=top> <b>About</b> <ul> - <li><a href="index.html">Intro</a></li> <li><a href="news.html">News</a></li> + <li><a href="about.html">About</a></li> + <li><a href="screenshots">Screenshots</a></li> <li><a href="documentation.html">Documentation</a></li> <li><a href="downloads/README">README</a></li> </ul> @@ -22,12 +18,13 @@ <ul> <li><a href="/hg/firmware">Mercurial Repository</a></li> <li><a href="downloads">Release Tarballs</a></li> + <li><a href="downloads/binaries">Prebuilt Binaries</a></li> </ul> <b>Development</b> <ul> + <li><a href="http://lists.impactlinux.com/listinfo.cgi/firmware-impactlinux.com">Mailing List</a></li> + <li>IRC #edev on irc.freenode.org</li> <li><a href="http://landley.net/notes.html">Maintainer's Blog</a></li> - <li><a href="http://lists.impactlinux.com/listinfo.cgi/firmware-impactlinux.com">Mailing List</a></li> - <li>IRC #firmware on irc.freenode.org</li> </ul> </td>
--- a/www/history.html Sun Nov 08 16:05:48 2009 -0600 +++ b/www/history.html Sun Nov 08 21:02:19 2009 -0600 @@ -1,5 +1,7 @@ <title>History of Firmware Linux</title> +<!--#include file="header.html" --> + <h1>Where did "Firmware Linux" come from? Our story so far...</h1> <p>My name is Rob Landley, and I've been working on Firmware Linux on and off
--- a/www/index.html Sun Nov 08 16:05:48 2009 -0600 +++ b/www/index.html Sun Nov 08 21:02:19 2009 -0600 @@ -1,49 +1,1 @@ -<h2><a href=news.html>News: 0.9.8 released November 7, 2009</a></h2> - -<b><h1><a href=documentation.html>What is Firmware Linux?</a></h1></b> - -<blockquote> -<p>Firmware Linux is an embedded Linux build system, designed to eliminate -the need for cross compiling.</p> - -<p>The build system is a series of bash scripts which create a small native -Linux development environment for each target, runnable on real hardware or -under emulators such as <a href=http://qemu.org>QEMU</a>.</p> - -<p>Currently supported targets include arm, mips, powerpc, x86, and x86-64. -Partial support is available for sparc, sh4, and m68k.</p> - -<p>For more information, see <a href=documentation.html>the documentation -page</a>.</p> -</blockquote> - -<b><h1><a href=downloads>Downloading Firmware Linux</a></h1></b> - -<blockquote> -<b><h2><a href=downloads>Source Code</a></h2></b> -<p>The current source tarball is -<a href=downloads/firmware-0.9.7.tar.bz2>Firmware Linux version 0.9.7</a>. -This is the series of shell scripts you run to create the various binary -images. See the <a href=downloads/README>README</a> for usage instructions, -and the <a href=news.html>release notes</a>.</p> - -<p>Several <a href=downloads/binaries>prebuilt binary images</a> -are available, based on the current Firmware Linux release. The -<a href=downloads/README>README</a> describes each tarball. The -release notes on the <a href=news.html>news page</a> explain recent -changes.</p> - -</blockquote> - -<b><h1><a href=/hg/firmware>Development</a></h1></b> - -<p>The project maintains a <a href=/hg/firmware>development repository</a> -using the Mercurial source control system. This includes RSS feeds for -<a href=/hg/firmware/rss-log>each checkin</a> -and for <a href=/hg/firmware/rss-tags>new releases</a>.</p> - -<p>Questions about Firmware Linux should be addressed to the project's -<a href=http://lists.impactlinux.com/listinfo.cgi/firmware-impactlinux.com>mailing -list</a>, or the IRC channel #firmware on irc.freenode.org. The project -maintainer's <a href=http://landley.net/notes.html>blog</a> often includes notes about -ongoing Firmware Linux development.</p> +news.html \ No newline at end of file
--- a/www/news.html Sun Nov 08 16:05:48 2009 -0600 +++ b/www/news.html Sun Nov 08 21:02:19 2009 -0600 @@ -1,3 +1,5 @@ +<!--#include file="header.html" --> + <b><h1>News</h1></b> <h2>November 7, 2009</h2> @@ -762,3 +764,5 @@ <h2>August 6, 2006</h2> <p>Mecurial repository created. Nothing to see yet, move along...</p> + +<!--#include file="footer.html" -->
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/screenshots/index.html Sun Nov 08 21:02:19 2009 -0600 @@ -0,0 +1,299 @@ +<html> +<title>Available Targets</title> +<body> +<p>Each $TARGET includes some or all of the following links. Click on +the link name to get a description.</p> +<ul> +<li><a href="#screenshot">Screenshot</a></li> +<li><a href="#crosscompiler">Cross Compiler</a></li> +<li><a href="#nativecompiler">Native Compiler</a></li> +<li><a href="#rootfilesystem">Root Filesystem</a></li> +<li><a href="#systemimage">System Image</a></li> +<li><a href="#busybox">Static Busybox Binary</a></li> +<li><a href="#dropbear">Static Dropbear Binary</a></li> +<li><a href="#strace">Static Strace Binary</a></li> +</ul> + +<table> +<tr> +<td colspan=100%> +<hr /><h1><center><a href="../architectures.html#arm">ARM</a></center></h1> +<hr /> +</td> +</tr> + +<tr> + +<td> +<center> +<h2>ARMv4l</h2> +<p>ARMv4, little endian, soft float, OABI</p> +<table bgcolor=#000000><tr><td><font color=#ffffff size=-2><pre> +<!--#include file="screenshot-armv4l.html" --> +</pre></font></td></tr></table> +</center> +</td> + +<td> +<ul> +<li><a href=screenshot-armv4l.txt>screenshot</a></li> +<li><a href=cross-compiler-armv4l.tar.bz2>cross compiler</a></li> +<li><a href=native-compiler-armv4l.tar.bz2>native compiler</a></li> +<li><a href=root-filesystem-armv4l.tar.bz2>root filesystem</a></li> +<li><a href=system-image-armv4l.tar.bz2>system image</a></li> +<hr /> +<li><a href=busybox-armv4l>busybox binary</a></li> +<li><a href=dropbearmulti-armv4l>dropbear binary</a></li> +<li><a href=strace-armv4l>strace binary</a></li> +</ul> +</center> +</td> +</tr> + +<tr> +<td> +<center> +<h2>ARMv4tl</h2> +<p>ARMv4t, little endian, soft float, EABI</p> +<table bgcolor=#000000><tr><td><font color=#ffffff size=-2><pre> +<!--#include file="screenshot-armv4tl.html" --> +</pre></font></td></tr></table> +</center> +</td> + +<td> +<ul> +<li><a href=screenshot-armv4tl.txt>screenshot</a></li> +<li><a href=cross-compiler-armv4tl.tar.bz2>cross compiler</a></li> +<li><a href=native-compiler-armv4tl.tar.bz2>native compiler</a></li> +<li><a href=root-filesystem-armv4tl.tar.bz2>root filesystem</a></li> +<li><a href=system-image-armv4tl.tar.bz2>system image</a></li> +<hr /> +<li><a href=busybox-armv4tl>busybox binary</a></li> +<li><a href=dropbearmulti-armv4tl>dropbear binary</a></li> +<li><a href=strace-armv4tl>strace binary</a></li> +</ul> +</center> +</td> +</tr> + +<tr> +<td> +<center> +<h2>ARMv5l</h2> +<p>ARMv5, little endian, VFP, EABI</p> +<table bgcolor=#000000><tr><td><font color=#ffffff size=-2><pre> +<!--#include file="screenshot-armv5l.html" --> +</pre></font></td></tr></table> +</center> +</td> + +<td> +<ul> +<li><a href=screenshot-armv5l.txt>screenshot</a></li> +<li><a href=cross-compiler-armv5l.tar.bz2>cross compiler</a></li> +<li><a href=native-compiler-armv5l.tar.bz2>native compiler</a></li> +<li><a href=root-filesystem-armv5l.tar.bz2>root filesystem</a></li> +<li><a href=system-image-armv5l.tar.bz2>system image</a></li> +<hr /> +<li><a href=busybox-armv5l>busybox binary</a></li> +<li><a href=dropbearmulti-armv5l>dropbear binary</a></li> +<li><a href=strace-armv5l>strace binary</a></li> +</ul> +</center> +</td> +</tr> + +<tr> +<td> +<center> +<h2>ARMv6l</h2> +<p>ARMv6, little endian, VFP, EABI</p> +<table bgcolor=#000000><tr><td><font color=#ffffff size=-2><pre> +<!--#include file="screenshot-armv6l.html" --> +</pre></font></td></tr></table> +</center> +</td> + +<td> +<ul> +<li><a href=screenshot-armv6l.txt>screenshot</a></li> +<li><a href=cross-compiler-armv6l.tar.bz2>cross compiler</a></li> +<li><a href=native-compiler-armv6l.tar.bz2>native compiler</a></li> +<li><a href=root-filesystem-armv6l.tar.bz2>root filesystem</a></li> +<li><a href=system-image-armv6l.tar.bz2>system image</a></li> +<hr /> +<li><a href=busybox-armv6l>busybox binary</a></li> +<li><a href=dropbearmulti-armv6l>dropbear binary</a></li> +<li><a href=strace-armv6l>strace binary</a></li> +</ul> +</center> +</td> +</tr> + +<tr> +<td colspan=100%> +<hr /><h1><center>i686</center></h1><hr /> +</td> +</tr> + + + +<tr> + +<td> +<center> +<h2>i686</h2> +<table bgcolor=#000000><tr><td><font color=#ffffff size=-2><pre> +<!--#include file="screenshot-i686.html" --> +</pre></font></td></tr></table> +</center> +</td> + +<td> +<ul> +<li><a href=screenshot-i686.txt>screenshot</a></li> +<li><a href=cross-compiler-i686.tar.bz2>cross compiler</a></li> +<li><a href=native-compiler-i686.tar.bz2>native compiler</a></li> +<li><a href=root-filesystem-i686.tar.bz2>root filesystem</a></li> +<li><a href=system-image-i686.tar.bz2>system image</a></li> + +<hr /> + +<li><a href=i686-busybox>busybox binary</a></li> +<li><a href=i686-dropbearmulti>dropbear binary</a></li> +<li><a href=i686-strace>strace binary</a></li> +</ul> +</center> +</td> + +</tr> +</table> + + + + +<ul> +<hr /> +<li> +<p><a name="screenshot" /><b>Screenshot</b> - 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.</p> +</li> + +<hr /> + +<li> +<p><a name="crosscompiler" /><b>Cross Compiler</b> - 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:</p> + +<blockquote> +<pre> +mips-cc root-filesystem-mips/usr/src/thread-hello2.c -lpthread -static -o hello +</pre> +</blockquote> + +<p>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.</p> +</li> + +<hr /> + +<li> +<p><a name="nativecompiler" /><b>Native Compiler</b> - A compiler which runs on the $TARGET and +produces output binaries which also run on the $TARGET.</p> + +<p>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.)</p> +</li> + +<hr /> + +<li> +<p><a name="rootfilesystem" /><b>Root Filesystem</b> - 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.</p> + +<p>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).</p> +</li> + +<hr /> + +<li> +<p><a name="systemimage" /><b>System Image</b> - A bootable linux kernel and filesystem image +configured for use with the emulator QEMU.</p> + +<p>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.</p> +</li> + +<hr /> + +<li> +<p><a name="busybox" /><b>Static Busybox Binary</b> - Busybox implements +hundreds of standard [LINK] command line utilities in a single binary, +generally smaller than one megabyte.</p> + +<p>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.</p> + +<p>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.</p> +</li> + +<hr /> + +<li> +<p><a name="dropbear" /><b>Static Dropbear Binary</b> - 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.</p> + +<p>This binary is statically linked against uClibc for maximum +portability.</p> +</li> + +<hr /> + +<li> +<p><a name="strace" /><b>Static Strace Binary</b> - 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:</p> + +<blockquote> +<pre> +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) +... +</pre> +</blockquote> + +<p>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.</p> + +<p>This binary is statically linked against uClibc for maximum portability.</p> +</li> +</ul> + +</body> +</html>