三、uboot的烧写及使用
1、uboot概述
1.1 开发板启动过程
1.2 Bootloader
Bootloader
在操作系统运行之前运行的一小段代码,用于将软硬件环境初始化到一个合适的状态,为操作系统的加载和运行做准备(其本身不是操作系统)
Bootloader基本功能
初始化软硬件环境
引导加载linux内核
给linux内核传参
执行用户命令
注:bootloader是启动引导程序的统称,嵌入式linux常用的bootloader是uboot
1.3 常见的Bootloader
2、SD卡启动盘制作
2.1 SD卡存储结构
SD卡的存储以扇区为单位,每个扇区的大小为512Byte, 其中零扇区存储分区表(即分区信息),后续的扇区可自行分区和格式化;
若选择SD卡启动,处理器上电后从第一个扇区开始将其中的内容搬移到内存,所以我们把uboot放到从第一个扇区开始之后的空间, 之后的空间根据个人需求可进行分区和格式化
linux@linux:~$ ll zero.bin -rw-r--r-- 1 root root 512 Apr 17 03:02 zero.bin
linux@linux:~$ du -mh clear.bin 1.0M clear.bin
3、uboot的使用
3.1 uboot模式
自启动模式
uboot启动后若没有用户介入,倒计时结束后会自动执行自启动 环境变量(bootcmd)中设置的命令(一般作加载和启动内核)
交互模式
倒计时结束之前按下任意按键uboot会进入交互模式,交互模式下用户可输入uboot命令
3.2 uboot帮助命令
help
查看uboot支持的所有命令
help 命令
查看当前命令的使用方法
eg:help loadb
3.3 uboot环境变量命令
printenv
打印uboot中所 有的环境变量
setenv
设置指定的环境变量(保存在RAM中)
setenv 环境变量 环境变量的值
eg:setenv ipaddr 192.168.1.100
saveenv
保存所有环境变量到EMMC中
ipaddr
uboot的IP地址
serverip
服务器的IP地址(即ubuntu的IP)
bootdelay
进入自启动模式之前倒计时的秒数
3.4 uboot网络传输命令
loadb
通过Kermit协议下载文件到指定的内存地址
loadb 地址
tftp
通过tftp协议下载文件到指定的内存地址
tftp 地址 文件名
注:使用tftp之前要配置好网络及tftp服务器
sudo chmod 777 interface.bin 修改权限
3.5 uboot存储器访问命令
mmc read
将EMMC中指定扇区中的内容读取到内存中指定的地址
mmc read <addr> <blk#> <cnt>
addr: 内存地址
blk#: EMMC中的扇区编号
cnt: 读取的扇区的个数
mmc write
将内存中指定地址中的内容写入到EMMC中指定的扇区
mmc write <addr> <blk#> <cnt>
3.6 uboot自启动环境变量
bootcmd
自启动的环境变量 该环境变量可以设置成一到多个uboot命令的集合(若有多个使用\;分割) 自启动模式下uboot就会按照bootcmd中命令的顺序逐条执行
eg:
setenv bootcmd tftp 40008000 interface.bin\;go 40008000
saveenv
day3 作业
1.简述uboot的作用? 2.简述uboot中bootcmd环境变量的功能?
1、 ① uboot主要作用是用来启动操作系统内核。 ② uboot还要负责部署整个计算机系统。 ③ uboot中还有操作Flash等板子上硬件的驱动。 ④ uboot还得提供一个命令行界面供人来操作。 2、 bootcmd是自动启动时默认执行的一些命令,因此可以在当前环境中定义各种不同配置,不同环境的参数设置,然后设置bootcmd为你经常使用的那种参数。