文档介绍:U-BOOT
作者:陈颖
邮箱:chxxxyg@
博客: ./
目录
一 U-BOOT目录结构 1
二 U-BOOT的启动与内核引导 3
1、U-BOOT的启动分析 3
3
U-BOOT的存储映射 4
硬件设备的初始化 5
硬件平台前期初始化 9
13
硬件平台后期初始化 16
2、内核引导 20
u-boot命令实现原理 20
24
三 U-BOOT编译流程分析 35
1、U-BOOT编译命令 35
2、U-BOOT配置流程 35
35
make smdk2410_config命令的执行过程 38
make smdk2410命令的执行过程 42
U-BOOT的编译流程 43
U-BOOT原理分析
一 U-BOOT目录结构
api
api目录对应于一些扩展应用的独立的api
arch
arch存放与CPU架构有关的目录,下面每一个目录就代表一种架构的CPU
board
board目录是与硬件平台相关的目录,特定于某种硬件平台的文件以子目录的形式存放在该目录下
common
common目录存放了u-boot所支持的所有命令
disk
disk目录存放了磁盘驱动和相关的代码
doc
doc目录存放了u-boot的参考文档
drivers
u-boot支持的所有驱动都存放在driver目录下,这些驱动大都根据linux驱动改写而来
dts
dts目录包含一个平台设备树相关的makefile,可编译生成设备树镜像文件
examples
example下时一些在u-boot上运行的事例程序
fs
fs目录下是u-boot所支持的文件系统
include
include目录包含了u-boot的头文件以及各种硬件平台的系统配置文件
lib
lib目录下是u-boot的库文件
nand_spl
支持从nand flash启动的相关代码
net
u-boot的网络子系统
onenand_ipl
支持从onenand 启动的代码
post
Post下是支持上电自检功能的目录
spl
与nand_spl相关的makefile,编译支持从nand flash启动的u-boot二进制文件
tools
tools目录下是u-boot的一些辅助工具,比如生成u-boot镜像文件等
二 U-BOOT的启动与内核引导
1、U-BOOT的启动分析
u-boot支持多种架构类型的cpu,支持多种硬件平台,本文以smdk2410为例来讲解u-boot的功能原理。
u-boot的入口在文件在arch/arm/cpu/arm920t/,因为在文件在链接文件arch/arm/cpu/u-,如下:
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS
{
. = 0x00000000;
. = ALIGN(4);
.text :
{
__image_copy_start = .;
CPUDIR/ (.text) //
*(.text)
}
…………
.globl _start
_start: b start_code //复位
ldr pc, _undefined_instruction //未定义指令向量
ldr pc, _software_interrupt //软件中断向量
ldr pc, _prefetch_abort //预取指令异常向量
ldr pc, _data_abort //数据操作异常向量
ldr pc, _not_used //未使用
ldr pc, _irq //irq中断向量
ldr pc, _fiq // fiq中断向量
_undefined_instruction: .word undefined_instruction
_software_interrupt: .word software_interrupt
_prefetch_abort: .word prefetch_abort
_data_abort: .word data_abort
_n