u-boot实现原理完全分析
- 格式:doc
- 大小:1.02 MB
- 文档页数:52
U-BOOT
作者:***
邮箱:***************
博客: /
目录
一 U-BOOT目录结构 ............................................................................................................ 1
二 U-BOOT的启动与内核引导 ............................................................................................ 3
1、U-BOOT的启动分析 ................................................................................................... 3
1.1设置异常向量表 ....................................................................................................................... 3
1.2 U-BOOT的存储映射 ............................................................................................................... 4
1.3 硬件设备的初始化 .................................................................................................................. 5
1.4 硬件平台前期初始化 .............................................................................................................. 9
1.5代码重定位 ............................................................................................................................. 13
1.6 硬件平台后期初始化 ............................................................................................................ 16
2、内核引导 ..................................................................................................................... 20
2.1 u-boot命令实现原理 ............................................................................................................. 20
2.2内核引导 ................................................................................................................................. 24
三 U-BOOT编译流程分析 .................................................................................................. 35
1、U-BOOT编译命令 ..................................................................................................... 35
2、U-BOOT配置流程 ..................................................................................................... 35
2.1环境初始化 ............................................................................................................................. 35
2.2 make smdk2410_config命令的执行过程 .............................................................................. 38
2.3 make smdk2410命令的执行过程 .......................................................................................... 42
2.4 U-BOOT的编译流程 ............................................................................................................. 43 U-BOOT原理分析 --陈颖
第 1 页 共 50 页 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的头文件以及各种硬件平台的系统配置文件
U-BOOT原理分析 --陈颖
第 2 页 共 50 页 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原理分析 --陈颖
第 3 页 共 50 页 二 U-BOOT的启动与内核引导
1、U-BOOT的启动分析
u-boot支持多种架构类型的cpu,支持多种硬件平台,本文以smdk2410为例来讲解u-boot的功能原理。
u-boot的入口在文件在arch/arm/cpu/arm920t/start.S中,因为在文件在链接文件arch/arm/cpu/u-boot.lds中被第一个链接,如下:
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS
{
. = 0x00000000;
. = ALIGN(4);
.text :
{
__image_copy_start = .;
CPUDIR/start.o (.text) //start.o对应源代码就是start.S
*(.text)
}
…………
1.1设置异常向量表
.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