(五)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同样注重句法分析 */ ############################################################# ...
随机推荐
- POJ3630Phone List(字典树)
经典的字典树的题目了,这次完全是按照自己的风格来写的,没有参考其他人的代码风格来写. 分析:如果采用常规的暴力枚举,那么复杂度就是O(n*n*str.length) = O(10^9),这明显是会超时 ...
- How Tomcat Works(六)
本文继续分析HttpProcessor类,该类实现了org.apache.catalina.Lifecycle接口和java.lang.Runnable接口 我们先分析它的构造函数 /** * The ...
- IAP内购
IAPHelper.h // // IAPHelper.h // airplay // // Created by apple on 13-10-23. // Copyright (c) 2013年 ...
- mongodb索引操作
创建索引 db.table.ensureIndex({name:1}) 创建联合索引 db.table.ensureIndex({"table.name":1,"tabl ...
- Castle学习笔记----初探IOC容器
通常IOC实现的步骤为-->建立容器-->加入组件-->获取组件-->使用组件. 1.建立容器 建立容器也就是IWindsorContainer.接着我门要向容器中注册服务,并 ...
- CloudStack 4.2 与CloudStack 4.1二级存储API发生变化
CloudStack 4.1查看二级存储 http://192.168.150.16:8080/client/api?command=listHosts&response=json&s ...
- SRM 451 DIV 1 总结
250p:这次是有史以来做的最快的一次250p...看题花了两分钟,敲代码最多一分钟...太明显了题意~ 500p:这题水了...每次都这样...很显然用DP来做,不过前面状态表示有问题了...搞了好 ...
- 微价值:专訪《甜心爱消除》个人开发人员Lee,日入千元!
[导语]我们希望能够对一些个人开发人员进行专訪,这样大家更能显得接地气,看看人家做什么,怎么坚持.<甜心爱消除>作者Lee是三群的兄弟,也关注微价值.微价值的文章还是能够的,得到一些业内大 ...
- Django 1.6 最佳实践: 如何设置django项目的设置(settings.py)和部署文件(requirements.txt)
Django 1.6 最佳实践: 如何设置django项目的设置(settings.py)和部署文件(requirements.txt) 作者: Desmond Chen,发布日期: 2014-05- ...
- C#的WinForm中制作饼状图和柱状图
using System; using System.IO;//用于文件存取 using System.Data;//用于数据访问 using System.Drawing;//提供画GDI+图形的基 ...