uboot各文件及文件夹分析

1、配置编译

  uboot的配置编译需要在linux原生文件夹下,因为在编译过程中会生成符号链接。在windows中不支持。配置方法是:首先cd进入uboot源码的根目录,然后在根目录下执行:make x210_sd_config。执行配置命令后,如果出现:Configuring for x210_sd board...说明配置好了,如果不是这个是别的说明配置出错了。

2、各文件介绍

(1).gitignore。git工具的文件,git是一个版本管理工具(类似的还有个svn),这个文件和git有关,和uboot本身无关的,不用去管。
(2)arm_config.mk。后缀是.mk,是一个Makefile文件,将来在某个Makefile中会去调用它。
(3)三个Changelog文件,修改记录文件,该文件记录了这个uboot项目的版本变迁以及每个版本较上个版本修改的记录。正式的项目都有这些记录的。可以直接忽略,主要是给维护uboot的人用的。
(4)config.mk。和arm_config.mk差不多性质。
(5)COPYING。版权声明,uboot本身是GPL许可证的。
(6)CREDITS。鸣谢,里面记录了对uboot有贡献的人,感谢目录。
(7)image_split。一个脚本,看说明是用来分割uboot.bin到BL1的,暂时用不到,先不管。
(8)MAINTAINERS。维护者,就是当前在参与维护uboot源码的社区工作者。
(9)MAKEALL。一个脚本,应该是帮助编译uboot的。
(10)Makefile。这个很重要,是uboot源代码的主Makefile,将来整个uboot被编译时就是用这个Makefile管理编译的,所以我们在下个课程中研究uboot配置编译过程时就要分析这个Makefile。
(11)mk。快速编译的脚本,其实就是先清理然后配置然后编译而已。
(12)mkconfig。这个很重要,是uboot配置阶段的主要配置脚本。uboot的可移植性很大程度就是靠这个配置脚本在维护的。我们在下个课程中研究uboot配置编译过程时就要分析这个配置脚本。
(13)mkmovi。暂时不去管他,一个脚本,和iNand/SD卡启动有关
(14)README。所有的软件都有README,一般拿到一个东西要先读README,这个东西其实就是个简单的使用说明书。
(15)rules.mk。这个文件是我们uboot的Makefile使用的规则,本身非常重要,但是我们不去分析他,不去看他。

总结:以上这些文件中,对我们比较重要,需要认真看的有2个:mkconfig和Makefile。一个负责uboot的配置,一个负责编译。

3、文件夹介绍

(1)api. 硬件无关的功能函数的API。uboot移植时基本不用管,这些函数是uboot本身使用的。
(2)api_examples. API相关的测试事例代码。
(3)board。board是板的意思,板就是开发板。board文件夹下每一个文件都代表一个开发板,这个文件夹下面放的文件就是用来描述这一个开发板的信息的。board目录下有多少个文件夹,就表示当前这个uboot已经被移植到多少个开发板上了(当前的uboot支持多少个开发板)。

(4)common。common是普遍的普通的,这个文件夹下放的是一些与具体硬件无关的普遍适用的一些代码。譬如控制台实现、crc校验的。但是更多的主要是两类:一类是cmd开头的,是用来实现uboot的命令系统的;另一类是env开头的,是用来实现环境变量的。
(5)cpu。这个目录是SoC相关的,里面存放的代码都是SoC相关初始化和控制代码(譬如CPU的、中断的、串口等SoC内部外设的,包括起始代码start.S也在这里)。里面很多子文件夹,每一个子文件夹就是一个SoC系列。
注意:这个问价是严格和硬件相关的,因此移植时也是要注意的。但是因为这个文件夹内都是SoC有关的,我们自己的开发板和三星的开发板虽然板子设计不同但是SoC都是同一个,因此实际移植时这个目录几乎不用动。
(6)disk。磁盘有关的,没研究过,没用过。
(7)doc。文档目录,里面存放了很多uboot相关文档,这些文档可以帮助我们理解uboot代码。但是因为是纯英文的,而且很杂乱,所以几乎没用。
(8)drivers。顾名思义,驱动。这里面放的就是从linux源代码中扣出来的原封不动的linux设备驱动,主要是开发板上必须用到的一些驱动,如网卡驱动、Inand/SD卡、NandFlash等的驱动。要知道:uboot中的驱动其实就是linux中的驱动,uboot在一定程度上移植了linux的驱动给自己用。但是linux是操作系统而uboot只是个裸机程序,因此这种移植会有不同,让我说:uboot中的驱动其实是linux中的驱动的一部分。
(9)examples。示例代码,没用过。
(10)fs。filesystem,文件系统。这个也是从linux源代码中移植过来的,用来管理Flash等资源。
(11)include。头文件目录。uboot和linux kernel在管理头文件时都采用了同一个思路,就是把所有的头文件全部集中存放在include目录下,而不是头文件跟着自己对应的c文件。所以在uboot中头文件包含时路径结构要在这里去找。
(12)lib_开头的一坨。(典型的lib_arm和lib_generic)架构相关的库文件。譬如lib_arm里面就是arm架构使用的一些库文件。lib_generic里是所有架构通用的库文件。这类文件夹中的内容移植时基本不用管。
(13)libfdt。设备树有关的。linux内核在3.4左右的版本的时候更改了启动传参的机制,改用设备树来进行启动传参,进行硬件信息的描述了。
(14)nand_spl。nand相关的,不讲。
(15)net。网络相关的代码,譬如uboot中的tftp nfs ping命令 都是在这里实现的。
(16)onenand开头的,是onenand相关的代码,是三星加的,标准uboot中应该是没有的。
(17)post。没关注过,不知道干嘛的。
(18)sd_fusing。这里面代码实现了烧录uboot镜像到SD卡的代码。后面要仔细研究的。
(19)tools。里面是一些工具类的代码。譬如mkimage。

