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 8080000083000000

命令运行结果如下图所示:

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操作命令的主要内容,如果未能解决你的问题,请参考以下文章

U-Boot命令之网络操作命令

U-Boot命令之环境变量操作命令

U-Boot命令之(FAT 格式EXT 格式)文件系统操作命令

U-Boot命令之MMC(EMMC和SD卡)操作命令

U-Boot命令之信息查询命令

u-boot-2016.03 支持yaffs2文件系统烧写之添加nand write.yaffs2命令