版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、5.2 U-Boot简介,5.2.1 U-Boot项目DENX软件工程中心的沃尔夫冈登克(Wolfgang Denk)首先基于8xxrom的源代码创建了PPCBoot项目,并不断增加了对处理器的支持。后来,Sysgo Gmbh将PPCBoot移植到ARM平台上,创建了ARMBoot项目,然后在PPCBoot项目和ARMBoot项目的基础上,创建了U-Boot项目。目前,U-Boot已经能够支持数百个采用PowerPC、ARM、X86和MIPS架构的开发板,并且已经成为最通用、最灵活、开发最活跃的开源Bootloader,目前仍由DENX的Wolfgang Denk维护。uboot的源代码包可以
2、从sourceforge网站下载,也可以订阅活跃的uboot用户电子邮件论坛,这对uboot的开发和使用非常有帮助。u盘包下载网站:5.2.2 U盘的源代码结构你可以从网站上下载u盘的源代码包,比如u盘1.1.2.tar.bz2,解压后就可以得到u盘的源程序。顶层目录下有18个子目录,分别存储和管理不同的源程序。存储在这些目录中的文件有它们自己的规则,这些规则可以分为三类:第一类与处理器架构或开发板硬件直接相关。第二类存储一般功能或驱动程序。第三类目录存储应用程序、工具或u盘文档。表5.2列出了u盘顶层目录下各级目录的存储原则。U-Boot的源代码包含对几十个处理器和数百个开发板的支持。然而,
3、对于特定的开发板,配置编译过程只需要一些程序。本文以S3C2410 arm920t处理器为例,分析了S3C2410处理器和开发板所依赖的程序,以及u盘的一般功能和工具。表5.2引导源代码的顶层目录显示引导源代码是通过GCC和Makefile编译的。顶层目录中的makefile可以先设置开发板的定义,然后递归调用各级子目录中的makefile,最后将编译后的程序链接到u盘映像中。1顶层目录下的Makefile顶层目录下的Makefile负责U-Boot的整体配置编译。按照配置顺序阅读关键行。每种开发板都需要在Makefile中有一个开发板配置定义。例如,smdk2410开发板的定义如下:smdk
4、2410 _ config:unconfig。/MK config $(: _ config=)armam 920t smdk 2410 null s3c 24x 0在上述程序中,执行配置U-Boot命令使smdk2410_config,并通过。/mkconfig脚本。文件的内容由Makefile根据开发板的配置生成。Arch=arm cpu=arm 920 board=smdk 2410 soc=s3c 24 x 0,返回到顶层目录中Makefile的开头,以下程序包含这些变量定义:# load ARCH,BOARD,和CPU配置包括/config . mkexport ARCH CPU B
5、OARD厂商SOC makefile的编译选项和规则在顶层目录的config.mk文件中定义,各种体系结构的公共规则在该文件中直接定义,并且通过ARCH、CPU、BOARD和SOC等变量为不同的硬件平台定义不同的选项。不同体系结构的规则包含在ppc_config.mk、arm_config.mk、mips_config.mk和其他文件中。,顶层目录中的Makefile还定义了交叉编译器和编译U-Boot的目标文件,具体如下:ifeq ($(ARCH),Arm)CROSE _ COMPILE=Arm-Linux-/*交叉编译器的前缀*/# endif export CROSE _ COMPILE
6、 # U-Boot对象.顺序很重要(即必须首先启动)objs=中央处理器/$(中央处理器)/start.o/*与处理器相关的目标文件*/,libs=lib _ generic/libgeneric . a/*定义相关目录。在每个目录中,将目标文件连接到*。a file */libs=board/$(board dir)/lib $(board)。alibs=中央处理器/$(中央处理器)/lib $(中央处理器)。a ifdef SOC lips=CPU/$(CPU)/$(SOC)/lib $(SOC)。aendilibs=lib _ $(ARCH)/lib $(ARCH)。U-Boot映像编译
7、的依赖关系定义如下:all=U-Boot . srec U-Boot . binsystem . mapall 3360 $(all)U-Boot . srec : U-Boot $(OBJCOPY)$ OBJCFLAGS-O srec $ $ U-Boot . bin : U-Boot $(OBJCOPY)$ OBJCFLAGS-O二进制$ $ U-Boot : depend $(subders)$(OBJS)$(LIBS)$(LDSCRIPT),*(_u_boot_cmd_)。*)/-u1/p | sort | uniq;$(LD)$(LD flags)$ $ unde _ sym $(o
8、bjs)-开始-组$(libs)$(platform _ libs)-结束-组-映射u-boot。map-o u-boot,makefile的默认编译目标是all,包括u-boot。引导库和引导库依赖于引导库。u盘根据u盘映射地址表通过ld命令将目标文件组装成u盘。其他Makefile不再详细分析,上述代码分析应该为阅读代码提供参考。2开发板配置头文件定义程序中开发板的配置选项或参数,即配置头文件为include/configs/.h。替换为相应的板定义。头文件中定义了两种类型的变量:(1)选项:前缀是CONFIG_,用于选择处理器、设备接口、命令、属性等。例如,# define fig _
9、arm 920 t1 # define fig _ driver _ cs 89001,(2)参数:以CFG_为前缀,用于定义总线频率、串行端口波特率、闪存地址和其他参数。示例:# definecfg _ flash _ base0x 0000000 # definecfg _ prompt=,3编译结果根据对Makefile的分析,编译过程分为两个步骤:第一步是配置,例如:makesmdk2410 _ config第二步是编译并执行make命令。编译后,可以得到各种格式的u盘的图像文件和符号表,如表5-3所示。表5-3由引导编译生成的图像文件。u盘的三种镜像格式都可以刻录到闪存中,但是需要知
10、道加载程序是否能够识别这种格式。一般来说,u盘是最常用的格式,可以根据二进制格式直接下载,根据绝对地址写入闪存。Boot和Boot.srec格式的图像有自己的定位信息。引导工具在工具目录中也有一些引导工具,其中一些是经常使用的。表5-4说明了几种工具的使用。表5-4U-Boot工具,它们都有源代码,所以你可以参考它们来重写其他工具。Mkimage是一个通用工具,Linux内核映像和内存磁盘文件系统映像都可以转换成u盘格式。5.2.4 U盘移植u盘可以支持多种架构的处理器,支持越来越多的开发板。因为引导程序完全依赖于硬件平台,所以有必要在新的电路板上移植引导程序。在开始移植uboot之前,先熟悉
11、待移植平台的硬件电路板和处理器,确认uboot是否已经支持新开发的板的处理器和输入输出设备。如果u盘已经支持类似的电路板,迁移过程将非常简单。移植u盘的工作是添加与开发板硬件相关的文件,配置选项,然后配置和编译。在开始迁移之前,有必要分析U-Boot已经支持的开发板,并将开发板与最近的硬件配置进行比较。选择的原则是:第一,处理器是相同的;第二,处理器架构是相同的;然后是外围接口,如以太网接口。下面以S3C2410的开发板fs2410为例来说明u盘的移植。迁移过程参考SMDK2410开发板,该开发板已在U-Boot-1.1.2中得到支持。移植u盘的基本步骤如下。(1)在顶部Makefile:sm
12、dk 2410 _ config : unconfig中为开发板添加新的配置选项。/MK config $(: _ config=)armamm 920t smdk 2410完整的S3C24x0请参阅以上两行程序。编写以下两行程序:fs2410 _ config:unconfig。/mkconfig $(: _ config=)armam 920 TFS 2410 null s3c 24x 0,(2)创建一个新目录来存储开发板的相关代码,并添加以下文件:board/fs 2410/config . mkboard/fs 2410/flash . cbboard/fs 2410/fs 2410
13、. cbboard/fs 2410/makefileboard/fs 2410/memsetup . sboard/fs 2410/u-boot . LDS。(4)配置开发板,即,使fs2410_config(5)编译U-Boot。执行make命令,成功编译后就可以获得u盘映像。一些错误与配置选项有关。通常,打开某些功能选项会带来错误,并且参考板的配置将尽可能相同。(6)添加驱动程序或功能选项。在编译的基础上,实现了u盘以太网接口和闪存读写功能。FS2410开发板的以太网驱动程序与smdk2410完全相同,可以直接使用。CS8900驱动文件如下:drivers/cs 8900 . cdiver
14、s/cs 8900 . h闪存的选择比较复杂,受闪存芯片价格或购买因素的影响。因为大多数开发板都有不同的尺寸和型号,所以有必要移植闪存驱动程序。每个开发板目录下通常都有一个Flash.c文件,需要根据具体的Flash类型进行修改。(7)调试u盘源代码,直到u盘可以在开发板上正常启动。5.2.5添加引导命令引导命令为用户提供交互功能,并实现了几十个常用命令。如果开发板需要特殊操作,您可以添加一个新的U-Boot命令。每个引导命令都是由引导宏定义的。宏在include/command.h头文件中定义,每个命令定义一个cmd_tbl_t结构。示例:#定义u _ boot _ cmd(名称,maxar
15、gs,rep,cmd,用法,帮助)cmd _ TBL _ t _ U _ Boot _ cmd _ name # struct _ section=# name,maxargs,rep,cmd,用法,帮助,每个U-Boot命令结构中包含的成员变量有:命令名称,最大参数数,重复次数,命令执行函数,用法和帮助。从控制台输入的命令由common/command.c中的程序解释和执行.Find_cmd()负责匹配输入命令,并从列表中找到相应的命令结构。基于U-Boot命令的基本框架,通过分析简单的icache操作命令,可以掌握添加新命令的方法。(1)定义缓存命令。所有U-Boot命令的标志位在incl
16、ude/cmd_confdefs.h中定义,即# definecfg _ cmd _ cache0x 0000010 ull/* icache、dcache */其他命令也在此定义。(2)实现缓存命令的操作功能。以下是/cmd_cache.c文件中icache命令的代码:# if (config _ commands,int do _ icache (cmd _ TBL _ t * cmdtp,int flag,int argc,Char *argv) /*指令cache *的操作函数/switch (argc)情况2: /*如果参数个数为1,则执行打开或关闭指令Cache的操作*/switch (on _ off (argv1)情况03360 icache _ disable();/*打开指令缓存*/中断;案例1: icache _ enable();/*关闭指令缓存*/中断;/* FALL THUMB */case 1:/*如果参数数为0,则获取指令缓
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Photoshop期末考试试题及详细答案
- (2026)国家事业单位政治理论知识答题题库及答案
- 矿石筛分清洗操作工规程
- 2026年砌筑工(高级)考试真题及答案
- 2026安全培训考试题及答案
- 输尿管支架相关不适综合干预共识
- PCB设计面试题+威海科目一试题(含详细答案)
- 肿瘤脊髓压迫大小便功能重建方案共识
- 2026年高级项目管理师考试例题理论模拟题及答案
- 2026年急救护士招聘面试题库及参考答案
- 全国大学生职业规划大赛《法学》专业生涯发展展示【获省级一等奖】
- 2024年10月高等教育自学考试《08119管理会计》试卷附参考答案
- 《人工智能基础与应用(微课版)》课件 第二章 机器学习基础
- 2025年宝武作业长培训考试题库
- 内勤人员管理办法
- 学堂在线 中医养生方法学 章节测试答案
- 小学课程与教学论课件 第四章 小学课程与教学的内容和选择
- 银行网点保洁服务流程与标准
- 蜜雪冰城加盟协议合同
- 钢结构防腐涂装培训课件
- 2025燃气蒸汽联合循环机组SCR脱硝氨水尿素直喷制氨技术规程
评论
0/150
提交评论