本帖最后由 风精灵 于 2025-6-26 13:55 编辑

一、Uboot简介
1.BootLoder
        BootLoder是什么,从名字上来看,BootLoderbootloader两部分组成,这也是它的主要的两个功能。boot主要是指初始化一些系统的硬件并建立内存映射图,为内核的运行创建一个合适的环境,loader就是指将内核从存储介质(启动介质)中加载到内存RAM中,然后跳转到内核所在内存地址运行内核。总之,BootLoder是内核启动之前为内核搭建软硬件环境的一段程序。BootLoder是不同平台或项目的启动加载程序的统称,不单指某一个程序,比如,常见的BootLoder有,RedbootArmbootU-Boot等。

2.U-Boot版本
        U-Boot是遵循GPL条款的开放源码项目,是在PPCBoot以及ARMBoot的基础上逐步发展和演化而来的,最新版本目前已经更新到u-boot-2020.10版本,我们可以从uboot官方网站:http://www.denx.de/wiki/U-Boot/SourceCode载。不过我们目前使用的uboot源码不是在这个网站下载的,而是由瑞芯微公司提供的。ELF2开发板使用的uboot2017版本的,并且瑞芯微公司已经uboot源码开源到了Github上,并会定期更新:https://github.com/rockchip-linux/u-boot
可以u-boot目录下的Makefile文件中查看版本号
图片1.png
同时也可以在开发板启动时,通过debug口的信息查看。
图片2.png

二、Uboot目录结构介绍
SDK源码解压后,uboot源码在u-boot目录下:
图片3.png

进入u-boot目录,使用ls命令查看uboot源码目录:
elf@ubuntu:~/work/ELF2-linux-source/u-boot$ ls
图片4.png
1.目录说明
api:存放uboot提供的功能函数接口。
arch:系统架构相关的代码,这里每一个文件夹名都代表着一种处理器类型,我们关心的是arm,在arch/arm/cpu/armv8里面存在着重要的与uboot启动相关的.S文件。
board:存放着根据不同开发板定制的板级代码
common: 一些与具体硬件无关的通用代码
cmd:以uboot命令行处理代码为主
disk :磁盘分区相关代码
doc:里面存放了很多uboot相关文档,这些文档可以帮助我们理解和使用uboot
drivers : 驱动代码
examples:示例程序
fs:文件系统,支持嵌入式开发板常见的文件系统
include:头文件,以通用的头文件为主
lib:通用库文件
net:网络相关代码
post: 加电自检程序
tools:辅助程序,用于编译和检查uboot目标文件

2.文件说明
Makefile:一个致力于工程编译的文件,将来整个uboot编译的时候就是用这个Makefile来编译管理的
Kconfig:用于生成内核配置界面的的文件
Kbuild:跟Makefile文件配合编译uboot,它对Makefile进行了功能上的扩充,使其在编译uboot文件时更加高效简介
config.mk:为一个Makefile文件,被主Makefile调用。
MAINTAINERS:维护者,就是当前在参与维护uboot源码的社区工作者。
README:源码说明文件


    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Powered by Discuz! X3.5  © 2001-2013 Comsenz Inc.