预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共26页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

1.1U-Boot初步分析U-Boot,全称为UniversalBootLoader(通用bootloader),是遵循GPL条款的开放源码项目。由德国DENX小组开发和维护的,其高超的技术使得U-Boot能够非常容易地被移植到多种嵌入式CPU中,支持多种嵌入式操作系统内核的引导。不少U-Boot源码就是linux内核源码的简化,特别是一些设备的驱动程序,使得它在引导LinuxKernel方面尤为出色。本文选用当前最新版本的U-Boot,结合S3C6410处理器自身的特点,分析和探讨它的移植要点。笔者认为移植工作必须在充分理解源码的组织方式、处理器特点、单板外围器件原理等基础上进行。充分利用源码已经实现的功能,最小限度地破坏源码的结构。1.1.1源码结构迄今为止,U-Boot的最新版本u-boot-2013.04-rc1.tar.bz2,U-Boot所有版本的下载地址为:http://ftp.denx.de/pub/u-boot/。rc(ReleaseCandidate)表示正式发行候选版,1代表版本号,rc1即候选版的第一版。rc版本发布于软件的正式定稿之前,期间不会再加入新的功能或模块,这一版本的发布主要是为了让开源社区经验丰富的开发者,率先试用以及时反馈和修正源码中存在的错误、漏洞,这个阶段过后就会发布相对稳定的正式版。作者在移植该版本的时候,发现几处较为明显的错误,并通过U-Boot的邮件列表反馈了这些错误信息。这些错误的位置以及修正方法将会在移植的时候逐一介绍。读者阅读本书时,u-boot-2013.04正式版本可能已经发布,甚至有更新版本的源码发布。其实U-boot版本间的差别并不是很大,较新版本仅仅在前面版本的基础上,增加或者修改了一些驱动程序,对源码的结构稍微的调整,但核心内容不会做太大的改变。但相比2010-03以前的版本,U-Boot后面的版本的源码组织结构作了较大的调整,使得其源码目录、编译形式与LinuxKernel源码愈加相似。liqiang@ubuntu:~/work/forbook$tar-jxvfu-boot-2013.04-rc1.tar.bz2-C./输入tar命令,解压源码到当前文件夹。进入u-boot-2013.04-rc1目录,其中有个文件名为“readme”的帮助文档,通读readme文件,我们能够大体上了解U-Boot获得和寻求帮助的途径,源码目录的组织结构,工程配置、编译的方法等。U-Boot顶层目录存在很多子目录,下面介绍一些主要的目录:1)arch对应不同构架的CPU,子目录的名字就是所支持的CPU构架的名称,如arch目录下含有arm、avr32以及x86等,这些目录可以继续细分。例如arm下含有cpu、include和lib等目录,其中cpu用于进一步区分不同体系的arm内核。2)common该目录存在的是一些公共的通用代码文件,包括用于实现各种公共命令的cmd_*.c、env_*.c文件已经一些通用函数。它们独立于处理器的体系结构,直接跟用户打交道,是用户与设备驱动之间沟通的纽带,也是U-Boot的精髓所在。3)drivers该目录存放的是各类外设的驱动程序,如mmc、serial和net等。4)fs支持文件系统。5)net该目录里面的文件实现了各种网络协议。6)nand_spl实现U-Boot从NANDFlash中启动的设备驱动。7)include一些头文件和单板配置文件,所有单板配置的文件位于include/configs目录下。8)tools常用工具,包括用于制作uImage的mkimage工具。9)Makefile文件控制着整个工程的编译。1.1.2建立模板u-boot-2013-04-rc1中没有对S3C6410处理器相关单板的支持,但支持带有S3C6400处理器的SMDK6400单板。如果我们要自己编写所有的启动代码,工作量很大且很容易出错。S3C6400和S3C6410是三星公司推出的S3C64xx系列的处理器,都是基于16/32-bitRISC内核的低成本、低功耗、高性能微处理器解决方案。它们大致功能基本相同,硬件管脚兼容。如果用现有的SMDK6400作为模板,就能够帮助我们迅速地建立起一个大致的框架,后期再根据二者的异同点填充、修改框架的内容。事实上,就算U-Boot源码中支持S3C6410相关的单板,由于嵌入式系统应用的场合不一样、需求不同,因此单板之间的配置不可能完全一致,移植U-boot的工作也必须根据实际情况进行。在本节内容中,将会带领大家一步一步地建立一个能够通过编译最小模板,修正一些源码自身的错误,更多功能的移植再分章节具体阐述。1.修改顶层Makefileliqiang@ubuntu:~/work/forbook$cdu-boot-201