目录
一、linux镜像拷贝到DRAM的方式
二、uboot启动内核可以有三个命令:bootz、bootm、boot
三、其它知识点
一、linux镜像拷贝到DRAM的方式
要启动 Linux,需要先将 Linux 镜像文件拷贝到 DRAM 中,如果使用到设备树的话也需要
将设备树拷贝到 DRAM 中。
1、从 EMMC 、NAND 等存储设备中将 Linux 镜像和设备树文件拷贝到 DRAM
从 EMMC 中启动 Linux 系统的话只需要使用命令 fatload 将 zImage 和 imx6ull-14x14-emmc-7-1024x600-c.dtb 从EMMC 的分区 1 中拷贝到 DRAM 中,然后使用命令 bootz 启动:
2、通过 nfs 或者 tftp 将 Linux 镜像文件和设备树文件下载到 DRAM 中
使用 tftp 命令将 zImage下载到 DRAM的 0X80800000地址处,然后将设备树 imx6ull-14x14-emmc-7-1024x600-c.dtb 下载到 DRAM 中的 0X83000000 地址处,最后之后命令 bootz 启动,命令如下:
二、uboot启动内核可以有三个命令:bootz、bootm、boot
1、bootz
bootz 命令用于启动zImage 镜像文件, bootz 命令格式如下:
bootz [addr [initrd[:size]] [fdt]]
addr:Linux 镜像文件在 DRAM 中的地址;
[initrd[:size]]:initrd 是 initrd 文件在DRAM 中的地址,如果不使用 initrd 的话使用 ‘-’ 代替即可;
[fdt]]:fdt 就是设备树文件在 DRAM 中的地址。
2、bootm
bootm 用于启动uImage 镜像文件,用法和bootz一样:
bootm [addr [initrd[:size]] [fdt]]
3、boot
(1) boot 会读取环境变量bootcmd来启动 Linux 系统,具体的引导命令内容是可以修改的。
(2) 比如我们要想使用 tftp 命令从网络启动 Linux 镜像,所使用的命令如下:
(3) 如果想从 EMMC 启动Linux 镜像,所使用的命令如下:
只要不修改 bootcmd 中的内容,以后每次开机 uboot 倒计时结束以后使用 bootcmd 设置好的方式启动内核。
4、这三个命令的实现函数在uboot源码的位置:cmd/bootm.c
三、其它知识点
1、Image、zImage、uImage的区别
(1)Image为内核映像文件,而zImage为内核的一种映像压缩文件,Image大约为4M,而zImage不到2M。
(2)uImage:它是uboot专用的映像文件,它是在zImage之前加上一个长度为64字节的“头”,说明这个内核的版本、加载位置、生成时间、大小等信息;其0x40之后与zImage没区别。