一.bootloader
1.了解系统的启动过程
PC: BIOS(固件)------>bootloader(硬盘MBR)------>OS内核(拷贝到RAM)- ---->启动系统
bootlloadre的启动过程一般分为2段,BL1 BL2
嵌入式: bootloader(flash)------->OS内核(拷贝到内存)—>启动系统
S5PV210的启动过程:
IROM(固件)------>bootloader(flash,网络,usb,SD,串口)加载到内存 ---->启动OS内核---->系统
bootloader有两种状态,一种是自启动模式(加载内核),另一种叫下载更新模式(命令行)
bootloader的种类:e-boot u-boot r-boot vivi…
2.u-boot是bootloader的一种
Uboot官方下载地址:
ftp://ftp.denx.de/pub/u-boot/
git://git.denx.de/u-boot.git
http://git.denx.de/u-boot.git
u-boot的通用性:
1)支持多种架构的CPU:PowerPC、ARM、X86、MIPS、NIOS、XScale
2)支持多种操作系统:Linux Vxworks QNX…
3.分析uboot的源代码
注意:查看uboot源代码时在source Insight文档选项–>文件过滤器加上[*c,*h,*s,*S]。
uboot源码目录下文件夹的介绍:
1)cpu
包含和CPU架构相关的代码,u-boot支持的CPU在该目录下都有一个子目录 与之对应。
2)board
包含和开发板相关的文件,每一个开发板都以一个目录的形式出现在该目录下。
3)drivers
本目录下存放所有外围芯片的驱动,网卡、USB、串口、LCD、Nand Flash等。
4)lib_arm
支持ARM架构下的通用文件。
5)include/configs/smdkv210single.h
定义了大量的宏定义,配置u-boot的参数(如:晶振的频率、串口的波特率、开发板的IP地址)。
4.源代码研究:
Makefile
1)确定编译器(在Makefile文件中加入下面两行代码确定编译器)
126 ARCH = arm
127 CROSS_COMPILE = arm-linux-(根据实际工具添加)
2)uboot配置
make smdkv210single_config
Makefile:
2584 smdkv210single_config : unconfig
2585 @$(MKCONFIG) $(@:_config=) arm s5pc11x smdkc110 samsung s5pc110
2586 @echo “TEXT_BASE = 0xc3e00000” > $(obj)board/samsung/smdkc110/config.mk
476 unconfig:
477 @rm -f $(obj)include/config.h $(obj)include/config.mk
478 $(obj)board//config.tmp $(obj)board//*/config.tmp
479 $(obj)include/autoconf.mk $(obj)include/autoconf.mk.dep
480 ( o b j ) b o a r d / (obj)board/ (