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

时间:2023-02-14 14:17:28

移植前的准备

移植前,要做的事情是搭建开发环境以及对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所   采用的CortexA8的ARM核,以及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小组的开发用于多种嵌入式CPU的bootloader程序,UBoot不仅仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD,VxWorks,QNX,RTEMS,ARTOS,LynxOS嵌入式操作系统。UBoot除了支持PowerPC系列的处理器外,还能支持MIPS、x86、ARM、NIOS、XScale等诸多常用系列的处理器。

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根目录下的README文件。

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

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吧,编译速度刷刷的!


(五)u-boot2013.01.01 for TQ210:《移植前的准备及u-boot初编译》的更多相关文章

  1. 从零开始之uboot、移植uboot2017.01(一、移植前的准备)

    手边的是一个S5PV210的开发板,想尝试移植一个比较新的uboot 下载最新版本uboot2018. ftp://ftp.denx.de/pub/u-boot/ 编译器下载 http://www.v ...

  2. (一)u-boot2013.01.01 for TQ210:《Uboot简介》

    一直想写一个s5pv210硬件平台的u-boot的移植文档,但一直都忙着没时间写.先写一些u-boot的脚本分析吧,包括makefile,mkconfig,config.mk,主要侧重于语法句意的分析 ...

  3. (二)u-boot2013.01.01 for TQ210:《Makefile分析》

           当时写的时候看的是2012-10版本的,但是略对比了一遍和2013.01.01没什么改动,所以这不影响对2013.01.01版本的makefile的理解.本文比较侧重于语法句意的分析,框 ...

  4. 01: 企业微信API开发前准备

    目录:企业微信API其他篇 01: 企业微信API开发前准备 02:消息推送 03: 通讯录管理 04:应用管理 目录: 1.1 术语介绍 1.2 开发步骤 1.1 术语介绍返回顶部 参考文档:htt ...

  5. 2015.12.25-2016.01.01 大论文迭代B

    大论文B轮迭代,稍重前端 12.25 周五,完善摘要 12.26 周六,完善第一章 12.27 周天,完善第二章 12.28 周一,完善第三章 12.29 周二,完善第四章 12.30 周三,完善第五 ...

  6. org.codehaus.jackson.map.JsonMappingException: Can not construct instance of java.util.Date from String value '2012-12-12 12:01:01': not a valid representation (error: Can not parse date "2012-12-

    Jackson对于date的反序列化只支持几种,如果不符合默认格式则会报一下错误 org.codehaus.jackson.map.JsonMappingException: Can not cons ...

  7. (六)u-boot2013.01.01 for TQ210:《精简u-boot文件目录,定制自己的目标板》

    1. 删改U-boot代码结构 把不用到的和与我们s5pv210移植无关的硬件平台代码统统删除,眼不见为净.这样代码看起来就干净利落多了. 1.1.进入arch目录,删掉除arm以外的目录 处理前: ...

  8. (四)u-boot2013.01.01 for TQ210:《mkconfig分析》

    config.mk主要功能是配置单板信息和编译环境,将会被u-boot的makefile所调用,本文仍然侧重于句法分析. ####################################### ...

  9. (三)u-boot2013.01.01 for TQ210:《mkconfig分析》

    /* 和分析makefile一样,分析mkconfig同样注重句法分析 */ ############################################################# ...

随机推荐

  1. ASP.NET 控件前缀命名规范

    标准控件 1  btn Button 2  chk CheckBox 3  ckl CheckedListBox 4  cmb ComboBox 5  dtp DateTimePicker 6  lb ...

  2. Groovy入门教程

    Groovy入门教程 kmyhy@126.com  2009-5-13 一.groovy是什么 简单地说,Groovy 是下一代的java语言,跟java一样,它也运行在 JVM 中. 作为跑在JVM ...

  3. header的安全配置指南

    0x00 背景 在统计了Alexa top 100万网站的header安全分析之后(2012年11月 - 2013年3月 - 2013年11月),我们发现其实如何正确的设置一个header并不是一件容 ...

  4. IOS 遍历未知对象的属性和方法

    /* 注意:要先导入ObjectC运行时头文件,以便调用runtime中的方法*/ #import <objc/runtime.h> @implementation NSObject (P ...

  5. ASP&period;NET播客&lpar;留言时间&comma;投票IP&comma;留言限字数&comma;上传视频&rpar;

    留言发布时间功能: 界面: 前台代码: 在Datalist控件中: 在<%#getIsDate(Convert.ToString(Eval("issuanceDate"))) ...

  6. R实战 第三篇:数据处理(基础)

    数据结构用于存储数据,不同的数据结构对应不同的操作方法,对应不同的分析目的,应选择合适的数据结构.在处理数据时,为了便于检查数据对象,可以通过函数attributes(x)来查看数据对象的属性,str ...

  7. SDVN

    Software Defined Vehicular Networks VANET 车载自组网(VANET)是指在交通环境中车辆之间.车辆与固定接入点之间及车辆与行人之间相互通信组成的开放式移动Ad ...

  8. Marriage Match III HDU - 3277(二分权值 &plus; 拆点 建边)

    题意: 只不过是hdu3081多加了k种选择 想一下,最多能玩x轮,是不是就是每个女生能最多选x个男生 现在题中的每个女生比3081多了k中选择   那就把女生拆点  i  i‘ i --> i ...

  9. rand&lowbar;1tom 产生 rand&lowbar;1ton

    给定一个等概率随机产生1~M的随机函数rand1ToM如下: public int rand1ToM(int m) { return (int) (Math.random() * m) + 1; } ...

  10. 使用Intel IPT技术保护您的帐号安全

    使用Intel IPT技术保护您的帐号安全