欢迎来到天天文库
浏览记录
ID:17443048
大小:154.00 KB
页数:40页
时间:2018-08-31
《u-boot源码分分析及移植》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、U-BOOT源码分析及移植4728577492008-4-298:44:19 收藏
2、 打印
3、 投票(458)
4、 评论(55)
5、 阅读(1589848) ◇字体:[大 中 小]本文从以下几个方面粗浅地分析u-boot并移植到FS2410板上:1、u-boot工程的总体结构2、u-boot的流程、主要的数据结构、内存分配。3、u-boot的重要细节,主要分析流程中各函数的功能。4、基于FS2410板子的u-boot移植。实现了NORFlash和NANDFlash启动,网络功能。 这些认识源于自己移植u-boot过程中查找的资料和对源码的简单阅读。下面主要以smdk2410为分析对象。
6、 一、u-boot工程的总体结构:1、源代码组织 对于ARM而言,主要的目录如下:board 平台依赖 存放电路板相关的目录文件,每一套板子对应一个目录。如smdk2410(arm920t) cpu 平台依赖 存放CPU相关的目录文件,每一款CPU对应一个目录,
7、例如:arm920t、xscale、i386等目录lib_arm 平台依赖 存放对ARM体系结构通用的文件,主要用于实现ARM平台通用的函数,如软件浮点。common 通用 通用的多功能函数实现,如环境,命令,控制台相关的函数实现。include 通用 头文件和开发板配置文件,所有开发板的配置文件都在configs目录下 lib_generic 通用
8、 通用库函数的实现net 通用 存放网络协议的程序drivers 通用 通用的设备驱动程序,主要有以太网接口的驱动,nand驱动。.......2.makefile简要分析所有这些目录的编译连接都是由顶层目录的makefile来确定的。在执行make之前,先要执行make$(board)_config对工程进行配置,以确定特定于目标板的各个子目录和头文件。$(board)_config:是makefile中的一个伪目标,它传入指定的CPU,ARCH,BOAR
9、D,SOC参数去执行mkconfig脚本。这个脚本的主要功能在于连接目标板平台相关的头文件夹,生成config.h文件包含板子的配置头文件。使得makefile能根据目标板的这些参数去编译正确的平台相关的子目录。以smdk2410板为例,执行 makesmdk2410_config,主要完成三个功能:@在include文件夹下建立相应的文件(夹)软连接,#如果是ARM体系将执行以下操作:#ln-s asm-arm asm #ln-s arch-s3c24x0 asm-arm/arch#ln-s proc-armv asm-arm/proc@生成Makef
10、ile包含文件include/config.mk,内容很简单,定义了四个变量:ARCH =armCPU =arm920tBOARD =smdk2410SOC =s3c24x0@生成include/config.h头文件,只有一行:/*Automaticallygenerated-donotedit*/#include"config/smdk2410.h"顶层makefile先调用各子目录的makefile,生成目标文件或者目标文件库。然后再连接所有目标文件(库)生成最终的u-boot.bin。连接的主要目标(库)如下:OBJS =cpu/$(CPU)/start.oLIBS =l
11、ib_generic/libgeneric.aLIBS+=board/$(BOARDDIR)/lib$(BOARD).aLIBS+=cpu/$(CPU)/lib$(CPU).aifdefSOCLIBS+=cpu/$(CPU)/$(SOC)/lib$(SOC).aendifLIBS+=lib_$(ARCH)/lib$(ARCH).aLIBS+=fs/cramfs/libcramfs.afs/fat/libfat.afs/f
此文档下载收益归作者所有