U-BOOT 源码分析及移植

U-BOOT 源码分析及移植

ID:37659571

大小:236.99 KB

页数:60页

时间:2019-05-27

U-BOOT 源码分析及移植_第1页
U-BOOT 源码分析及移植_第2页
U-BOOT 源码分析及移植_第3页
U-BOOT 源码分析及移植_第4页
U-BOOT 源码分析及移植_第5页
资源描述:

《U-BOOT 源码分析及移植》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、U-BOOT源码分析及移植本文从以下几个方面粗浅地分析u-boot并移植到FS2410板上:1、u-boot工程的总体结构2、u-boot的流程、主要的数据结构、内存分配。3、u-boot的重要细节,主要分析流程中各函数的功能。4、基于FS2410板子的u-boot移植。实现了NORFlash和NANDFlash启动,网络功能。这些认识源于自己移植u-boot过程中查找的资料和对源码的简单阅读。下面主要以smdk2410为分析对象。一、u-boot工程的总体结构:1、源代码组织对于ARM而言,主要的目录如下:board平台依赖存放电路板相关的目录文件,每一套

2、板子对应一个目录。如smdk2410(arm920t)cpu平台依赖存放CPU相关的目录文件,每一款CPU对应一个目录,例如:arm920t、xscale、i386等目录lib_arm平台依赖存放对ARM体系结构通用的文件,主要用于实现ARM平台通用的函数,如软件浮点。common通用通用的多功能函数实现,如环境,命令,控制台相关的函数实现。include通用头文件和开发板配置文件,所有开发板的配置文件都在configs目录下lib_generic通用通用库函数的实现net通用存放网络协议的程序drivers通用通用的设备驱动程序,主要有以太网接口的驱动,n

3、and驱动。.......2.makefile简要分析所有这些目录的编译连接都是由顶层目录的makefile来确定的。在执行make之前,先要执行make$(board)_config对工程进行配置,以确定特定于目标板的各个子目录和头文件。$(board)_config:是makefile中的一个伪目标,它传入指定的CPU,ARCH,BOARD,SOC参数去执行mkconfig脚本。这个脚本的主要功能在于连接目标板平台相关的头文件夹,生成config.h文件包含板子的配置头文件。使得makefile能根据目标板的这些参数去编译正确的平台相关的子目录。以smd

4、k2410板为例,执行makesmdk2410_config,主要完成三个功能:@在include文件夹下建立相应的文件(夹)软连接,#如果是ARM体系将执行以下操作:#ln-sasm-armasm#ln-sarch-s3c24x0asm-arm/arch#ln-sproc-armvasm-arm/proc@生成Makefile包含文件include/config.mk,内容很简单,定义了四个变量:ARCH=armCPU=arm920tBOARD=smdk2410SOC=s3c24x0@生成include/config.h头文件,只有一行:/*Automat

5、icallygenerated-donotedit*/#include"config/smdk2410.h"顶层makefile先调用各子目录的makefile,生成目标文件或者目标文件库。然后再连接所有目标文件(库)生成最终的u-boot.bin。连接的主要目标(库)如下:OBJS=cpu/$(CPU)/start.oLIBS=lib_generic/libgeneric.aLIBS+=board/$(BOARDDIR)/lib$(BOARD).aLIBS+=cpu/$(CPU)/lib$(CPU).aifdefSOCLIBS+=cpu/$(CPU)/$(

6、SOC)/lib$(SOC).aendifLIBS+=lib_$(ARCH)/lib$(ARCH).aLIBS+=fs/cramfs/libcramfs.afs/fat/libfat.afs/fdos/libfdos.afs/jffs2/libjffs2.afs/reiserfs/libreiserfs.afs/ext2/libext2fs.aLIBS+=net/libnet.aLIBS+=disk/libdisk.aLIBS+=rtc/librtc.aLIBS+=dtt/libdtt.aLIBS+=drivers/libdrivers.aLIBS+=dr

7、ivers/nand/libnand.aLIBS+=drivers/nand_legacy/libnand_legacy.aLIBS+=drivers/sk98lin/libsk98lin.aLIBS+=post/libpost.apost/cpu/libcpu.aLIBS+=common/libcommon.aLIBS+=$(BOARDLIBS)显然跟平台相关的主要是:cpu/$(CPU)/start.oboard/$(BOARDDIR)/lib$(BOARD).acpu/$(CPU)/lib$(CPU).acpu/$(CPU)/$(SOC)/lib$(S

8、OC).alib_$(ARCH)/lib$(ARCH

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。