u-boot源码目录分析(以jz2440 u-boot1.1.6为例)

一、文件的分析

u-boot源码目录分析(以jz2440 u-boot1.1.6为例)_第1张图片

  1. arm_config.mk。后缀是.mk,是一个Makefile文件,将来在某个Makefile中会去调用它。
  2. Changelog文件,修改记录文件,该文件记录了这个uboot项目的版本变迁以及每个版本较上个版本修改的记录。
  3. config.mk。和arm_config.mk差不多性质。 
  4. COPYING。版权声明,uboot本身是GPL许可证的。
  5. CREDITS。鸣谢,里面记录了对uboot有贡献的人,感谢目录。
  6. MAINTAINERS。维护者,就是当前在参与维护uboot源码的社区工作者。
  7. Makefile。这个很重要,是uboot源代码的主Makefile,将来整个uboot被编译时就是用这个Makefile管理编译的
  8. mkconfig。这个很重要,是uboot配置阶段的主要配置脚本。uboot的可移植性很大程度就是靠这个配置脚本在维护的。
  9. README。所有的软件都有README,一般拿到一个东西要先读README,这个东西其实就是个简单的使用说明书。
  10. rules.mk。这个文件是我们uboot的Makefile使用的规则,本身非常重要,但是我们不去分析他,不去看他。

二、文件夹的分析

(1)board文件夹

board是板的意思,板就是开发板。board文件夹下每一个文件都代表一个开发板,这个文件夹下面放的文件就是用来描述这一个开发板的信息的。board目录下有多少个文件夹,就表示当前这个uboot已经被移植到多少个开发板上了(当前的uboot支持多少个开发板)。

u-boot源码目录分析(以jz2440 u-boot1.1.6为例)_第2张图片

(2)common文件夹

common是普遍的普通的,这个文件夹下放的是一些与具体硬件无关的普遍适用的一些代码。譬如控制台实现、crc校验的。但是更多的主要是两类:一类是cmd开头的,是用来实现uboot的命令系统的;另一类是env开头的,是用来实现环境变量的。

(3)cpu文件夹

这个目录是SoC相关的,里面存放的代码都是SoC相关初始化和控制代码(譬如CPU的、中断的、串口等SoC内部外设的,包括起始代码start.S也在这里)。里面很多子文件夹,每一个子文件夹就是一个SoC系列。

注意:这个问价是严格和硬件相关的,因此移植时也是要注意的。但是因为这个文件夹内都是SoC有关的,我们自己的开发板和三星的开发板虽然板子设计不同但是SoC都是同一个,因此实际移植时这个目录几乎不用动。

u-boot源码目录分析(以jz2440 u-boot1.1.6为例)_第3张图片

(4)disk文件夹

磁盘接口程序

(5)doc文件夹

文档目录,里面存放了很多uboot相关文档,这些文档可以帮助我们理解uboot代码。但是因为是纯英文的,而且很杂乱,所以几乎没用。

(6)drivers文件夹

顾名思义,驱动。这里面放的就是从linux源代码中扣出来的原封不动的linux设备驱动,主要是开发板上必须用到的一些驱动,如网卡驱动、Inand/SD卡、NandFlash等的驱动。要知道:uboot中的驱动其实就是linux中的驱动,uboot在一定程度上移植了linux的驱动给自己用。但是linux是操作系统而uboot只是个裸机程序,因此这种移植会有不同,让我说:uboot中的驱动其实是linux中的驱动的一部分。

u-boot源码目录分析(以jz2440 u-boot1.1.6为例)_第4张图片

(7)dtt

数字温度传感器的驱动

(8)examples

示例代码,没用过。

(9)fs

filesystem,文件系统。这个也是从linux源代码中移植过来的,用来管理Flash等资源。

u-boot源码目录分析(以jz2440 u-boot1.1.6为例)_第5张图片

(10)include

头文件目录。uboot和linux kernel在管理头文件时都采用了同一个思路,就是把所有的头文件全部集中存放在include目录下,而不是头文件跟着自己对应的c文件。所以在uboot中头文件包含时路径结构要在这里去找。

u-boot源码目录分析(以jz2440 u-boot1.1.6为例)_第6张图片

(11)lib_开头的文件夹

(典型的lib_arm和lib_generic)架构相关的库文件。譬如lib_arm里面就是arm架构使用的一些库文件。lib_generic里是所有架构通用的库文件。这类文件夹中的内容移植时基本不用管。

u-boot源码目录分析(以jz2440 u-boot1.1.6为例)_第7张图片

(12)nand_spl

nand相关的

(13)net

网络相关的代码,譬如uboot中的tftp nfs ping命令 都是在这里实现的。

(14)post

上电自检程序

(15)rtc

实时时钟的驱动

(16)tools

里面是一些工具类的代码。制作S-record/u-boot格式的工具,譬如mkimage。

 

 

REF:

1.朱友鹏老师课件

2.《嵌入式linux应用开发完全手册》-韦东山

 

你可能感兴趣的:(u-boot源码目录分析(以jz2440 u-boot1.1.6为例))