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

相关文章

为PHP站点启用自定义Apache服务器模块

为了满足您的PHP应用程序的所有要求,有时您需要添加自定义模块。模块化架构是Apache服务器遍及全球的主要原因之一。大多数网站架设在Apache服务器上,我们...

1729
来自专栏从零开始学自动化测试

Fiddler抓包3-查看get与post请求

前言 前面两篇关于Fiddler抓包的一些基本配置,配置完之后就可以抓到我们想要的数据了,接下来就是如何去分析这些数据。 本篇以博客园的请求为例,简单分析get...

3106

为PHP站点启用自定义Apache服务器模块

为了满足您的PHP应用程序的所有要求,有时您需要添加自定义模块。模块化架构是Apache服务器遍及全球的主要原因之一。大多数网站架设在Apache服务器上,我们...

1777
来自专栏java系列博客

国家网络与信息安全信息通报中心紧急通报

1986
来自专栏码农之路_构建基础

Linux 内核中 Kconfig 文件的作用和添加 menuconfig 项的方法

嵌入式开发中,需要定制或添加一些内核的功能。这里就需要配置 Kconfig 文件了。本文简单说明一下如何修改。便于需要时查找

1405
来自专栏美码师

补习系列-springboot项目基础搭建课

springboot 最近火的不行,目前几乎已经是 spring 家族最耀眼的项目了。抛开微服务、技术社区这些推广因素不说,框架本身的确有非常多的优点。比如

402
来自专栏技术博文

Linux ssh登录命令

一、什么是SSH? 简单说,SSH是一种网络协议,用于计算机之间的加密登录。 如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种...

42110
来自专栏中国白客联盟

点击我即可获取你QQ系权限

腾讯域下的cookie都是通用的,怎么说,也就是说,比如你成功登录了QQ空间,则无需二次登录即可登录腾讯域的其他应用,比如邮箱、音乐、视频等。所以说,你只要发现...

1023
来自专栏北京马哥教育

ulimit设置句柄数

这几天在做一个性能测试,写了一个模拟发送http的程序。模拟100并发的情况下,随机发http get的请求。放到服务器上运行一段时间抛出Too many op...

2645
来自专栏北京马哥教育

243张图片为你解析Linux轻量级自动运维化工具Ansible

Ansible 是什么 ansible架构图 ansible特性 模块化:调用特定的模块,完成特定的任务; 基于Python语言研发,由Paramiko...

3226

扫描关注云+社区