ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:32.70KB ,
资源ID:13073127      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/13073127.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(6410uboot1.1.6配置、编译、链接分析Word下载.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

6410uboot1.1.6配置、编译、链接分析Word下载.docx

1、Fs:支持文件系统的文件,u-boot现在支持cramfs、fat、fdos、jffs2、yaffs和registerfs。Include:头文件,还有对各种硬件平台支持的会变文件,系统的配置文件和对文件系统支持的文件。Lib_arm:存放对ARM体系结构通用的文件,主要用于实现ARM平台通用的函数,与ARM体系结构相关的代码。Lib_*:某一架构通用的文件。Lib_generic:通用的多功能函数实现。Nand_spl:Uboot一般从ROM、NORFlash等设备启动,现在开始执行NANDFlash启动,但是支持的CPU种类还不多。Net:与网络有关的代码,BOOTP协议、TFTP协议RA

2、RP协议和NFS文件系统的实现。Post:上电自检程序。Rtc: 实时时钟驱动。Tools:创建S-Record格式文件和U-BOOT images的工具。1.2 编译程序进入源码目录执行:make distclean -清除所有生成的文件make NAME_config -根据自己使用的开发板进行配置make all -编译源码2、uboot的配置过程从README文件中我们知道了make NAME_config是用来对自己的开发板进行配置的,那就先来看下到底是怎么配置的。这边假设我们的板子是smdk6410,那么应该在源码目录执行make smdk6410_configmake调用的是顶层

3、目录下的Makefile文件,我们传参数是smdk6410_config,所以在Makefile中找到smdk6410_config的相应部分如下:smdk6410_config : unconfig$(MKCONFIG) $(:_config=) arm s3c64xx smdk6410 samsung s3c6410先分析下这条规则:smdk6410_config:规则的目标名unconfig:规则的依赖,这个在Makefile文件的342行可以找到,如下:unconfig:rm -f $(obj)include/config.h $(obj)include/config.mk $(obj

4、)board/*/config.tmp $(obj)board/*/*/config.tmp这个就不在分析,就是删除一些文件。第二行开头的:表示该行命令的输出被抑制,即执行的时候不会在终端上打印出来。$(MKCONFIG):MKCONFIG这个变量在92行定义MKCONFIG:=$(SRCTREE)/mkconfig,而变量SRCTREE在87行定义SRCTREE :=$(CURDIR),而CURDIR是Makefile自带的变量表示当前目录,所以$(MKCONFIG)就是当前目录下的mkconfig文件,即顶层目录下的mkconfig文件。$(:_config=):$是make的自动变量,标

5、识规则的目标名,即smdk6410_config。_config=)意思就是 $ 中的“_config”替换为空,也就是删掉目标中“_config”这个子串。所以这边$(:_config=)为smdk6410。这样看的话在配置时,执行make smdk6410_config实际上执行的是:./mkconfig smdk6410 arm s3c64xx smdk6410 samsung s3c6410到这才真正地开始配置开发板,接下来带着这条命令详细分析下mkconfig这个文件。1 #!/bin/sh -e/选项-e表示一个命令在执行后返回一个非0状态值时,就退出23 # Script to

6、create header files and links to configure4 # U-Boot for a specific board.5 #6 # Parameters: Target Architecture CPU Board VENDOR SOC7 #8 # (C) 2002-2006 DENX Software Engineering, Wolfgang Denk 9 #1011 APPEND=no # Default: Create new config file/APPEND=no这边表示重新创建一个文件,APPEND=yes表示将内容追加到原来的文件中12 BOAR

7、D_NAME= # Name to print in make output/BOARD_NAME为开发板的名字1314 while $# -gt 0 ; do15 case $1 in16 -) shift ; break ;17 -a) shift ; APPEND=yes ;18 -n) shift ; BOARD_NAME=$1%_config ; shift ;19 *) break ;20 esac21 done/$# 将扩展成传递给脚本的参数的数目$* 将扩展成传递给脚本的所有参数shift 将$*中的剩余的参数向左移动一个位置并减少$#的值1/14-21行判断“./mkconf

8、ig smdk6410 arm s3c64xx smdk6410 samsung s3c6410”命令中是否有“-”,“-a”,“-n”等符号,/这边没有,所以不做任何事情,11行和12行的变量仍然维持原来的值。2223 $BOARD_NAME | BOARD_NAME=/先判断BOARD_NAME是否为空,为空将命令中的第一个参数smdk6410赋值给BOARD_NAME,即这边BOARD_NAME为“smdk6410”2425 $# -lt 4 & exit 126 $# -gt 6 & 表示参数的个数,如果参数个数小于4或者大于6就退出,这边$#=6,所以可以继续往下执行。2728 ec

9、ho Configuring for $BOARD_NAME board./打印出开发板的名字2930 #31 # Create link to architecture specific headers/创建体系结构相关的头文件链接32 #33 if $SRCTREE != $OBJTREE ; then34 mkdir -p $OBJTREE/include35 mkdir -p $OBJTREE/include236 cd $OBJTREE/include237 rm -f asm38 ln -s $SRCTREE/include/asm-$2 asm39 LNPREFIX=././in

10、clude2/asm/40 cd ./include41 rm -rf asm-$242 rm -f asm43 mkdir asm-$244 ln -s asm-$2 asm45 else46 cd ./include47 rm -f asm48 ln -s asm-$2 asm49 fi/33行判断源码目录SRCTREE和目标文件目录SRCTREE是否一样,SRCTREE和SRCTREE在顶层Makefile中定义,/这边要判断,是因为可以选择在其他目录下编译u-boot的源码,这样可以令源代码目录保存干净,这时SRCTREE和SRCTREE的值就不一样了/不过我们一般都习惯直接就在源码目

11、录下编译的,所以SRCTREE和OBJTREE都为当前目录,/那么33行条件不成立,将执行else分支的代码。/46-48行进入include目录,删除asm文件(这是上一次配置时建立的链接文件),/然后再次建立asm文件,并令它链接向asm-$2目录,即asm-arm($2表示第二个参数arm)5051 rm -f asm-$2/arch/删除asm-$2/arch目录,即删除asm-arm/arch5253 if -z $6 -o = NULL54 ln -s $LNPREFIXarch-$3 asm-$2/arch55 else56 ln -s $LNPREFIXarch-$6 asm-

12、$2/arch57 fi/$6表示第6个参数s3c6410,不为空,也不为“NULL”,53行条件不满足,将执行else分支/其中LNPREFIX为空,$6表示第6个参数s3c6410,$2表示第2个参数arm/所以“ln -s $LNPREFIXarch-$6 asm-$2/arch”即ln -s arch-s3c6410 asm-arm/arch/前面有进入include目录,这时还在include目录下,/所以意思是在asm-arm下创建符号链接arch指向arch-s3c64105859 # create link for s3c24xx SoC60 if $3s3c24xx61 rm

13、 -f regs.h62 ln -s $6.h regs.h63 rm -f asm-$2/arch64 ln -s arch-$3 asm-$2/arch65 fi6667 # create link for s3c64xx SoC68 if s3c64xx69 rm -f regs.h70 ln -s $6.h regs.h71 rm -f asm-$2/arch72 ln -s arch-$3 asm-$2/arch73 fi/$3表示第三个参数s3c64xx,所以满足68行的if语句,注意的是,这时还在include目录下操作/删除regs.h文件,$6表示第6个参数s3c6410,所以“ln -s $6.h regs.h”表示“ln -s s3c6410.h regs.h”/$2表示第2个参数arm,$3表示第三个参数s3c64xx,所以后面两句分别是/rm

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1