127 lines
4.5 KiB
Plaintext
127 lines
4.5 KiB
Plaintext
/** @mainpage Barebox
|
|
|
|
Barebox is a bootloader that initializes hardware and boots Linux and
|
|
maybe other operating systems or bare metal code on a variety of
|
|
processors. It was initially derived from U-Boot and retains several of
|
|
U-Boot's ideas, so users familiar with U-Boot should come into
|
|
production quickly with Barebox.
|
|
|
|
However, as the Barebox developers are highly addicted to the Linux
|
|
kernel, its 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 standard clocksource API 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 its
|
|
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.
|
|
|
|
@endverbatim
|
|
|
|
@subpage users_manual
|
|
|
|
@subpage developers_manual
|
|
|
|
@subpage supported_boards
|
|
|
|
*/
|