目录

U-boot指令综合训练

Bootloader是在操作系统运行之前的一段程序。这段程序完成如下功能:初始化硬件设备、建立内存空间映射表,从而建立适当的系统软硬件环境,为调用操作系统内核做好准备。U-boot是嵌入式Linux的常用引导加载程序之一。

U-boot为Universal Boot Loader的缩写,其源码目录、编译形式与Linux内核相似。开发目标是支持尽可能多的嵌入式处理器和嵌入式操作系统。


主要功能

  1. 系统引导
  2. 支持NFS挂载
  3. 基本辅助功能,如操作系统接口功能
  4. 支持目标板环境参数多种存储方式,如Flash、NVRAM等
  5. CRC32校验
  6. 支持各类设备驱动
  7. 上电自检
  8. 特殊功能,如XIP内核引导

工作模式

启动加载模式 正常工作模式,将嵌入式操作系统从Flash中加载到SDRAM中运行
下载模式 将内核映像或者根文件系统映射等从PC机下载到目标板的Flash中

启动流程

分为stage1和stage2两个阶段。

state1:
CPU体系结构的代码,如设备初始化代码,通常放在stage1中,多用汇编语言编写,短小精悍。

  1. 定义可执行映像的全局入口
  2. 设置异常向量
  3. 设置CPU速度、时钟频率及中断控制寄存器
  4. 初始化内存控制器
  5. 将ROM中的程序复制到RAM中
  6. 初始化堆栈
  7. 转到RAM中执行

stage2:
通常用C语言实现,以实现复杂的功能,更好的可读性和可移植性。

  1. 调用一系列初始化函数
  2. 初始化Flash设备
  3. 初始化系统内存分配函数
  4. 若目标系统有NAND设备,则初始化该设备
  5. 若目标系统有显示设备,则初始化该设备
  6. 初始化相关网络设备,填写IP地址等
  7. 进入命令循环,接受用户从串口输入的命令,进行相应工作

U-boot训练准备工作

当需要更换或更新内核系统时,需要进入下载模式。U-boot的所有操作均通过指令完成。

1、将串口线与实验箱的DBUG调试串口连接、启动模式拨至NAND,配置好超级终端(hypertrm)或其他串口工具;
2、实验箱上电,在串口工具串口显示初始化加载信息,倒计时5s内按任意键进入下载模式;
3、选择q进入主菜单,验证相关boot命令。


常用命令

信息查询

命令 功能
h\he\hel\help 帮助
bdinfo 打印板载结构信息
printenv 打印环境变量
version 显示U-boot、编译器、连接器的版本信息

存储器操作

命令 功能
base 打印或设置地址及偏移,如 base 0, base 0x30000000
md <address> <length> 显示内存,如 md 30000000 20
mw <address> <value> <length> 修改内存,如 mw 20000000 123456 10
mm <address> 存储区修改,如 mm 20000000
nm <address> 交互式存储区修改

执行命令

命令 功能
bootm 从存储器启动应用程序映像,如 bootm 30000000 进入Linux系统
go <address> 开始某段地址处的应用程序,如 go 20000000

下载命令

命令 功能
loadb <address> 经串口线加载二进制文件,键入命令后,需从串口发送二进制文件,如 loadb 20000000
go <address> 开始某段地址处的应用程序,如 go 20000000
tftpboot <address> <hostIP: bf_name> 使用TFTP协议经由网络加载映像文件

环境变量

命令 功能
printevn 打印环境变量
setenv 设置环境变量
saveenv 保存环境变量
run 运行环境变量中的命令