现在的位置: 首页 > 综合 > 正文

(五)u-boot2013.01.01 for s5pv210:《移植前的准备及u-boot初编译》

2017年12月14日 ⁄ 综合 ⁄ 共 3287字 ⁄ 字号 评论关闭

转载请注明地址:http://blog.csdn.net/zsy2020314/article/details/9329051

移植前的准备

      
移植前,要做的事情是搭建开发环境以及对U-boot源码的获取。首先说一下开发环境:

1.此次U-boot移植的硬件平台是天嵌的TQ210开发板:

       CPU板载核心是S5PV210(CortexA8),最高1GHz的主频。

       FLASH型号为K9K8G08U,容量大小为1G,为SLC类型的NandFlash

      
RAM
内存为DDR2    1GB

2.移植开发环境:

      开发环境的搭建网上有许多资料,天嵌本身的开发板使用手册也有详细的图文介绍,所以在此就不做详细的搭建方法。很多新手在搭建环境上会遇到一些困难,但笔者认为,这是基本工,新手要敢于多亲自实践,多折腾就能熟能生巧,在开发环境的基本搭建上千万不要怕累怕麻烦,因为下面的路还长着。

2.1 Linux环境:天嵌提供的Unbuntu-11.0164bit,笔者安装在真机上,Win8    
Ubuntu
双系统。双系统安装方法使用系统引导软件EasyBCD,然后使用天嵌提供的 Ubuntu的安装光盘。具体安装方法见文档《TQ210的开发板使用手册.pdf》。

2.2工具链:使用天嵌提供的交叉工具链,该工具采用gcc-4.4.6版本,针对s5pv210   采用的CortexA8ARM核,以及ARMv7指令集和硬件浮点特性做了优化。具体  安装方法见文档《TQ210的开发板使用手册.pdf》。

2.3代码编辑:工程代码编辑笔者采用的是Eclipse,可以自行在Ubuntu软件商店安装     
Eclips
或者采用天嵌提供的Eclipse,这里使用它仅仅用来查看和编辑U-boot代码。  个人感觉Eclipse还是很好用的!

3.U-boot简介以及源码获取

3.1 U-boot简介

      这里对U-boot做简单的介绍,对于新手来说,总不能对这个敌人一无所知吧,在此做一个小小的扫盲吧。

       U-boot全称UniversalBootLoader,即通用bootloader。它是德国DENX小组的开发用于多种嵌入式CPUbootloader程序,UBoot不仅仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD,VxWorks,QNX,RTEMS,ARTOS,LynxOS嵌入式操作系统。UBoot除了支持PowerPC系列的处理器外,还能支持MIPSx86ARMNIOSXScale等诸多常用系列的处理器。

3.2 U-boot源码获取以及解压方法

    
 U-boot的代码可以从官方的FTP服务器上获取,地址是:ftp://ftp.denx.de/pub/u-boot/。当前最新版本是2013.01.01。代码是按照一定时间周期更新的,命名方式由以前的数字命名更换为以时间的方式命名,笔者认为这样更直接更简单。当然,可以拿比较新的版本跟以前的老版本比较,结构和代码的具体实现是有很多差异的,笔者认为新版的U-boot结构更合理,代码更简练,移植更方便。不管工程结构和代码怎么变,不变的是原理和整体框架,只要牢牢抓住这些本质的东西,你就能所向披糜。

      
下载代码后,在Ubuntu中可以直接鼠标右键,使用归档管理器解压到当前目录下。当然也可以终端中,先使用cd命令切换到代码包的目录下,例如,如果源码包是u-boot-2013.01.01.tar.bz2,那么应该使用:sudotar-xvf u-boot-2013.01.01.tar.bz2,即可解压到当前目录下。

3.3U-boot代码结构介绍

      
解压后我们看看新版本U-boot的代码结构,如图1所示。那么我们就来逐一介绍一下各个目录的功能和内容。如果需要更详细的目录介绍信息,请参阅U-boot根目录下的README文件。


1

1.api:一些系统调用,包含有显示用的api,网络部分的api,和一些跟平台相关但独立出来的api。是一个扩展应用的独立的api库。

2.arch与特定CPU架构相关目录,每一款Uboot下支持的CPU在该目录下对应一个子目录,比如有子目录arm就是我们开发板上使用的硬件体系目录。而arch/arm/目录下的cpu目录就是对应ARM体系的cpu目录,里边的armv7就是我们此次移植的重点对象,s5pv210就是armv7架构的cpu

3.board:和一些已有开发板有关的文件.每一个开发板都以一个子目录出现在当前目录中。例如,smdkc100就是官方以s5pc100为核心的开发板的相关文件。该目录和上一个arch目录是严重依赖硬件平台的,移植之初要改动最多的也是这两个目录。

4.common目录:主要实现uboot命令行下支持的命令,每一条命令都对应一个文件。例如bootm命令对应就是cmd_bootm.c

5.disk对磁盘的支持。

6.doc文档目录。Uboot的文档还是比较完善的,推荐大家参考阅读。

7.drivers:Uboot支持的设备驱动程序都放在该目录,比如各种网卡、支持CFI的Flash、串口和USB。

8. dts:从u-boot的readme文件中获取到的信息,我的理解是dts = device trees ,有兴趣的可以参考u-boot的readme文件中对

              CONFIG_OF_IDE_FIXUP和CONFIG_OF_EMBED这两个宏的描述。

9.  examples:一些独立运行的应用程序的例子。

10. fs:支持文件系统的文件,u-boot现在支持cramfs、fat、fdos、jffs2、yaffs和registerfs。

11. Include:头文件,还有对各种硬件平台支持的会变文件,系统的配置文件和对文件系统支持的文件。

12. lib:通用的多功能库函数实现。例如字符串的一些常用函数就在string.c中实现。

13. nand_spl:支持从nand flash启动,但支持的cpu的种类也不是很多。
14.net:与网络有关的代码,BOOTP协议、TFTP协议RARP协议和NFS文件系统的实现。

15. post:上电自检程序。

16. spl:镜像分离的实现,一般用在SD卡启动。

16. test:测试命令的实现,测试系统是否运行正常时使用。

17. tools:创建S-Record格式文件和U-BOOT images的工具。

18. boards.cfg:目标板配置参数文件,里边有很多种目标板的配置参数。

19. config.mk:这个文件里面主要定义了交叉编译器及选项和编译规则。

20. COPYING:软件的使用条款声明。

21. CREDITS:U-boot开发者的联系方式。

22. helper.mk:生成u-boot.list文件,文件包含程序编译对象信息等。

23. MAINTAINERS:各个硬件架构软件维护者的联系方式。

24. MAKEALL:创建多个目标板的配置,一般用不到。

25. Makeflie:U-boot的makefile,主要用来编译链接并生成U-boot镜像。

26. mkconfig:建立工程需要的一些软链接并创建配置文件config.h。

27. README:U-boot的介绍信息,最好能花点时间看看,多了解一些关于U-boot的信息。

28. rules.mk:U-boot工程编译依赖规则。

29.snapshot.commit:U-boot序列号和发布时间的快照。

4.u-boot初次编译尝试
         即便是新下载的没有任何修改的u-boot,大家也可以尝试着编译一下,因为u-boot本身就已经对一些评估板做了支持,比如smdkc100。那么编译方法为:

$make clean
$make smdkc100_config
$make 
       
       最后的make可以使用 -j 选项,例如你的电脑是4核的,那么就make -j4吧,编译速度刷刷的!

抱歉!评论已关闭.