Bootloader是在操作系统运行之前的一段程序。这段程序完成如下功能:初始化硬件设备、建立内存空间映射表,从而建立适当的系统软硬件环境,为调用操作系统内核做好准备。U-boot是嵌入式Linux的常用引导加载程序之一。
U-boot为Universal Boot Loader的缩写,其源码目录、编译形式与Linux内核相似。开发目标是支持尽可能多的嵌入式处理器和嵌入式操作系统。
启动加载模式 | 正常工作模式,将嵌入式操作系统从Flash中加载到SDRAM中运行 |
下载模式 | 将内核映像或者根文件系统映射等从PC机下载到目标板的Flash中 |
分为stage1和stage2两个阶段。
state1:
CPU体系结构的代码,如设备初始化代码,通常放在stage1中,多用汇编语言编写,短小精悍。
stage2:
通常用C语言实现,以实现复杂的功能,更好的可读性和可移植性。
当需要更换或更新内核系统时,需要进入下载模式。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 | 运行环境变量中的命令 |