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 条评论
登录 后参与评论

相关文章

来自专栏Python自动化测试

Python接口自动化测试之文件上传(二十二)

在接口测试中,经常会涉及到文件上传,文件上传一般包含的文件是图片,视频以及如csv,excel,记事本等文件,它的请求头中Content-Type对应...

4863
来自专栏源哥的专栏

开发统一的博客接口

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

803
来自专栏liulun

让git不再跟踪配置文件的变化

1252
来自专栏后端技术探索

狼厂项目实践:通用检索框架准实时流的设计与实现

检索对实时性的要求很高,不仅是对索引建立、结果召回、策略干扰等核心部分,也包括数据录入的部分。检索的数据流主要包括全量数据与增量数据,其中全量数据是在运行前就已...

821
来自专栏精讲JAVA

MySQL 中的重做日志,回滚日志以及二进制日志的简单总结

来源:MSSQL123 , www.cnblogs.com/wy123/p/8365234.html 转自:ImportNew MySQL中有六种日志文件,分别...

5817
来自专栏bboysoul

asciinema linux下录制终端屏幕的软件

asciinema是一款linux下终端录制的软件,非常好玩也非常牛逼,关键是可以非常方便的录制,录制完成之后也可以非常方便的嵌入网页之中。

873
来自专栏运维一切

SWOOLE之代码热更新实现_持续的思考 转

本人参与的swoole项目有幸被很多朋友使用,我也大力向周边的一些朋友推荐,随着swoole的版本迭代更新,已经足够稳定了,在阿里,腾讯,yy等各大公司都有着使...

1121
来自专栏Python爬虫与数据挖掘

如何给Centos系统的虚拟机更改主机名

有的小伙伴们发现Centos系统中主机名很长,想着更改主机名,换个简单的主机名,但是又不知道怎么做。其实这个问题的解决方案很简单的,默认情况下,虚拟机的...

913
来自专栏喵了个咪的博客空间

[喵咪MQ(3)]RabbitMQ集群安装配置

[喵咪MQ(3)]RabbitMQ集群安装配置 ? 在各项生产环境使用中,容灾总是一个很重要的话题,如果单点故障会导致整个系统奔溃或者是丢失数据是不是好气好气的...

3536
来自专栏游戏杂谈

替换系统自带的记事本

系统自带的记事本功能比较弱,所以一般我会选择使用notepad2.exe来替代它。

2143

扫码关注云+社区