ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

学习笔记-uboot的文件及目录

2021-04-14 02:02:08  阅读:204  来源: 互联网

标签:文件 uboot lib Makefile 笔记 编译 linux 目录


 

1、编译之前工作

(1)检查当前编译环境中有没有安装合适的arm-linux-gcc。

 

(2)检查uboot根目录的Makefile中编译器的设置是否正确。

 

2、一些文件

(1)arm_config.mk。后缀是.mk,是一个Makefile文件,将来在某个Makefile中会去调用它。

(2)三个Changelog文件,修改记录文件,该文件记录了这个uboot项目的版本变迁以及每个版本较上个版本修改的记录。

(3)image_split。一个脚本,看说明是用来分割uboot.bin到BL1的

(4)MAKEALL,一个脚本,应该是帮助编译uboot的。

(5)Makefile。这个很重要,是uboot源代码的主Makefile,将来整个uboot被编译时就是用这个Makefile管理编译的,

(6)mk。快速编译的脚本,其实就是先清理然后配置然后编译而已。

(7)mkconfig。这个很重要,是uboot配置阶段的主要配置脚本。uboot的可移植性很大程度就是靠这个配置脚本在维护的。

(8)rules.mk。这个文件是我们uboot的Makefile使用的规则,本身非常重要,但是我们不去分析他,不去看他。

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

 

3、目录

(1)api

  硬件无关的功能函数的API。uboot移植时基本不用管,这些函数是uboot本身使用的。

(2)api_examples.

  API相关的测试事例代码。

(3)board

  board文件夹下每一个文件都代表一个开发板,这个文件夹下面放的文件就是用来描述这一个开发板的信息的。

  board目录下有多少个文件夹,就表示当前这个uboot已经被移植到多少个开发板上了(当前的uboot支持多少个开发板)。

  后来发展,uboot放厂家目录,(Vendor目录)

(4)common

  common是普遍的普通的,这个文件夹下放的是一些与具体硬件无关的普遍适用的一些代码。譬如控制台实现、crc校验的。

  但是更多的主要是两类:一类是cmd开头的,是用来实现uboot的命令系统的;另一类是env开头的,是用来实现环境变量的。

(5)cpu

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

(6)doc。

  文档目录,里面存放了很多uboot相关文档,这些文档可以帮助我们理解uboot代码。

(7)drivers

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

(8)examples。示例代码,

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

(10)include

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

(11)lib_开头的一坨。

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

(12)ibfdt。

  设备树有关的。linux内核在3.4左右的版本的时候更改了启动传参的机制,改用设备树来进行启动传参,进行硬件信息的描述了。

(13)nand_spl。nand相关的

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

(15)sd_fusing。这里面代码实现了烧录uboot镜像到SD卡的代码。

(16)tools。里面是一些工具类的代码。譬如mkimage。

总结:文件夹里面比较重要的有:board、common、cpu、drivers、include、lib_arm、lib_generic、sd_fusing

 

标签:文件,uboot,lib,Makefile,笔记,编译,linux,目录
来源: https://www.cnblogs.com/ben002/p/14656102.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有