uboot的目录分析
以下内容源于朱有鹏嵌入式课程的学习,如有侵权,请告知删除。
一、文件分析
1、九鼎官方uboot和三星原版uboot对比
- 不同版本的uboot或者同一版本不同人移植的uboot,目录结构和文件内容都会有所不同,即可以自己根据需要去添加/删除/更改目录结构。
- 九鼎在以三星的uboot为原材料进行移植时,删除了很多不必要的文件夹/文件。
2、各文件介绍
(1).gitignore。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的编译。
(11)mk。快速编译的脚本,其实就是先清理然后配置然后编译而已。
#!/bin/sh
make distclean
make x210_sd_config
make -j4
(12)mkconfig:此文件是uboot配置阶段的主要配置脚本。uboot的可移植性很大程度依靠这个配置脚本。
(13)mkmovi。一个脚本,和iNand/SD卡启动有关。
(14)README。所有的软件都有README,其实就是个简单的使用说明书。
(15)rules.mk。这个文件是uboot的Makefile的使用规则。本身非常重要,但是不用分析。
总结:重要文件有mkconfig和Makefile,一个负责uboot的配置,一个负责编译。
二、目录分析
(1)api。硬件无关的功能函数的API。uboot移植时基本不用管,这些函数是uboot本身使用的。
(2)api_examples。 API相关的测试事例代码。
(3)board
- board文件夹下每一个文件都代表一个开发板,这个文件夹下面放的文件就是用来描述这一个开发板的信息的。
- board目录下有多少个文件夹,就表示当前的uboot支持多少个开发板。
(4)common
- 这个文件夹存放一些与具体硬件无关的、普遍适用的一些代码。
- 譬如控制台实现、crc校验的。
- 但是更多的主要是两类:一类是cmd开头的,是用来实现uboot的命令系统的;另一类是env开头的,是用来实现环境变量的。
(5)cpu
- 这个目录是SoC相关的,存放与SoC相关初始化和控制的代码(譬如CPU的、中断的、串口等SoC内部外设的,包括起始代码start.S)。
- 里面很多子文件夹,每一个子文件夹就是一个SoC系列。
- 这个文件和硬件严格相关,移植时也是要注意的。
(6)disk。与磁盘有关。
(7)doc。文档目录,里面存放了很多uboot相关文档,这些文档可以帮助理解uboot代码。
(8)drivers
- 存放的是从linux源代码中拷贝过来的linux设备驱动,主要是开发板上必须用到的一些驱动,如网卡驱动、Inand/SD卡、NandFlash等的驱动。
- uboot中的驱动其实就是linux中的驱动,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的目录分析相关推荐
- U-Boot源码目录分析(VScode工程创建及文件夹过滤)
参考:U-Boot工程目录介绍 作者:一只青木呀 发布时间: 2020-10-21 14:47:30 网址:https://blog.csdn.net/weixin_45309916/article/ ...
- Uboot9之uboot目录分析
时间:2018.3.18 作者:Tom 工作:HWE 说明:如需转载,请注明出处. 说明:本文主要参考朱有鹏老师linux嵌入式,已注明转载. 1.X210官方uboot配置编译 1.1找到官方移植好 ...
- 【OpenHarmony-v3.2代码分析】02 - device目录 uboot源码分析
[OpenHarmony-v3.2代码分析]02 - device目录 uboot源码分析 1. device 目录分析 从本文开始 ,我们正式来分析OpenHarmony-V3.2的源码的 uboo ...
- Linux 内核获取、初次编译、源码目录分析
目录 Linux 内核获取 Linux 内核初次编译 Linux 内核源码目录分析 1.arch 目录 2.block 目录 3.crypto 目录 4.Documentation 目录 5.driv ...
- 【u-boot】uboot代码简要分析 (u-boot 移植)
uboot代码简要分析 (u-boot 移植) 2012-12-19 22:46:04 [转] 先来看看源码目录结构,再按照代码的执行顺序简单地分析源码 1.U-boot源码整体框架 源码解压以后,我 ...
- u-boot启动流程分析
u-boot启动流程分析 以smdk2410为例,分析u-boot的启动流程.u-boot的启动流程是指从cpu上电开机执行u-boot到u-boot成功加载完操作系统的过程.这一过程可以分为两个阶段 ...
- 嵌入式之uboot源码分析-启动第二阶段学习笔记(下篇)
接上部分---->嵌入式之uboot源码分析-启动第二阶段学习笔记(上篇) 注:如下内容来自朱老师物联网大讲堂uboot课件 3.2.14 CFG_NO_FLASH (1)虽然NandFlash ...
- uboot代码详细分析.pdf
目录 u-boot-1.1.6 之cpu/arm920t/start.s 分析 ............................................................ ...
- uboot源码分析(基于S5PV210)之启动第一阶段
目录 一.start.S引入 1.u-boot.lds中找到start.S入口 2.SourceInsight中如何找到文件 3.SI中找文件技巧 二.start.S解析 1.不简单的头文件包含 2. ...
最新文章
- 迭代器模式(Iterator pattern)
- SAP WM初阶之MIGO过账后自动调用LT06事务代码
- ITK:将两个图像与棋盘格图案组合在一起
- 在预览fastreport报表之前改变一些报表对象的属性
- delphi读取xml中的内容property name传递参数_Python 进阶知识全篇-XML 解析
- scp 、ssh非22端口的服务器方法
- 送你两个神器,关系数据库数据入湖轻松应对
- xp系统mysql安装教程视频教程_Windows XP操作系统下的MYSQL安装过程_PHP教程
- JAVA高并发服务器工作笔记0001---Java中InetAddress与InetSocketAddress的基本用法
- C# 使用Magick.NET进行图片格式转换
- Win10应用商店终于恢复访问了
- MATLAB写入文件的操作
- 正睿20秋季普转提day3
- css中清除li的点默认样式
- 基于PT8.2汽车尾气C0监测及联动控制
- JavaScript中基本数据类型的强制转换
- 响ASO优化的九大因素
- 【51单片机】汇编语言程序设计练习(实验报告)
- 区块链中的记账权问题
- 打破边界,边缘计算有何应用场景?
热门文章
- 读书印记 - 《创新者的解答》
- 外围功能电路控制 LET′S TRY“嵌入式编程”: 4 of 6
- shell编程 之 test命令
- Python基础-time and datetime
- 关于Unity中的Mesh Collider碰撞器
- android handler、looper、message、messageQueue、
- 关于C#序列化结果的长度获取
- 关于selectNodes与selectSingleNode的用法的区别
- bootstrap精简教程
- Scala.js:将Scala编译为JavaScript的编译器