uboot各种目录下的文件作用

uboot下载地址:http://ftp.denx.de/pub/u-boot/

1、目录分布

2、目录结构变化:

u-boot-2010.03及以前版本 ├── api                存放uboot提供的接口函数 ├── board              根据不同开发板定制的代码,代码也不少 ├── common             通用的代码,涵盖各个方面,已命令行处理为主 ├── cpu                与体系结构相关的代码,uboot的重头戏 ├── disk                磁盘分区相关代码 ├── doc                文档,一堆README开头的文件 ├── drivers            驱动,很丰富,每种类型的设备驱动占用一个子目录 ├── examples           示例程序 ├── fs                 文件系统,支持嵌入式开发板常见的文件系统 ├── include            头文件,已通用的头文件为主 ├── lib_【arch】        与体系结构相关的通用库文件 ├── nand_spl           NAND存储器相关代码 ├── net                网络相关代码,小型的协议栈 ├── onenand_ipl ├── post               加电自检程序 └── tools              辅助程序,用于编译和检查uboot目标文件

从u-boot-2010.06版本开始把体系结构相关的内容合并,原先的cpu与lib_arch内容全部纳入arch中,并且其中增加inlcude文件夹;分离出通用库文件lib。u-boot-2010.06及以后版本

├── api                存放uboot提供的接口函数 ├── arch               与体系结构相关的代码,uboot的重头戏 ├── board              根据不同开发板定制的代码,代码也不少 ├── common             通用的代码,涵盖各个方面,已命令行处理为主 ├── disk                磁盘分区相关代码 ├── doc                文档,一堆README开头的文件 ├── drivers            驱动,很丰富,每种类型的设备驱动占用一个子目录 ├── examples           示例程序 ├── fs                 文件系统,支持嵌入式开发板常见的文件系统 ├── include            头文件,已通用的头文件为主 ├── lib                通用库文件 ├── nand_spl           NAND存储器相关代码 ├── net                网络相关代码,小型的协议栈 ├── onenand_ipl ├── post               加电自检程序 └── tools              辅助程序,用于编译和检查uboot目标文件

3、移植工作涉及的目录情况

从uboot代码根目录,可以看出其已经非常庞大,功能也很丰富。 移植工作最主要的是看对应的处理器和开发板代码,2010.06版本以后处理器相关的代码集中在arch、board目录。(以前版本主要在cpu和board目录) 先看一下arch目录: arch ├── arm ├── avr32 ├── blackfin ├── i386 ├── m68k ├── microblaze ├── mips ├── nios2 ├── powerpc ├── sh └── sparc

如果我们移植的是mips的处理器,所以参考一下arch/mips目录:

arch/mips ├── cpu ├── include └── lib

arch/mips目录下有三个目录,其他的处理器目录下也是这个结构: cpu子目录对应一种处理器的不同产品型号或者系列; include子目录是处理器用到的头文件; lib目录对应用到处理器公用的代码;

下面看看cpu下的内容,arch/mips/cpu目录下的内容:

arch/mips/cpu ├── asc_serial.c ├── asc_serial.h ├── au1x00_eth.c ├── au1x00_serial.c ├── au1x00_usb_ohci.c ├── au1x00_usb_ohci.h ├── cache.S ├── config.mk ├── cpu.c ├── incaip_clock.c ├── incaip_wdt.S ├── interrupts.c ├── Makefile └── start.S          整个uboot代码入口点

目前最新版本(2011.6版本开始)中cpu目录中建立mips32目录,把incaip和au1x00也分类放在不同的目录中。

u-boot.lds是ld程序也就是连接器的脚本文件,这个文件描述了如何连接目标文件,ld程序会根据这个文件的指示按照需求把不同的目标文件连接在一起生成供烧写到开发板的程序。 该文件放在board对应的目录中。

4、移植u-boot的版本选择情况

由于u-boot的各版本没有重大变化,各版本移植起来基本相同,也正因为如此,大多数版本均有人移植过,主要是arm体系结构的。 如cortex A8使用 u-boot-1.3.4;cortex M3 上u-boot-1.1.6、u-boot-1.2.0等均有人移植过。 考虑到我们目前的编译器较新,编译旧版本u-boot时会出现错误,警告也很多;新版本的u-boot目录结构也较清晰,因此选用较新版本的u-boot。 最新版本(2011.06)Makefile中没有mips的部分,不知道为什么。(2011.03版本中同样也是) u-boot-2010.12的Makefile没有问题,编译incaip通过,没有任何警告和错误,因此最终选择u-boot-2010.12作为我们的移植版本。

参考博客:http://blog.chinaunix.net/uid-24951403-id-2212590.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java3y

SVN就是这么简单

什么是SVN SVN全称:Subversion,是一个开放源代码的版本控制系统 Svn是一种集中式文件版本管理系统。集中式代码管理的核心是服务器,所有开发者在开...

2173
来自专栏北京马哥教育

如何在一个 U 盘上安装多个 Linux 发行版

1355
来自专栏SDNLAB

P4语言编程快速开始

经过前两篇的P4理论介绍,相信大家已经对P4有个基本的了解了,本片文章为大家带来P4语言编程实战。 1、系统环境安装 P4项目的官方文档上都是以Ubuntu为例...

3566
来自专栏FreeBuf

如何开始对Android应用的逆向分析?

本文是我的关于如何开始Android逆向系列文章的第一部分。在文末提供了一个文档,你可以根据该文档说明部署同我一样的实验环境。

693
来自专栏24K纯开源

QT程序在发布的时候应注意的地方

---恢复内容开始---     我们用QT开发好的应用程序,如果要发布到其他计算机上运行怎么办呢?我们在用VC编程时,单独运行编译好的可执行文件时,经常会发现...

1875
来自专栏源哥的专栏

开发统一的博客接口

现在博客很流行,很多人都在使用博客,有些人同时拥有几个不同的博客网站,不知你有没有这样的烦恼,就是你写了一篇文章,这时想传到不同的博客网站上去,就得打开不同的...

743
来自专栏机器学习和数学

[无聊的软件安装]VMware Workstation和Xshell安装与使用

后台回复 VMware 可以获得word版 虽然说这个挺简单的,但是刚开始接触,还是会走弯路,遇到问题还是不知道怎么解决,所以我就把整个流程整理了一下,供大家参...

3376
来自专栏云计算教程系列

如何在Debian 9上安装NFS共享

网络文件系统(NFS)是一种文件系统协议,允许类Unix系统的用户通过网络访问文件,就像使用本地存储一样。这对于跨Internet上的多个腾讯云CVM服务器或其...

811
来自专栏建站达人秀

如何搭建 Firekylin 博客

FireKylin 是基于国内先进的 Node.js 框架 ThinkJS 2.0 开发的通用博客系统,是由奇虎360公司Web前端工程师组成的专业团队 75T...

340
来自专栏青玉伏案

Git版本控制Windows版快速上手

  说到版本控制,之前用过VSS,SVN,Git接触不久,感觉用着还行。写篇博文给大家分享一下使用Git的小经验,让大家对Git快速上手。   说白了Git就是...

1828

扫码关注云+社区