uboot之初体验

Posted 阿C_C

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uboot之初体验相关的知识,希望对你有一定的参考价值。

uboot基础认识

uboot来源

我们可以从uboot的官网下载uboot源代码,这种方式下载的源代码可能没有针对于当前开发板的移植,也可以从soc厂商提供的地址下载,这种方式一般是针对这个Soc已经移植过的uboot,还可以从开发板供应商处获得uboot,这种方式的uboot移植的更加彻底。

编译和烧录

一般在开发板厂商提供的bsp中可以找到移植好的uboot,拿到之后先进行配置,一般使用make命令执行根目录下的config文件即可。配置编译环境之后,即可直接使用make进行编译。得到最后的uboot.bin文件,将这个文件烧录到开发板的Flash中即可。

uboot源码目录分析

我们以官方提供的uboot为例进行分析,官方的uboot基于soc厂商提供的uboot,并且做了精简,删除了很多不必要的库。

基本文件

.gitignore
git忽略文件列表,在uboot分析时可以直接忽略。
XXX.mk
Makefile文件,会被Makefile调用。
image_split
分割uboot.bin到bl1的脚本文件。
MAKEALL
用于编译uboot的脚本。
Makefile
uboot源代码的主要Makefile文件,负责调用每个子目录的Makefile文件进行管理和编译uboot
mk
用户直接编译uboot的快速执行脚本。
mkconfig
uboot的主要配置脚本
rules.mk
uboot的Makefile使用的编译规则

这些文件中,最主要的是mkconfig和Makefile文件,是我们分析的主要目标。

基本目录

api,api_examples
和硬件无关的功能函数API和示例,供uboot本身使用,uboot移植时基本无关。
board
该目录下的每一个目录都代表一个开发板型号,表示该uboot支持的开发板,其中的文件用于描述该开发板的信息。

后期的uboot中该目录中也增加了厂商的目录,用户专门放置该厂商的开发板信息。
common
与具体硬件无关的,普遍适用的代码。例如控制台实现,CRC检验,uboot命令系统和环境变量。
cpu
Soc相关的目录,用户初始化Soc和控制,例如中断,串口,start.S等。里面的每一个文件夹都是一系列Soc。
doc
文档目录
drivers
从linux源代码中取出来的Linux设备驱动,供开发板上必须要用的设备。uboot一定程度上移植了linux中的驱动供自己使用。linux是个操作系统而uboot是裸机程序,所以移植会有不同。所以说uboot中的驱动是Linux驱动的一部分。
examples
示例代码
fs
从linux中移植的文件系统,用于对Flash进行管理。
include
所有的头文件都会集中在这里,而不是和源文件放在一起,包含路径要在这里寻找。
lib_xxx
架构相关的库文件,lib_generic是通用的库文件,lib_fdt是linux内核3.X后续版本中更改启动传参的机制为设备树机制和硬件信息的描述。
net
网络相关的代码,例如tftp,nfs,ping等命令。
sd_fusing
烧录uboot到sd卡的代码。
tools
工具类的代码,例如mkimg等。

以上是关于uboot之初体验的主要内容,如果未能解决你的问题,请参考以下文章

Android开发学习之路--Notification之初体验

Uboot — 编译体验

python 之初体验

7-3 Ribbon之初体验

Hadoop之初体验

爬虫之初体验