通用的函数
头文件和开发板配置文件,开发板的配置文件都放在include/configs目录下,U-Boot没有make menuconfig类似的莱单来进行可视化配置,需要手动地修改配置文件中的宏定义
lib_generic
通用的库函数,比如printf等
common
通用的函数,多是对下一层驱动程序的进一步封装
disk
通用的设备驱动程序
硬盘接口程序
drivers
各类具体设备的驱动程序,基本上可以通用,它们通过宏从外面引入平台/开发板相关的函数
dtt
数字温度测量器或者传感器的驱动
fs
文件系统
nand_spl
U-Boot一般从ROM、NOR Flash等设备启动,现在开始支持从NAND Flash启动,但是支持的CPU种类还不多
net
各种网络协议
post
上电自检程序
rtc
实时时钟的驱动
doc
文档
开发、使用文档
examples
示例程序
一些测试程序,可以使用U-Boot下载后运行
tools
工具
制作S-Record、U-Boot格式映像的工具,比如mkimage
U-Boot中各目录间也是有层次结构的,虽然这种分法不是绝对的,但是在移植过程中可以提供一些指导意义,如图2所示。
2 U-Boot顶层目录的层次结构
比如common/cmd_nand.c文件提供了操作NAND
Flash的各种命令,这些命令通过调用drivers/nand/nand_base.c中的擦除、读写函数来实现。这些函数针对NAND
Flash的共性作了一些封装,将平台/开发板相关的代码用宏或外部函数来代替。而这些宏与外部函数,如果与平台相关,就要在下一层次的cpu
/xxx(xxx表示某型号的CPU)中实现;如果与开发板相关,就要在下一层次的board/xxx目录(xxx表示某款开发板)中实现。本书移植的
U-Boot,就是在cpu/arm920t/s3c24x0目录下增加了一个nand_flash.c文件来实现这些函数。
以增加烧写yaffs文件系统映像的功能为例——就是在common目录下的
cmd_nand.c中增加命令,比如nand
write.yaffs:这个命令要调用drivers/nand/nand_util.c中的相应函数,针对yaffs文件系统的特点依次调用擦除、烧
写函数。而这些函数依赖于drivers/nand/nand_base.c、cpu/arm920t/s3c24x0/nand_flash.c文件中
的相关函数。
目前u-boot-1.1.6支持10种架构——根目录下有10个类似lib_i386的目
录、31个型号(类型)的CPU——cpu目录下有31个子目录,214种开发板——board目录下有214个子目录,很容易从中找到与自己的板子相似
的配置,在上面稍作修改即可使用。
2.3 U-Boot的配置、编译、连接过程
1. U-Boot初体验
u-boot-1.1.6中有几千个文件,要想了解对于某款开发板,使用哪些文件、哪个文件首先执行、可执行文件占用内存的情况,最好的方法就是阅读它的Makefile。
根据顶层Readme文件的说明,可以知道如果要使用开发板board/<board_name>,就先执行“make <board_name>_config”命令进行配置,然后执行“make all”,就可以生成如下3个文件:
u-boot.bin:二进制可执行文件,它就是可以直接烧入ROM、NOR Flash的文件。
u-boot:ELF格式的可执行文件
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-66092-6.html
老美还有上万大军占领着伊拉克
么么哒
质检总局去买个假货