转 http://tieba.baidu.com/p/2836672721
对uboot-2010.06及其以后的版本,将体系结构相关的内容合并,增加include文件夹,分离出通用库文件lib,其各主目录下的内容说明如下
api: 存放uboot提供的接口函数
arch: 与体系结构相关的代码
board: 根据不同开发板所定制的代码
common: 通用的代码,涵盖各个方面,已对命令行的处理为主
disk: 磁盘分区相关代码
doc: 文档,readme
drivers: 驱动相关代码,每种类型的设备驱动占用一个子目录
examples: 示例程序
fs: 文件系统,支持嵌入式开发板常见的文件系统
include: 头文件,以通用的头文件为主
lib: 通用库文件
nand_spl: nand存储器相关的代码
net: 网络相关的代码,小型的协议栈
onenand_ipl: onenand存储器启动的代码
post: 上电自检程序
tools: 辅助功能程序,用于制作uboot镜像等
spl: second program loader
uboot的spl分析:
芯片到uboot的启动流程为 芯片-》spl-》uboot
芯片中的ROM code是第一级的bootloader,芯片上电后会自动执行这一部分的代码,完成部分初始化并引导第二级的bootloader,第二级的bootloader再引导第三级的bootloader,
对于ti-am3517而言,二三级的bootloader均由uboot提供。
spl复用的是uboot里面的代码.
spl要做的事情如下:
1.Basic Arm Initialization 对芯片进行基本的初始化
2.UART console initialization 串口控制终端的初始化
3.Clocks and DPLL Locking(minimal) 时钟和锁相环
4.SDRAM initialization
5.Mux(minimal)
6.Boot Device Initialization, based on where we are booting from MMC1, or MMC2, or Nand, or Onenand
7.Bootloading real u-boot from the Boot Device and passing control to it.
当选择从nand flash启动时,spl为第一阶段,copy前4K到iram,然后完成初始化ddr后,重定位,跳转到ddr,copy剩余uboot到ddr,开始启动第二阶段。