目录
一、uboot的烧写
1、直接将uboot烧写到SD卡中
有点在于SD卡使用比较方便,体积小。前期学习使用比较方便。
2、直接将uboot烧写到EMMC中
优点在于不用使用SD卡当中间介质,使用USB直连直接往EMMC里烧写uboot。
二、uboot环境下更新系统镜像和设备树
搭建了服务器和客户端的连接之后,可以利用NFS或者TFTP将ubuntu上的文件下载到DRAM中。通过其他命令可以实现在线更新uboot和系统镜像以及设备树文件。
1、网络更新镜像和设备树
(1)将文件从服务器下载到本地DRAM中(使用TFTP)
TFTP命令格式:tftpboot [loadAddress] [[hostIPaddr:]bootfilename]
tftp 80800000 zImage
tftp 83000000 imx6ull-14x14-emmc-7-800x480-c.dtb
将服务器zImage镜像文件下载得到DRAM中地址80800000处。
这样启动系统时候就将启动下载的zImage系统镜像和设备树文件,可以理解成一个在线更改系统的操作。但是由于是下载到DRAM中,所以重启的时候镜像文件会继续从SD卡里复制镜像过去而不会对板子上原有系统造成影响。
(2)启动系统:
bootz 命令:bootz [addr [initrd[:size]] [fdt]]
bootz 80800000 - 83000000
2、EMMC更新镜像和设备树
(1)确认所需文件存在EMMC中
先使用命令 fatls 查看要下 EMMC的分区1中有没有Linux镜像文件和设备树文件,如果没有的话可以使用fatwrite命令将 从tftpboot 中下载到DRAM的 zImage 和 imx6ull-alientek-emmc.dtb 文件烧写到 EMMC 的分区 1 中。
切换到EMMC分区1:mmc dev 1:1
查看分区中有无所需文件:fatls mmc 1:1
从服务器下载镜像和设备树:
tftp 80800000 zImage
tftp 83000000 imx6ull-14x14-emmc-7-800x480-c.dtb
烧写文件到EMMC分区1:
zImage 文件大小:Bytes transferred = 6786368 (678d40 hex)
设备树文件大小:Bytes transferred = 38823 (97a7 hex)
fatwrite mmc 1:1 80800000 zImage 0x678d40
fatwrite mmc 1:1 83000000 imx6ull-14x14-emmc-7-800x480-c.dtb 0x97a7
(2)下载镜像和设备树到DRAM
首先看一下两个函数:
//两个命令的参数说明
fatload <interface> [<dev[:part]> [<addr> [<filename> [bytes [pos]]]]]
fatwrite <interface> <dev[:part]> <addr> <filename> <bytes>
如果我们要从 EMMC 中启动 Linux 系统的话只需要使用命令 fatload 将 zImage 和 imx6ull-alientek-emmc.dtb 从 EMMC 的分区 1 中拷贝到 DRAM 中,然后使用命令 bootz 启动即可。
fatload mmc 1:1 80800000 zImage
fatload mmc 1:1 83000000 imx6ull-14x14-emmc-7-800x480-c.dtb
(3)启动系统
bootz 80800000 - 83000000
总结
确认在启动介质里烧写了uboot后,根据需要选择通过网络或者EMMC、SD卡等本地存储介质下载设备树文件和系统镜像到DRAM相应地址最终,文件系统也可以通过一样的流程进行下载。