Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7023
  • 博文数量: 6
  • 博客积分: 190
  • 博客等级: 入伍新兵
  • 技术积分: 70
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-21 11:49
文章分类

全部博文(6)

文章存档

2011年(6)

我的朋友
最近访客

分类:

2011-04-10 15:41:18

http://blogold.chinaunix.net/u2/78967/showart.php?id=2417084

参考资料:

1 tekkaman博客

2 韦东山《嵌入式linux应用开发完全手册》第15章

3   

1。到下载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
 

源码解压以后,我们可以看到以下的文件和文件夹:

 cpu

与处理器相关的文件。每个子目录中都包括cpu.cinterrupt.cstart.Su-boot.lds

cpu.c初始化CPU、设置指令Cache和数据Cache

interrupt.c设置系统的各种中断和异常

start.SU-boot启动时执行的第一个文件,它主要做最早其的系统初始化,代码重定向和设置系统堆栈,为进入U-boot第二阶段的C程序奠定基础

u-boot.lds链接脚本文件,对于代码的最后组装非常重要

 board

已经支持的所有开发板相关文件,其中包含SDRAM初始化代码、Flash底层驱动、板级初始化文件

其中的config.mk文件定义了TEXT_BASE,也就是代码在内存的其实地址,非常重要。

 common

与处理器体系结构无关的通用代码,U-boot的命令解析代码/common/command.c、所有命令的上层代码cmd_*.cU-boot环境变量处理代码env_*.c、等都位于该目录下

drivers

包含几乎所有外围芯片的驱动,网卡USB、串口、LCDNand Flash等等

disk

fs

net

支持的CPU无关的重要子系统:

磁盘驱动的分区处理代码

文件系统:FATJFFS2EXT2

网络协议:NFSTFTPRARPDHCP等等

include

头文件,包括各CPU的寄存器定义,文件系统、网络等等

configs子目录下的文件是与目标板相关的配置头文件

doc

U-Boot的说明文档,在修改配置文件的时候可能用得上

lib_arm

处理器体系相关的初始化文件

比较重要的是其中的board.c文件,几乎是U-boot的所有架构第二阶段代码入口函数和相关初始化函数存放的地方。

lib_avr32

lib_blackfin

lib_generic

lib_i386

lib_m68k

lib_microblaze

lib_mips lib_nios

lib_nios2

lib_ppc

lib_sh

lib_sparc

 api

examples

外部扩展应用程序的API和范例

nand_spl

onenand_ipl

post

一些特殊构架需要的启动代码和上电自检程序代码

libfdt

支持平坦设备树(flattened device trees)的库文件

tools

编译S-RecordU-Boot映像等相关工具,制作bootm引导的内核映像文件工具mkimage源码就在此

Makefile

MAKEALL

config.mk

rules.mk

mkconfig

控制整个编译过程的主Makefile文件和规则文件

CHANGELOG

CHANGELOG-before-U-Boot-1.1.5

COPYING

CREDITS

MAINTAINERS

README

一些介绍性的文档、版权说明

标为红色的是移植时比较重要的文件或文件夹。

 

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

阅读(389) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~