《uboot的目录结构说明》
1、版本号变化:
2008年8月及以前,按版本号命名:u-boot-1.3.4.tar.bz2(2008年8月更新)
2008年8月以后均按日期命名。目前最新版本:u-boot-2011.06.tar.bz2(2011年6月更新)
2、目录结构变化:
u-boot目录结构主要经历过2次变化,u-boot版本第一次从u-boot-1.3.2开始发生变化,主要增加了api的内容;变化最大的是第二次,从2010.6版本开始。
u-boot-2010.03及以前版本
├──
api
存放uboot提供的接口函数
├──
board
根据不同开发板定制的代码,代码也不少
├──
common 通用的代码,涵盖各个方面,已命令行处理为主
├──
cpu
与体系结构相关的代码,uboot的重头戏
├──
disk
磁盘分区相关代码
├──
doc
文档,一堆README开头的文件
├── drivers 驱动,很丰富,每种类型的设备驱动占用一个子目录
├── examples 示例程序
├──
fs
文件系统,支持嵌入式开发板常见的文件系统
├── include 头文件,已通用的头文件为主
├── lib_【arch】
与体系结构相关的通用库文件
├── nand_spl NAND存储器相关代码
├──
net
网络相关代码,小型的协议栈
├── onenand_ipl
├──
post
加电自检程序
└──
tools
辅助程序,用于编译和检查uboot目标文件
从u-boot-2010.06版本开始把体系结构相关的内容合并,原先的cpu与lib_arch内容全部纳入arch中,并且其中增加inlcude文件夹;分离出通用库文件lib。
u-boot-2010.06及以后版本
├──
api
存放uboot提供的接口函数
├──
arch
与体系结构相关的代码,uboot的重头戏
├──
board
根据不同开发板定制的代码,代码也不少
├──
common 通用的代码,涵盖各个方面,已命令行处理为主
├──
disk
磁盘分区相关代码
├── doc
文档,一堆README开头的文件
├── drivers 驱动,很丰富,每种类型的设备驱动占用一个子目录
├── examples 示例程序
├──
fs
文件系统,支持嵌入式开发板常见的文件系统
├── include 头文件,已通用的头文件为主
├──
lib
通用库文件
├── nand_spl NAND存储器相关代码
├── net
网络相关代码,小型的协议栈
├── onenand_ipl
├──
post
加电自检程序
└──
tools
辅助程序,用于编译和检查uboot目标文件
3、移植工作涉及的目录情况
从uboot代码根目录,可以看出其已经非常庞大,功能也很丰富。
移植工作最主要的是看对应的处理器和开发板代码,2010.06版本以后处理器相关的代码集中在arch、board目录。(以前版本主要在cpu和board目录)
先看一下arch目录:
arch
├── arm
├── avr32
├── blackfin
├── i386
├── m68k
├── microblaze
├── mips
├── nios2
├── powerpc
├── sh
└── sparc
arch目录内容比以前的版本干净,每个子目录代表一个处理器类型,子目录名称就是处理器的类型名称。
我们移植的是mips的处理器,所以参考一下arch/mips目录:
arch/mips
├── cpu
├── include
└── lib
arch/mips目录下有三个目录,其他的处理器目录下也是这个结构:
cpu子目录对应一种处理器的不同产品型号或者系列;
include子目录是处理器用到的头文件;
lib目录对应用到处理器公用的代码;
下面看看cpu下的内容,arch/mips/cpu目录下的内容:
arch/mips/cpu
├── asc_serial.c
├── asc_serial.h
├── au1x00_eth.c
├── au1x00_serial.c
├── au1x00_usb_ohci.c
├── au1x00_usb_ohci.h
├── cache.S
├── config.mk
├── cpu.c
├── incaip_clock.c
├── incaip_wdt.S
├── interrupts.c
├── Makefile
└── start.S 整个uboot代码入口点
目前最新版本(2011.6版本开始)中cpu目录中建立mips32目录,把incaip和au1x00也分类放在不同的目录中。
u-boot.lds是ld程序也就是连接器的脚本文件,这个文件描述了如何连接目标文件,ld程序会根据这个文件的指示按照需求把不同的目标文件连接在一起生成供烧写到开发板的程序。
该文件放在board对应的目录中。