U-Boot命令之NANDBOOT操作命令
Posted 行稳方能走远
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了U-Boot命令之NANDBOOT操作命令相关的知识,希望对你有一定的参考价值。
参考:U-Boot命令之BOOT操作命令
作者:一只青木呀
发布时间: 2020-10-20 21:26:57
网址:https://blog.csdn.net/weixin_45309916/article/details/109185897
目录
NAND操作命令
uboot 是支持NAND Flash 的,所以也有NAND Flash 的操作命令,前提是使用的NAND 版本的核心板,并且编译NAND 核心板对应的uboot,然后使用imxdownload 软件将u-boot.bin 烧写到SD 卡中,最后通过SD 卡启动。一般情况下NAND 版本的核心板已经烧写好了uboot、linux kernel 和rootfs 这些文件,所以可以将BOOT 拨到NAND,然后直接从NAND Flash 启动即可。
NAND 版核心板启动信息如图30.4.8.1 所示:
1、nand info 命令
2、nand device 命令
3、nand erase 命令
4、nand write 命令
5、nand read 命令
BOOT操作命令
uboot 的本质工作是引导 Linux,所以 uboot 肯定有相关的 boot(引导)命令来启动 Linux。常用的跟 boot 有关的命令有: bootz、 bootm 和 boot。
命令 | 描述 |
---|---|
bootz | 用于启动 zImage 镜像文件 |
bootm | 用于启动 uImage 镜像文件 |
boot | 用来启动 Linux 系统的 |
1、 bootz 命令
要启动 Linux,需要先将 Linux 镜像文件拷贝到 DRAM 中,如果使用到设备树的话也需要将设备树拷贝到 DRAM 中。可以从 EMMC 或者 NAND 等存储设备中将 Linux 镜像和设备树文件拷贝到 DRAM,也可以通过 nfs 或者 tftp 将 Linux 镜像文件和设备树文件下载到 DRAM 中。不管用那种方法,只要能将 Linux 镜像和设备树文件存到 DRAM 中就行,然后使用 bootz 命令来启动, bootz 命令用于启动 zImage 镜像文件, bootz 命令格式如下:
bootz [addr [initrd[:size]] [fdt]]
命令 bootz 有三个参数, addr 是 Linux 镜像文件在 DRAM 中的位置, initrd 是 initrd 文件在DRAM 中的地址,如果不使用 initrd 的话使用‘-’代替即可, fdt 就是设备树文件在 DRAM 中的地址。
接下来把设备树文件以及镜像文件放到Ubuntu的tftp目录下.
下载 Linux 镜像文件和设备树都准备好了,我们先学习如何通过网络启动 Linux,使用 tftp命令将 zImage 下载到 DRAM 的 0X80800000 地址处,然后将设备树 imx6ull-alientek-emmc.dtb下载到 DRAM 中的 0X83000000 地址处,最后之后命令 bootz 启动,命令如下:
tftp 80800000 zImage
tftp 83000000 imx6ull-alientek-emmc.dtb
bootz 80800000 – 83000000
命令运行结果如下图所示:
2、 bootm 命令
bootm 和 bootz 功能类似,但是 bootm 用于启动 uImage 镜像文件。如果不使用设备树的话启动 Linux 内核的命令如下:
bootm addr
addr 是 uImage 镜像在 DRAM 中的首地址。
如果要使用设备树,那么 bootm 命令和 bootz 一样,命令格式如下:
bootm [addr [initrd[:size]] [fdt]]
其中 addr 是 uImage 在 DRAM 中的首地址, initrd 是 initrd 的地址, fdt 是设备树(.dtb)文件在 DRAM 中的首地址,如果 initrd 为空的话,同样是用“-”来替代。
3、 boot 命令
boot 命令也是用来启动 Linux 系统的,只是 boot 会读取环境变量 bootcmd 来启动 Linux 系统, bootcmd 是一个很重要的环境变量!其名字分为“boot”和“cmd”,也就是“引导”和“命令”,说明这个环境变量保存着引导命令,其实就是启动的命令集合,具体的引导命令内容是可以修改的。比如我们要想使用 tftp 命令从网络启动 Linux 那么就可以设置 bootcmd 为“tftp80800000 zImage; tftp 83000000 imx6ull-alientek-emmc.dtb; bootz 80800000 - 83000000”,然后使用 saveenv 将 bootcmd 保存起来。然后直接输入 boot 命令即可从网络启动 Linux 系统,命令如下:
setenv bootcmd 'tftp 80800000 zImage; tftp 83000000 imx6ull-alientek-emmc.dtb; bootz 80800000 - 83000000'
saveenv
boot
运行结果如下图所示:
前面说过 uboot 倒计时结束以后就会启动 Linux 系统,其实就是执行的 bootcmd 中的启动命令。只要不修改 bootcmd 中的内容,以后每次开机 uboot 倒计时结束以后都会使用 tftp 命令从网络下载 zImage 和 imx6ull-alientek-emmc.dtb,然后启动 Linux。
以上是关于U-Boot命令之NANDBOOT操作命令的主要内容,如果未能解决你的问题,请参考以下文章