(三)uboot体验2-----源码目录分析

uboot的源码目录分析1

 

 

九鼎在移植三星uboot时候把用不到的都删除了,减少文件数量,工作时候方便。

各文件介绍:

(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  鸣谢,里面记录了感谢

(7)image_split是一个把uboot进行分割的脚本

从uboot分出来BL1的,8K-128K,做一个secure boot

(8)MAINTAINERS  维护者,当前参与维护uboot源码的大牛,建议什么可以给他们写邮件

(9)makeall  帮助编译uboot的一个脚本

(10)Makefile  这个很重要,是uboot源代码的主Makefile,编译时就是用这个Makefile管理编译的,所以要具体分析

(11)mk  写出来的一个快捷编译的脚本

 

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

(13)mkmovi. 暂时不管也是个脚本,和SD卡启动有关

(14)READMED  所有的软件都有一个README,是个简单的说明书。

(15)rule.mk  是我们uboot的makefile的规则,本身非常重要但是我们不去看它。

 

总结:以上这些文件重要的是mkconfig和makefile

uboot的源码目录分析2

(1)api.  硬件无关的功能函数API。uboot移植时候不用管它。控制台相关的getc,putc…..详细见readme

(2)api_examples  API相关的测试事例代码

(3)board  放的好多的文件夹,是最庞大的文件夹。是开发板的开发的。一个文件夹就是一个开发板。当前uboot被移植到多少个开发板上了(支持多少个开发板)。一般是board下放厂家目录(芯片厂商),然后再放board;

 

  多了这层目录会影响配置阶段,在uboot的配置节点要注意配置时的路径深度和实际存放要对应,不然配置后编译时找不到文件编译就会失败。注意一个细节就是历史原因造成的兼容性麻烦。

(4)common: 放的一些与具体硬件无关的普世代码,如控制台实现、CRC校验等。但更多是两类:一类的CMD开头的用来实现uboot的命令;另一类是env开头的,用来实现环境变量的。
(5)CPU  这个目录是SoC相关的,里面存放的代码是SoC相关的初始化代码和控制代码(譬如CPU的、中断的、串口等SoC内部外设的,包括起始代码start.S   是与具体的CPU硬件有关的)。里面很多子文件夹,每一个子文件夹就是一个SoC系列SoC相关的,

注意:这个文件夹是严格和硬件相关的,因此移植时候也是要注意的。这个文件夹内都是SoC相关,我们自己的开发板虽然板子不同但CPU都是同一个的话可以在实际移植的时候不用动。(补充:里面会有cpu的初始化,当进入一个uboot来goto 引导另一个uboot启动的时候需要禁掉初始化并修改串口相关的函数)

(6)disk 磁盘相关的,没用过

(7)doc 文档目录,里面存放了很多uboot相关的文档,因为是纯英文所以看的慢。

 (8)drivers  驱动,linux源代码上扣出来的驱动,原封不动的。注意是开发板上必须用到的一些驱动,如网卡驱动,Nand/sd卡、nandflash等的驱动。uboot的驱动是linux种的驱动的一部分。

 (9)example  示例代码

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

 (11)include  头文件,uboot和kernel在管理头文件时候采用一个思路,把所有头文件全部放在include目录下,而不是头文件跟着自己对应的c文件。所以找头文件时候要在这里去找。

(12)lib_ 开头的:  典型的lib_arm等,架构相关的库文件。譬如lib_arm是架构使用的一些库文件。lib_generic里是所有架构通用的库文件。这类文件夹中的内容移植时基本不用管。

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

(14)nand_spl  nand相关的不讲

 (15)net 网络相关的代码,譬如uboot中国的tftp nfs等等都在这里实现的

 (16)onenand  三星的nand相关的,一般没有的

 (17)sd_fusing 刷写sd卡的,烧录uboot镜像到sd卡的代码(分区等等等,要仔细研究的)

 (18) tools  工具类的代码,如mkimage等等

 

文件夹里重要的:board\cpu\common\drivers\include\lib_arm\sd_fusing

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值