U-BOOT的目录结构
网上采用的u-boot一般是1.1或1.2系列的版本,其目录结构介绍的资料比较多,在新一些的版本中U-boot目录结构做了比较大的改变,比以前的版本更加简洁、合理。下面对比其异同,进行进一步讲解。
一、 1.1或1.2等老版本U-boot目录结构
u-boot目录下有18个子目录,分别存放管理不通的源程序。这些目录中所要存放的文件有其规则,可以分成三类。
n 第一类目录与处理器体系结构或者开发板硬件直接相关;
n 第二类目录是一些通用的函数或者驱动程序;
n 第三类目录是u-boot的应用程序、工具或者文档。
目 录 | 特 性 | 备 注 | 2010.6不同之处 |
board | 平台依赖 | 存放电路板相关目录文件, 比如Makefile和u-boot.lds等都和具体开发板的硬件和地址分配有关。 | 没有太大别,增加了一些开发板的支持,将一些开发板进行了整理,比如支持的所有三星公司的开发板都统一放在samsung下 |
cpu | 平台依赖 | 存放CPU相关的目录文件 其中的子目录都是以u-boot所支持的CPU为名 比如有子目录arm926ejs、mips、mpc8260和nios等
每个特定的子目录中都包括cpu.c和interrupt.c和start.S,其中
cpu.c初始化cpu、设置指令cache和数据cache等;
interrupt.c设置系统的各种终端和异常,比如快速中断,开关中断、时钟中断、软件中断、预取中止和未定义指令等;
start.S是u-boot启动时执行的第一个文件,他主要是设置系统堆栈和工作发式,为进入C程序奠定基础。 | 改动比较大,在2010.6下更名为arch,可能是为了跟内核统一,呵呵。 子目录以体系结构进行统一划分,比如arm、mips、sh等,不像以前那么混乱。 每种体系结构下统一有三个目录: cpu、lib、include。 cpu目录:存放采用相应体系结构处理器的具体分类,比如arch/arm/cpu下存放的为arm720t,arm920t等,包括最新的cortex-a8系列,作用与旧版本的cpu目录下的对应目录相同 lib目录:存放对相应的体系结构CPU通用的文件,等价于旧版本的lib_XX,比如arch/arm/lib目录作用与旧版本根目录下的lib_arm目录相同,以此类推 include:存放与相应体系结构对应的头文件,例如:arm/arm/include/asm等价于旧版本根目录下include/arm-asm目录 |
include | 通用 | 头文件和开发板配置文件 所有开发板的配置文件都在configs目录下 | 去除了跟平台相关的头文件,其它跟以前类似 |
common | 通用 | 通用的多功能函数实现 与体系结构无关的文件,实现各种命令的C文件。 | 跟旧版本一致 |
Lib_arm | 平台依赖 | 存放对ARM体系结构通用的文件 主要用于实现ARM平台通用的函数 与ARM体系结构相关的代码。 | 合并到arch/XXX/lib对应目录下 |
Lib_ppc | 平台依赖 | 存放对PowerPC体系结构通用的文件 主要用于实现PowerPC平台通用的函数 与PowerPC体系结构相关的代码。 | |
Lib_i386 | 平台依赖 | 存放对X86体系结构通用的文件 主要用于实现X86平台通用的函数 | |
Lib_generic | 通用 | 通用的多功能函数实现。 | 等价于新版本的lib目录 |
net | 通用 | 与网络有关的代码 BOOTP协议、TFTP协议、RARP协议和NFS文件系统的实现。 | 跟旧版本一致 |
fs | 通用 | 支持文件系统的文件 u-boot现在支持cramfs、fat、fdos、jffs2、yaffs和registerfs。 | 增加支持yaffs2、ubifs两种文件系统,其它的均一样 |
post | 通用 | 存放上电自检程序 | 跟旧版本一致 |
drivers | 通用 | 通用设备驱动程序 比如各种网卡、支持CFI的flash、串口和USB总线等。 | 跟旧版本一致 重新整理的目录结构,比以前更加合理、整齐,同时增加了许多新的硬件驱动 |
disk | 通用 | 硬盘接口程序 disk驱动的分区处理代码、 | 跟旧版本一致 |
rtc | 通用 | RTC驱动程序 | 整合到drivers下 |
dtt | 通用 | 数字温度测量器或者传感器的驱动 | 整合在drivers/hwmon下 |
doc | 通用 | 开发使用文档 | 跟旧版本一致 |
tools | 通用 | 存放制作S-Record 或者 U-Boot格式的映像等工具,例如mkimage 创建S-Record格式文件和U-BOOT images的工具。 | 跟旧版本一致 |
examples | 通用 | 一些独立运行的应用程序的例子,例如helloworld 一些独立运行的应用程序的例子。 |