总结:文件夹里面比较重要的,后面会分析涉及到的有:board、common、cpu、drivers、include、lib_arm、lib_generic、sd_fusing

时间: 2024-08-08 10:08:39

uboot各文件及文件夹分析的相关文章

uboot移植之九鼎提供的uboot的文件夹分析

文件夹分析 (1)api:提供了uboot在执行时用到的一些函数,这些函数都是硬件无关的,所以和我们的移植没多大关系 (2)api_examples:api的示例代码 (3)board:开发板相关的文件夹,这个文件夹里面存放的一个文件夹对应一款开发板或者是一个芯片厂商.我们在config配置的时候就是根据这个文件夹下面的子文件夹来选择开发板信息.需要注意一点,由于历史原因,一开始开发板种类比较少,所以board存放的子文件夹就是对应的开发板,但是随着电子信息的发展,开发板越来越多,所以就在ubo

quick-cocos2d-x教程3:程序框架内文件夹分析之docs文件夹

如今我们分析框架中的docs文件夹.看看这个文档文件夹中,究竟放了那些对我们实用的东西. docs文件夹分析 UPGRADE_TO_2_2_3.md 就是讲升级的变化.详细说明:quick-cocos2d-x 2.2.3 须要的注意的事项和代码改动范例. 项目执行时,假设出现 [DEPRECATED] 相关信息,应该将这些已经作废的 API 替换为新 API. 已作废API 请參考 framework/deprecated.lua 文件. HOW_TO_USE_PROJET_MAC_AND_WI

u-boot start.S启动文件分析

u-boot start.S启动文件分析 u-bootstart.SBL1 u-boot start.S启动文件分析 一.start.S来源 1.为何要分析start.S 2.start.S的来源 3.头文件包含 二.start.S分析 1.Start.S分析 16字节校验头 异常向量表 16字节内存对齐 设置CPU为SVC模式 L2 cache操作 Invalidate L1 I/D 关掉MMU 读取启动引脚信息 第一次设置栈 ./board/samsung/x210/lowlevel_ini

无法删除 NTFS 盘上的文件或文件夹(对Windows文件的各种情况有比较详细的描述)

简介 本文介绍您可能无法删除 NTFS 文件系统卷上的文件或文件夹的原因,以及如何分析造成此问题的不同原因从而解决此问题. 更多信息 注意:在内部,NTFS 将文件夹作为特殊类型的文件进行处理.因此,本文中的“文件”一词可能指文件,也可能指文件夹. 原因 1:文件使用了 ACL 如果某个文件使用了访问控制列表 (ACL),您可能无法删除该文件.要解决此问题,请更改该文件上的权限.您可能需要拥有这些文件的所有权才能更改权限. 管理员具有取得任何文件所有权的隐含能力,即使未明确向他们授予针对此文件的

如何实现文件和文件夹的监控功能

分析问题 FileSystemWatcher类型定义在System.IO命名空间下,它的功能是监控某个文件夹下特定文件系统的变化.这样的变化可以包括创建.文件修改.重命名.删除等.程序员可以通过设置一个NotifyFilters枚举类型的成员来订阅感兴趣的信息.下表列出了NotifyFilters的所有项及其代表的意义. 名称 说明 长度 Attributes 文件或文件夹的属性 4 CreationTime 文件或文件夹的创建时间 64 DirectoryName 目录名 2 FileName

如何操作文件和文件夹

分析问题 1.FileInfo类型. FielInfo类型提供了查看状态.创建.复制.删除.移动和打开文件的实例方法,类型的使用方法非常简单,但功能却十分强大.和File类型的区别在于: (1)FileInfo可以针对某个文件生成具体的实例,而File是静态类. (2)FileInfo致力于操作文件在文件系统中的结构,而File主要致力于文件本身的读写操作. FileInfo类型的功能非常强大,以下代码展示了其常用的一些功能. using System.IO; using System; nam

1.5 webshell文件上传漏洞分析溯源(1~4)

webshell文件上传漏洞分析溯源(第一题) 我们先来看基础页面: 先上传1.php ---->   ,好吧意料之中 上传1.png  ---->   我们查看页面元素 ----->   ,也没有前端验证 看来只能用burp抓包来改包绕过,我们修改1.php  ---->   1.php .png ,然后上传抓包改包 0x20 -----> 0x00 webshell文件上传漏洞分析溯源(第一题) 我们先来看基础页面: 先上传1.php ---->   ,好吧意料之中

Ubuntu下如何修改文件或者文件夹的权限

Ubuntu下如何修改文件或者文件夹的权限------chmod的亲身测试 具体原理如下: Linux系统下如何修改文档及文件夹(含子文件夹)权限,我们来看一下.              一 介绍:     可以使用命令chmod来为文件或目录赋予权限.Linux/Unix 的档案存取权限分为三级 : 档案拥有者.群组.其他.利用 chmod 可以藉以控制档案如何被他人所存取二 详解1 此命令有两种使用方法,一种是chmod后加数字,后接文件名chmod abc file 其中a,b,c各为一

Linux下查看文件和文件夹大小 删除日志

场景:在sts中执行自动部署时候maven提示No space left on device错误,后来经检查发现是磁盘空间满了,用下面的方法分析发现tomcat下面的logs目录占用了很大的空间,删除多余的日志问题解决! 1 Linux下查看文件和文件夹大小 当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的选择. df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力.  du可以查看文件及文件夹的大小. 两者配合使用,非常有效.比如用df查看哪个一