Uboot基本知识
Uboot本质上就是一个裸驱
Uboot基本概念:
uboot就是一个bootloader,作用就是用于启动linux kernel或者其他系统。uboot最主要的工作就是初始化DDR,因为linux是运行在DDR里面的。对于6ull系列,DDR初始化是由内部的boot rom来完成的,但是用的其他的cortex a芯片,一般都是uboot来初始化DDR的。
一般linux镜像zimage(uimage)和设备树存在在SD卡、EMMC、NAND、SPI FLASH等外置存储区域,这里就涉及到一个问题:需要将linux镜像从外置的flash拷贝到ddr中,然后才能启动。uboot主要目的就是为系统启动做准备(拷贝linux镜像到ddr中,配置ddr等信息)
1、uboot不仅仅可以启动linux,也可以启动系统系统,比如vxworks
2、linux不仅仅能通过uboot启动,其他的bootloader也可以使用
3、uboot是一个通用的bootloader,支持多种架构。
linux系统三要素:uboot、linux驱动、根文件系统
uboot:启动内核:
1. 读emmc,uboot有emmc驱动,读取emmc,将内核copy进内存
1.1 初始化内存
1.2 初始化其他硬件,如时钟
1.3 emmc或flash里面的内核拷贝进内存
内核:启动应用程序
1、能读写flash/emmc:驱动程序
2、能够读写文件:文件系统
3、找到启动APP
uboot = uboot.bin + 某个dtb
XIP:execute in place 原地执行
内部RAM、flash称为XIP设备
SD卡:cpu不能直接访问SD卡,SD卡为非XIP设备
为啥芯片可以支持SD卡:
cpu读取,运行BROM代码,BROM copy uboot拷贝到内存里
uboot启动流程:
1、XIP设备,第一硬件初始化,第二把flash上的内核拷贝到内存,第三启动内核
2、非XIP设备,BROM将Uboot拷贝到ram,执行uboot,不再初始化内存ram
uboot为什么要驱动网卡:uboot可做调用功能,也可以网络下载
uboot里面的设备树可理解为简化版本的kernel设备树
Uboot源码结构:
文件夹说明:
board:单板相关
arch:系统架构相关,如arm、mips。arch/arm/cpu/u-boot.lds就是整个uboot的链接脚本
cmd:命令相关
fs:文件系统相关
include:头文件
lib:库文件
api:与硬件无关的API函数
driver:驱动程序
configs:配置文件夹,uboot的默认配置文件目录。此目录都是以defconfig结尾的,这些配置文件都对应着不同的班子
... ...