uboot配置 编译 连接全过程.doc

uboot配置 编译 连接全过程.doc

ID:56132424

大小:368.50 KB

页数:32页

时间:2020-06-20

uboot配置 编译 连接全过程.doc_第1页
uboot配置 编译 连接全过程.doc_第2页
uboot配置 编译 连接全过程.doc_第3页
uboot配置 编译 连接全过程.doc_第4页
uboot配置 编译 连接全过程.doc_第5页
资源描述:

《uboot配置 编译 连接全过程.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、uboot配置编译连接全过程分类:Uboot2011-11-1420:48415人阅读评论(1)收藏举报  根据README中PortingGuide的指示精神,我们要在新板子上移植UBoot,最快速的办法就是查看当前UBoot代码中是否有对相似于待移植板子的其他板子的支持(这应该又是一个可考虑成为习惯甚至本能的做法。也即拿到不熟悉的软件包后,看看里面有没有自己熟悉的、或者和自己目前要做的东西很相似的部分,从这个部分入手往往能很快的解决问题)。很幸运,我们在里面找到了三星公司所生产的SMDK2410参考板,这

2、是三星公司早先为推销其生产的ARM9芯片-S3C2410所推出的一块PCB参考设计板(推出时随板子附加了很多的软硬件资料)。知道这个后,我们很高兴,因为我们知道我们板子上的CPU——S3C2440正是S3C2410的升级版。所以,在真正动手移植之前,分析一下新版本UBoot中如何支持SMDK2410的,自然成为接下来要做的事情。UBoot本身是用GNU工具链开发的,那这就意味着其代码包里面必然会有很多的Makefile文件,因为GNUMake正是用来管理软件项目编译的GNU工具。而且,正如我们前面说的,UBo

3、ot能支持如此多的CPU体系结构和操作系统,那它就必定会有很多的配置选项用于配置。所以分析支持SMDK2410参考板的具体代码之前,我们必须先弄懂UBoot的配置编译过程。我们只有对此了然于胸了,才能比较顺利的完成移植。所幸的是,不像Linux内核代码,UBoot的代码量并不多,分析起来并不痛苦。作为UBoot学习移植系列的第一篇文章,我在这里就以SMDK2410板子的支持作为例子,分析新版本UBoot(2010.06)的配置编译过程。作为前提,你应该知道一些GNUMake以及一些BashShellScrip

4、t的知识。从UBOOT用户的角度来讲,其编译配置过程倒是非常的简单,只需要在命令行中切换到UBoot目录下输入两个命令:[csicong@juliantecu-boot-2010.06]$makeARCH=armCROSS_COMPILE=arm-linux-smdk2410_config[csicong@juliantecu-boot-2010.06]$makeARCH=armCROSS_COMPILE=arm-linux-第一个命令完成UBootforsmdk2410参考板的配置,第二个命令则真正编译出所

5、需要的UBoot二进制映像文件,编译出来之后我们需要将其下载到FLASH中。在这两个命令中,参数ARCH表示我们要给具有何种体系结构的CPU编译UBoot,因为不管SMDK2410参考板上的CPU——S3C2410,还是我手头板子上的CPU,皆为ARM9芯片,所以这里显然应该为arm;CROSS_COMPILE为交叉编译工具链各工具的名称前缀。我们需要用到arm-linux-gcc作为编译器、arm-linux-ld为链接器。。。所以这里取值为arm-linux-。在第一个命令中,我们以smdk2410_co

6、nfig作为本次make的目标。查找UBoot项目顶层Makefile得到关于此目标的规则如下:smdk2410_config:unconfig@$(MKCONFIG)$(@:_config=)armarm920tsmdk2410samsungs3c24x0根据Makefile规则的定义,GNUMake在处理这条规则的时候,先判断其依赖——也就是unconfig是否需要更新。而我们在同一Makefile中找到unconfig的规则为(482行):unconfig:   @rm-f$(obj)include/c

7、onfig.h$(obj)include/config.mk   $(obj)board/*/config.tmp$(obj)board/*/*/config.tmp   $(obj)include/autoconf.mk$(obj)include/autoconf.mk.dep由于目录下没有一个叫unconfig的文件存在,所以和unconfig相关的这条规则总是得到处理,也就是其中的rm命令总是得到执行,该命令的目的是删除一些配置编译过程中产生的文件。在这些文件中,与本文讨论密切相关的是前面两个,以及

8、后面两个。前面两个是用第一条命令来配置UBoot的过程中产生的,后面则是用第二条命令来编译UBoot的过程中产生的。这条规则先把他们全部删除。注意rm命令前面的@符号是取消该命令执行时的回显。执行完对依赖——unconfig的处理,GNUMake回到对smdk2410_config的处理。它接下来执行命令:@$(MKCONFIG)$(@:_config=)armarm920tsmdk2410sams

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

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

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