目录
一、uboot概述
Bootloader
Bootloader基本功能
常见的Bootloader
二、SD卡启动盘制作
三、uboot的使用
3.1uboot模式
3.2uboot帮助命令
3.3uboot环境变量命令
3.4常用环境变量
3.5网络传输命令
3.6u-boot访问存储器命令
3.7 u-boot自启动环境变量(bootcmd)
一、uboot概述
uboot和bootloader的区别_吻等离子的博客-CSDN博客_uboot和bootloader有啥区别
bootloader就相当于类,uboot就相当于对象。嵌入式领域常用的bootloader就是uboot
Bootloader
在操作系统运行之前运行的一小段代码,用于将软硬件环境初始化到
一个合适的状态,为操作系统的加载和运行做准备(其本身不是操作系统)
Bootloader基本功能
-> 初始化软硬件环境
-> 引导加载linux内核
-> 给linux内核传参
-> 执行用户命令
注:bootloader是启动引导程序的统称,嵌入式linux常用的bootloader是uboot。
常见的Bootloader
Bootloader | Monitor | 描述 | X86 | ARM | PowerPC |
LILO | 否 | Linux磁盘引导程序 | 是 | 否 | 否 |
GRUB | 否 | GNU的LILO替代程序 | 是 | 否 | 否 |
Loading | 否 | 从DOS引导linux | 是 | 否 | 否 |
ROLO | 否 | 从ROM引导linux而不需要BOIS | 是 | 否 | 否 |
Etherboot | 否 | 通过以太网卡启动linux系统的固件 | 是 | 否 | 否 |
LinuxBOIS | 否 | 完全替代BUIS的linux引导程序 | 是 | 否 | 否 |
BLOB | 是 | LART等硬件平台的引导程序 | 否 | 是 | 否 |
U-boot | 是 | 通用引导程序 | 是 | 是 | 是 |
RedBoot | 是 | 基于eCos的引导程序 | 是 | 是 | 是 |
Vivi | 是 | Mizi公司针对于三星的arm cpu设计的引导程序 |
二、SD卡启动盘制作
SD卡的存储以扇区为单位,每个扇区的大小为512Byte, 其中零扇区存储分区表(即分区信息),后续的扇区可自行分区和格式化;
若选择SD卡启动,处理器上电后从第一个扇区开始将其中的内容搬移到内存,所以我们把uboot放到从第一个扇区开始之后的空间, 之后的空间根据个人需求可进行分区和格式化
制作一个 512 字节的空镜像 /dev/zero就是全是0.count=1就是一块扇区
制作一个前面一块是空接下来是uboot的镜像
制作一个1M的空镜像清除SD卡
少了一个8,大小不对重新做一个
把clear.bin和win-u-boot这两个文件拿到windows里用工具先把SD卡清零
然后再把带有uboot的文件烧写进去
友情提醒各位童鞋学嵌入式买电脑 接口一定得多种类一定要丰富。
这两太电脑一起用是真麻烦,还得用3个拓展坞。
接下来把开发板设置为SD卡启动。再Uboot里设置了LED2亮,如果亮了就证明成功了。
软件和uboot程序我上传了,可以在我的资源里找到。
三、uboot的使用
3.1uboot模式
uboot启动后若没有用户介入,倒计时结束后会自动执行自启动
环境变量(bootcmd)中设置的命令(一般作加载和启动内核)
倒计时结束之前按下任意按键uboot会进入交互模式,交互模式下
用户可输入uboot命令
因为还还没安操作系统所以一直显示超时了
3.2uboot帮助命令
3.3uboot环境变量命令
打印uboot中所有的环境变量
设置指定的环境变量(保存在RAM中)
setenv 环境变量 环境变量的值
保存所有环境变量到EMMC中
3.4常用环境变量
uboot的IP地址
服务器的IP地址(即ubuntu的IP)
进入自启动模式之前倒计时的秒数
3.5网络传输命令
通过Kermit协议下载文件到指定的内存地址
loadb 地址
通过tftp协议下载文件到指定的内存地址
tftp 地址 文件名
VMware双网卡配置(ubuntu)_宇努力学习的博客-CSDN博客
调试了一下,虽然我的emmc中保存了对的ip但是使用tftp服务器时他那个ip还是以前的,需要重新设置开发板ip服务器ip和网关ip然后
saveenv保存一下
最后在用命令
这次没问题了,还有一个要注意的是ubuntu中的文件夹虽然777了,但是文件夹里的程序没有777权限,需要使用命令:
chmod 777 interface.bin
给文件权限后就不会报下面这个错了
TFTP error: 'Permission denied' (0)
Starting again
注:使用tftp之前要配置好网络及tftp服务器
3.6u-boot访问存储器命令
mmc read
将EMMC中指定扇区中的内容读取到内存中指定的地址
mmc read <addr> <blk#> <cnt>
addr: 内存地址
blk#: EMMC中的扇区编号
cnt: 读取的扇区的个数
将内存中指定地址中的内容写入到EMMC中指定的扇区
mmc write <addr> <blk#> <cnt>
0表示写入emmc
把内存0x41000000写到写到emmc 0x800位置一个扇区
断电之后读取emmc中的这个程序写入开发板然后go程序运行成功
3.7 u-boot自启动环境变量(bootcmd)
自启动的环境变量
该环境变量可以设置成一到多个uboot命令的集合(若有多个使用\;分割)
自启动模式下uboot就会按照bootcmd中命令的顺序逐条执行
把printenv命令写进去,开机之后不做干预,倒计时结束就会自动打印环境
eg:
setenv bootcmd tftp 40008000 interface.bin\;go 40008000
saveenv
这样重启之后就会自动下载并执行