(五)u-boot2013.01.01 for TQ210:《移植前的准备及u-boot初编译》
移植前的准备
移植前,要做的事情是搭建开发环境以及对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文件。
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序列号和发布时间的快照。
(五)u-boot2013.01.01 for TQ210:《移植前的准备及u-boot初编译》的更多相关文章
- 从零开始之uboot、移植uboot2017.01(一、移植前的准备)
手边的是一个S5PV210的开发板,想尝试移植一个比较新的uboot 下载最新版本uboot2018. ftp://ftp.denx.de/pub/u-boot/ 编译器下载 http://www.v ...
- (一)u-boot2013.01.01 for TQ210:《Uboot简介》
一直想写一个s5pv210硬件平台的u-boot的移植文档,但一直都忙着没时间写.先写一些u-boot的脚本分析吧,包括makefile,mkconfig,config.mk,主要侧重于语法句意的分析 ...
- (二)u-boot2013.01.01 for TQ210:《Makefile分析》
当时写的时候看的是2012-10版本的,但是略对比了一遍和2013.01.01没什么改动,所以这不影响对2013.01.01版本的makefile的理解.本文比较侧重于语法句意的分析,框 ...
- 01: 企业微信API开发前准备
目录:企业微信API其他篇 01: 企业微信API开发前准备 02:消息推送 03: 通讯录管理 04:应用管理 目录: 1.1 术语介绍 1.2 开发步骤 1.1 术语介绍返回顶部 参考文档:htt ...
- 2015.12.25-2016.01.01 大论文迭代B
大论文B轮迭代,稍重前端 12.25 周五,完善摘要 12.26 周六,完善第一章 12.27 周天,完善第二章 12.28 周一,完善第三章 12.29 周二,完善第四章 12.30 周三,完善第五 ...
- 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 ...
- (六)u-boot2013.01.01 for TQ210:《精简u-boot文件目录,定制自己的目标板》
1. 删改U-boot代码结构 把不用到的和与我们s5pv210移植无关的硬件平台代码统统删除,眼不见为净.这样代码看起来就干净利落多了. 1.1.进入arch目录,删掉除arm以外的目录 处理前: ...
- (四)u-boot2013.01.01 for TQ210:《mkconfig分析》
config.mk主要功能是配置单板信息和编译环境,将会被u-boot的makefile所调用,本文仍然侧重于句法分析. ####################################### ...
- (三)u-boot2013.01.01 for TQ210:《mkconfig分析》
/* 和分析makefile一样,分析mkconfig同样注重句法分析 */ ############################################################# ...
随机推荐
- JS的一些小验证
1,文本框只能输入数字代码(小数点也不能输入) <input onkeyup="this.value=this.value.replace(/\D/g,'')" onafte ...
- libevent中定时器的使用方法
#include <stdio.h> #include <stdlib.h> #include <sys/time.h> #include <signal.h ...
- OC:继承、初始化方法、便利构造器
A继承 的作用就是为了,节省代码. 继承 :子类会继承父类 里面所有的内容 思想 :凡是继承过来的实例变量和方法 都是自己的(是从父类遗传过来的) 继承的使用场景 : 当我们多 ...
- gulp安装和使用简介
一. gulp和grunt对比 grunt目前的工作流程:读文件.修改文件.写文件——读文件.修改文件.写文件——... gulp目前的工作流程:读取文件——修改文件——修改文件...——写文件 二. ...
- Binary Search
Binary Search [原文见:http://www.topcoder.com/tc?module=Static&d1=tuto ...
- Codefoces 429 D. Tricky Function
裸的近期点对.... D. Tricky Function time limit per test 2 seconds memory limit per test 256 megabytes inpu ...
- BZOJ 1084: [SCOI2005]最大子矩阵 DP
1084: [SCOI2005]最大子矩阵 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1084 Description 这里有一个n* ...
- Shadow Mapping 的原理与实践(二)
3) 定义并生成Shadow Map纹理 texture2D Lamp0ShadowMapColor : RENDERCOLORTARGET < float2 ViewPortRatio = { ...
- Ubuntu 14.04 Android 使用Maven二 创建自己的Mavenproject
依据https://code.google.com/p/maven-android-plugin/wiki/GettingStarted 介绍,有两种方法能够创建Mavenproject. 第一种方法 ...
- INDY idhttp Post用法
http://www.cnblogs.com/tk-del/archive/2013/05/10/3071541.html function Post(AURL: string; ASource: T ...