uboot各文件及文件夹分析

SongPF SongPF     2022-08-22     107

关键词:

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

 

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

文件分析(1).gitignore:git管理工具相关的文件。(2)arm_config.mk:一个Makefile文件,将来会被Makefile里面的某句代码调用。(3)CHANGELOG、Changelog_Samsung、CHANGELOG-before-U-Boot-1.1.5:三个CHANELOG文件,其实就是该版本的uboot的变迁记录... 查看详情

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

文件夹分析(1)api:提供了uboot在执行时用到的一些函数,这些函数都是硬件无关的,所以和我们的移植没多大关系(2)api_examples:api的示例代码(3)board:开发板相关的文件夹,这个文件夹里面存放的一个文件夹对应一款开... 查看详情

uboot源码分析

...t为原材料进行移植时,把三星版本的uboot中很多不必要的文件夹、文件给删除掉了。这个删除把很多完全用 查看详情

嵌入式linux核心课程2.uboot和系统移植-第4部分-2.4.uboot配置和编译过程详解

...编译方法。2.4.3.uboot主Makefile分析3本节引入include/config.mk文件,并分析了ARCH、CROSS_COMPILE这两个环境变量。2.4.4.uboot主Makefile分析4本节引入顶层目录下config.mk文件,并分析了autoconfig.mk文件的来源和作用。2.4.5.uboot主Makefile分析5本节... 查看详情

uboot源码简要分析

...源码整体框架源码解压以后,我们可以看到以下的文件和文件夹: cpu与处理器相关的文件。每个子目录中都包括cpu.c和interrupt.c、start.S、u-boot.lds。cpu.c:初始化CPU、设置指令Cache和数据Cache等interrupt.c:设置系统的各种中断和... 查看详情

1uboot移植和imx文件分析

...原子和百问网的IMX6ULL教程,在此表示衷心感谢本章参考文件有:《i.MX6BSPPortingGuide》、《ARMv7架构参考手册》百度网盘链接:https://pan.baidu.com/s/1h3LjDtOmAYChti7Rr30aSA提取码为:07yl 查看详情

全志h3uboot传参到内核分析,boot.scr文件分析(代码片段)

...个语句的含义是:从mmc0设备的第一个分区加载boot.scr文件到scriptaddr地址,然后执行boot.scr脚本。查看mmc0:1中的文件,的确有 查看详情

uboot之初体验

...后先进行配置,一般使用make命令执行根目录下的config文件即可。配置编译环境之后,即可直接使用make进行编译。得到最后的uboot.bin文件,将这个文件烧录到开发板的Flash中即可。uboot源码目录分析我们以官方提供的ubo... 查看详情

uboot代码流程分析---start.s(代码片段)

..._start。此函数定义在 vectors.S(arch\arm\lib)中。  在此文件中,定义了异常向量表,及其操作函数。_start开始后,直接跳入 reset复位中执行启动。1/*头文件包含,包含架构和配置相关的头文件,自 查看详情

uboot驱动模型(dm)分析

uboot版本:uboot-201711要分析uclass之前,首先得搞清楚两个宏U_BOOT_DRIVER及U_BOOT_DEVICE的作用:1.U_BOOT_DRIVER及U_BOOT_DEVICE宏定义如下:1#defineU_BOOT_DRIVER(__name)2ll_entry_declare(structdriver,__name,driver)34#defineU_BOOT_DEV 查看详情

在ubuntu下使用啥工具对uboot及内核进行烧写

...行就可以用吧几年前用过现在不记得了 参考技术C直接把文件系统也列举了吧。烧写uboot、内核及文件系统的方法:1、uboot的烧写下载Uboot分为两个步骤,第一步将uboot下载到系统的扩展RAM并运行,第二步通过内存中运行的uboot把... 查看详情

根文件系统笔记(代码片段)

《2.uboot和系统移植-第19部分-2.19.根文件系统构建实验及过程详解》 欢迎访问《朱老师物联网大讲堂》官方网站 www.zhulaoshi.org 以获取本课程更多信息第一部分、章节目录2.19.1.根文件系统的构建路线2.19.2.busybox的移植实战2.19.3... 查看详情

uboot启动第一阶段分析(代码片段)

...接脚本中ENTRY声明的地方。ENTRY(_start)因此_start符号所在的文件就是整个程序的起始文件,_start所在处的代码就是整个程序的起始代码。    b.在text段中,指定很多文 查看详情

linux的7种文件类型及各颜色代表含义(代码片段)

Linux系统的7种文件类型Linux中一切皆为文件,文件类型也有多种。通过ls-l命令可以查看文件属性信息,其中行首第一个字符即代表该文件的文件类型。Linux系统中总共有七种文件类型,下面列出了七种文件类型及代表... 查看详情

uboot的配置和编译文件解析(代码片段)

Makefile分析版本确定在文件开头的几行就是版本号:VERSION=1//主版本号PATCHLEVEL=3//Patch版本号SUBLEVEL=4//次版本号EXTRAVERSION=U_BOOT_VERSION=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)VERSION_FILE& 查看详情

s5pv210-uboot源码分析-第一阶段

...NTRY(_start)声明了_start是程序的入口。所以_start符号所在的文件,就是我们整个程序的起始文件,_start所在处的代码就是我们整个程序的起始代码。2、我们知道了程序的入口是_s 查看详情

uboot移植之start.s分析

...数,我们这里的链接脚本在board/samsung/x210/u-boot.lds,这个文件里面的开头有一句ENTRY(_start),所以uboot的入口就是在_start这个标识的地方。 * Base codes by scsuh (sc.suh) *///x210_s 查看详情

写出html文件结构及各部分的功能

html文件是标准的ASCII文件,它看起来象是加入了许多被称为链接签(tag)的特殊字符串的普遍文本文件。从结构上讲,html文件由元素(element)组成,组成html文件的元素有许多种,用于组织文件的内容和指导文件的输出格式。绝大多... 查看详情