上一节中体验了一下如何通过tftp加载内核和设备树,并挂载nfs文件系统启动linux,这样的方法很时候调试阶段,可以把需要的执行的代码或者镜像文件放在虚拟机上就可以了,不需要每次都烧写到开发板中。但是在开发完成后不可能一直在使用一台电脑来给开发板加载系统使用,所以今天我们就学习一下如何将系统文件烧写到eMMC中,并让开发板上电后从eMMC中加载系统文件。
这一节中的内容相比与上一节就要少很多:
1、将内核镜像文件、设备树镜像文件、文件系统文件烧写到开发板的eMMC中。
2、设置uboot的bootcmd环境变量,让uboot上电后从eMMC中加载镜像文件。
1、拷贝镜像文件ramdisk.img 拷贝到虚拟机/tftpboot 目录下,ramdisk.img文件下载地址:ramdisk
烧写内核镜像到 EMMC 上
tftp 41000000 uImage
movi write kernel 41000000
第一条指令是将tftp共享文件夹中的uImage加载到41000000内存地址中,第二条指令是将41000000内存地址的数据写入到kernel标号的emmc地址中。
烧写设备树文件到 EMMC 上
tftp 41000000 exynos4412-fs4412.dtb
movi write dtb 41000000
烧写文件系统镜像到 EMMC 上
tftp 41000000 ramdisk.img
movi write rootfs 41000000 300000
以上就是将启动linux所需要的文件都烧写到emmc当中了。
2、设置bootcmd环境变量
设置启动参数
setenv bootcmd movi read kernel 41000000\;movi read dtb 42000000\;movi read rootfs 43000000 300000\;bootm 41000000 43000000 42000000
saveenv
从新上电开发板,就可以看到系统从emmc中启动。
这里提示一个小技巧
加入在开发的某一段时间可能会频繁的切换nfs启动和emmc启动,每次都去修改uboot的bootcmd命令实在是有点繁琐,下面说一个小技巧可以简单的切换bootcmd。
首先在uboot中创建bootcmd_nfs变量,并将变量赋值为nfs启动的参数,再创建bootcmd_emmc变量,赋值为emmc启动的参数。然后将bootcmd赋值为run bootcmd_xxx
就可以轻松的切换启动方式,比如要nfs启动,就在uboot中设置 set bootcmd run bootcmd_nfs,然后保存重启就可以了,emmc启动也是同理。