| /** @mainpage Barebox |
| |
| Barebox is a bootloader that initializes a hardware and boots Linux and |
| maybe other operating systems or bare metal code on a variety of |
| processors. It was initialy derived from U-Boot and captures up with |
| several of it's ideas, so users being familiar with U-Boot should come |
| into production quickly with Barebox. |
| |
| However, as the Barebox developers are highly addicted to the Linux |
| kernel, it's coding style and code quality, we try to stick as closely |
| as possible to the methodologies and techniques developed in Linux. In |
| addition we have a strong background in POSIX, so you'll find several |
| good old Unix traditions realized in Barebox as well. |
| |
| @par Highlights: |
| |
| - <b>POSIX File API:</b><br> |
| @a Barebox uses the the well known open/close/read/write/lseek access |
| functions, together with a model of representing devices by files. This |
| makes the APIs familiar to everyone who has experience with Unix |
| systems. |
| |
| - <b>Shell:</b><br> |
| We have the standard shell commands like ls/cd/mkdir/echo/cat,... |
| |
| - <b>Environment Filesystem:</b><br> |
| In contrast to U-Boot, Barebox doesn't misuse the environment for |
| scripting. If you start the bootloader, it gives you a shell and |
| something that looks like a filesystem. In fact it isn't: it is a very |
| simple ar archive being extracted from flash into a ramdisk with 'loadenv' |
| and stored back with 'saveenv'. |
| |
| - <b>Filesystem Support:</b><br> |
| When starting up, the environment is mounted to /, followed by a |
| device filesytem being mounted to /dev in order to make it possible to |
| access devices. Other filesystems can be mounted on demand. |
| |
| - <b>Driver Model (borrowed from Linux):</b><br> |
| Barebox follows the Linux driver model: devices can be specified in a |
| hardware specific file, and drivers feel responsible for these devices |
| if they have the same name. |
| |
| - <b>Clocksource:</b><br> |
| We use the clocksource API knwon from Linux. |
| |
| - <b>Kconfig/Kbuild:</b><br> |
| This gives us parallel builds and removes the need for lots of ifdefs. |
| |
| - <b>Sandbox:</b><br> |
| If you develop features for @a Barebox, you can use the 'sandbox' |
| target which compiles @a Barebox as a POSIX application in the Linux |
| userspace: it can be started like a normal command and even has |
| network access (tun/tap). Files from the local filesytem can be used |
| to simulate devices. |
| |
| - <b>Device Parameters:</b><br> |
| There is a parameter model in @a Barebox: each device can specify it's |
| own parameters, which do exist for every instance. Parameters can be |
| changed on the command line with \<devid\>.\<param\>="...". For |
| example, if you want to access the IPv4 address for eth0, this is done |
| with 'eth0.ip=192.168.0.7' and 'echo $eth0.ip'. |
| |
| - <b>Getopt:</b><br> |
| @a Barebox has a lightweight getopt() implementation. This makes it |
| unnecessary to use positional parameters, which can be hard to read. |
| |
| - <b>Integrated Editor:</b><br> |
| Scripts can be edited with a small integrated fullscreen editor. |
| This editor has no features except the ones really needed: moving |
| the cursor around, typing characters, exiting and saving. |
| |
| |
| @par Directory layout |
| |
| Most of the directory layout is based upon the Linux Kernel: |
| |
| @verbatim |
| arch / * / -> contains architecture specific parts |
| arch / * / mach-* / -> SoC specific code |
| |
| drivers / serial -> drivers |
| drivers / net |
| drivers / ... |
| |
| include / asm-* -> architecture specific includes |
| include / asm-* / arch-* -> SoC specific includes |
| |
| fs / -> filesystem support and filesystem drivers |
| |
| lib / -> generic library functions (getopt, readline and the |
| like) |
| |
| common / -> common stuff |
| |
| commands / -> many things previously in common/cmd_*, one command |
| per file |
| |
| net / -> Networking stuff |
| |
| scripts / -> Kconfig system |
| |
| Documentation / -> Parts of the documentation, also doxygen |
| @endverbatim |
| |
| @section license barebox's License |
| |
| @verbatim |
| This program is free software; you can redistribute it and/or |
| modify it under the terms of the GNU General Public License as |
| published by the Free Software Foundation; either version 2 of |
| the License, or (at your option) any later version. |
| |
| This program is distributed in the hope that it will be useful, |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| GNU General Public License for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with this program; if not, write to the Free Software |
| Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
| MA 02111-1307 USA |
| @endverbatim |
| |
| @subpage users_manual |
| |
| @subpage developers_manual |
| |
| @subpage supported_boards |
| |
| */ |