parent
361acf4413
commit
c8808e6729
|
@ -0,0 +1,125 @@
|
||||||
|
U2Boot
|
||||||
|
------
|
||||||
|
|
||||||
|
This is u2boot, our proposal for a next generation of the famous U-Boot
|
||||||
|
bootloader. U-Boot offers an excellent choice as a bootloader for
|
||||||
|
today's embedded systems, seen from a user's point of view.
|
||||||
|
Nevertheless, there are quite some design flaws which turned out over
|
||||||
|
the last years and we think that they cannot be solved in a production
|
||||||
|
tree. So this tree tries to do several things right - without caring
|
||||||
|
about losing support for old boards. So if you aim at stability at this
|
||||||
|
time, stay with the official U-Boot releases.
|
||||||
|
|
||||||
|
|
||||||
|
Building U-Boot
|
||||||
|
---------------
|
||||||
|
|
||||||
|
U-Boot uses the Linux kernel's build system. It consists of two parts:
|
||||||
|
the makefile infrastructure (kbuild), plus a configuration system
|
||||||
|
(kconfig). So building U-Boot is very similar to building the Linux
|
||||||
|
kernel.
|
||||||
|
|
||||||
|
For the examples below, we use the User Mode U-Boot implementatio, which
|
||||||
|
is a port of U-Boot to the Linux userspace. This makes it possible to
|
||||||
|
test drive the code without having real hardware. So for this test
|
||||||
|
scenario, ARCH=linux is the valid architecture selection.
|
||||||
|
|
||||||
|
First, select your architecture in a persistent way by creating a soft
|
||||||
|
link:
|
||||||
|
|
||||||
|
# ln -s linux cross_arch
|
||||||
|
|
||||||
|
In order to configure the various aspects of U-Boot, start the U-Boot
|
||||||
|
configuration system:
|
||||||
|
|
||||||
|
# make menuconfig
|
||||||
|
|
||||||
|
This command starts a menu box and lets you select all the different
|
||||||
|
options available for your architecture. Once the configuration was
|
||||||
|
finished (you can simulate this by using the standard demo config file
|
||||||
|
with 'make linux_defconfig'), there is a .config file in the toplevel
|
||||||
|
directory of the sourcode.
|
||||||
|
|
||||||
|
U-Boot usually needs an environment, storing the configuation data, plus
|
||||||
|
a filesystem space for scripts etc. You can create one locally with
|
||||||
|
|
||||||
|
# dd if=/dev/zero of=env.bin bs=1024 count=128
|
||||||
|
# FIXME - what to do to get a solid environemt
|
||||||
|
# dd if=/dev/zero of=cramfs.bin bs=1024 count=128
|
||||||
|
# FIXME - create filesystem
|
||||||
|
|
||||||
|
Once U-Boot is configured, we can start the compilation
|
||||||
|
|
||||||
|
# make
|
||||||
|
|
||||||
|
If everything goes well, the result is a file called uboot:
|
||||||
|
|
||||||
|
# ls -l uboot
|
||||||
|
-rwxr-xr-x 1 rsc ptx 114073 Jun 26 22:34 uboot
|
||||||
|
|
||||||
|
This U-Boot image is a normal Linux executable, so it can be started
|
||||||
|
just like evary other program:
|
||||||
|
|
||||||
|
# ./uboot -e env.bin -i cramfs.bin
|
||||||
|
|
||||||
|
U-Boot 2.0.0-trunk (Jun 26 2007 - 22:34:38)
|
||||||
|
|
||||||
|
loading environment from /dev/env0
|
||||||
|
uboot> /
|
||||||
|
|
||||||
|
FIXME: cfi currently doesn't work with um-uboot
|
||||||
|
|
||||||
|
|
||||||
|
Commands
|
||||||
|
--------
|
||||||
|
|
||||||
|
devinfo
|
||||||
|
addpart
|
||||||
|
pwd
|
||||||
|
cd
|
||||||
|
ls
|
||||||
|
cat
|
||||||
|
tftpboot <dest> <source> FIXME: order?
|
||||||
|
tftpboot /dev/nor0.1 <source>
|
||||||
|
erase -f /dev/nor0.1
|
||||||
|
help
|
||||||
|
edit -> ctrl-c ctrl-d
|
||||||
|
md -f /dev/nor0.1
|
||||||
|
exec /env/init FIXME: doesn't work yet
|
||||||
|
saveenv (makes /env persistent) -> /dev/env0
|
||||||
|
printenv (FIXME: obsolete)
|
||||||
|
mount
|
||||||
|
|
||||||
|
Shell
|
||||||
|
-----
|
||||||
|
|
||||||
|
- doesn't have switch/case yet
|
||||||
|
- only one variable space
|
||||||
|
[ ] add variable space
|
||||||
|
|
||||||
|
Drivers
|
||||||
|
-------
|
||||||
|
|
||||||
|
/dev
|
||||||
|
serial
|
||||||
|
partition
|
||||||
|
environment -> /env; /env/init
|
||||||
|
|
||||||
|
Design
|
||||||
|
------
|
||||||
|
|
||||||
|
include/driver.h
|
||||||
|
board/scb9328.c
|
||||||
|
include/param.h: each device can have parameters; can be changed on
|
||||||
|
runtime; get/set can be overwritten by implementation.
|
||||||
|
|
||||||
|
- xfunctions: do panic if error
|
||||||
|
- proposed design:
|
||||||
|
arch/
|
||||||
|
arch/arm/cpu-arm920t/
|
||||||
|
arch/arm/board-.../
|
||||||
|
board/ is obsolete
|
||||||
|
|
||||||
|
- arch/*/Makefile is central makefile
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue