Uboot 介绍
Uboot 官方
Uboot 在线源码
Uboot 参考手册
Uboot 下载地址
开源bootloader 软件,和mcu 里的bootloader 性致一样,主要加载操作系统,支持Linux、VxWorks、QNX、android
为何需要Uboot?
一般复杂系统,镜像比较大,像Linux 内核3 Mb 左右,芯片内部资源(ram)比较小,无法直接启动,需要加载到外部RAM运行,比如DDR 1G 内存,同时初使化一部份硬件,在加载内核之前提前处理一些事务。另外还支持多种升级功能,所以诞生了通用的bootloader
Uboot 分析
了解更多案例
很多企业都有自己的一套boot 设计,整体来讲是一个比较复杂的裸机程序
源码下载编译
Uboot 下载地址
选择一个下载,比如 u-boot-2020.04.tar.bz2, 放在Linux环境下
解压指令: tar xvf u-boot-2020.04.tar.bz2选择一个开发板编译,这里选择 vexpress 开发板,在config 目录下查看支持的开发板
设置编译工具
export CROSS_COMPILE=arm-none-eabi-
export ARCH=arm查看编译帮助
make help编译并输出详细信息保存在build.log,编译结果放在out目录,通过分析 build.log 分析编译过程
make vexpress_ca9x4_defconfig
make 或者 make V=1 O=out | tee build.log生成文件
u-boot elf文件
u-boot.bin 二进制文件,烧写镜像
u-boot.sym 符号表
源码目录结构
uboot 源码结构复杂,并非所有源码都会被编译,只有指定的CPU,电路板相关代码,公共代码 会被编译。这里介绍开发人员关注的目录。- arch
支持多种cpu 架构,比如arm,mips,powerpc。 这里vexpress 开发板是ARM 架构 - configs
列出支持开发板的配制文件 - board
支持开发板相关的代码。这里编译 board/armltd/vexpress/*.c文件。 - doc
uboot 相关说明文档 - cmd
uboot 命令实现 - common
uboot 核心逻辑代码,包括 board_r.c main.c - scripts
uboot 有用的脚本 - test
测试相关代码 - tools
工具类实现 - 其它文件
- arch