参考资料:
1 tekkaman博客
2 韦东山《嵌入式linux应用开发完全手册》第15章
1。到ftp://ftp.denx.de/pub/u-boot/下载u-boot-2010.06.tar.bz2,解压进入根目录,列出根目录文件。源码整体框架如下:
蓝色:目录
黑色:文件
绿色:可执行文件
[root@localhost u-boot-2010.06]# tree -L 1
.
├── api
├── arch
├── board
├── CHANGELOG
├── CHANGELOG-before-U-Boot-1.1.5
├── common
├── config.mk
├── COPYING
├── CREDITS
├── disk
├── doc
├── drivers
├── examples
├── fs
├── include
├── lib
├── MAINTAINERS
├── MAKEALL
├── Makefile
├── mkconfig
├── nand_spl
├── net
├── onenand_ipl
├── post
├── README
├── rules.mk
└── tools
16 directories, 11 files
2。u-boot 模式
a。启动加载(Boot loading)模式
上电后,Bootloader从板子上的某个固态存储器设备上讲操作系统加载到RAM中运行,整个过程没有用户的接入。产品发布时,Bootloader工作于这种模式下。
如果设置了bootm命令就会进入这种模式。
如果设置了bootdelay命令就可以在这个设定的时间内进入下载模式。
b。下载(Downloading)模式
在这种模式下,开发人员可以使用各种命令。操作flash,设置环境变量,下载kernel image、文件系统image 等等。完全用于开发阶段。
3。Bootloader 在嵌入式Linux系统中的位置
Bootloader Boot-parameter kernel Root-filesystem
4。Bootloader 与 内核的交互。
Bootloader与内核的交互是单向的,Bootloader将各类参数传递给内核。在Linux-2.4.x以后的内核都期望以标记列表(tagged list)的形式来传递启动参数。标记,就是一种数据结构;标记列表就是挨着存放多个标记。
标记列表以标记ATAG_CORE开始,以标记ATAG_NONE结束。在地址0x30000100的地方。
5。几个重要的地址
内存起始地址--0x3000 0000
内存大小64M --0x0400 0000
内存最后地址--0x33FF FFFF
ATAG_CORE开始地址--0x3000 0100
Nor/Nandflash起始地址--0x0
内核存放地址2M处--0x2000 0000
yaffs2文件存放地址5M处--0x5000 0000