SD卡启动与uboot 、zImage、dtb、rootfs固化

imx6ull的程序烧录官方推荐的是MfgTool ,MfgTool 工具是 NXP 提供的专门用于给 I.MX 系列 CPU 烧写系统的软件。今天捣鼓一下从SD来启动系统。

1.制作烧录SD卡

我们常用的SD卡一个扇区的大小是512字节。前面两个扇区是不可以写入用户数据的,一般存的是SD卡相关的信息。imx6ull数据手册也写到SD/EMMC启动是从地址偏移0x400字节的地方开始,

0x400=1024=521*2刚好是两个偏移两个扇区。

 首先对SD进行分区,第一个分区100M(从2048扇区开始,前面2~2047扇区用于存储u-boot固件),格式化为fat32文件系统,分区命名为boot,用于存储linux内核和设备树文件;第二个分区1G,格式化为ext4文件系统,用于存储根文件系统,分区命名为rootfs。 关于SD卡的分区方法附上参考链接Linux系统下对SD卡分区步骤_爱喝纯牛奶的柠檬的博客-CSDN博客_linux sd卡分区

2.烧录

  • 命令行烧录uboot到SD卡
sudo dd if=u-boot.imx of=/dev/sdb bs=1k seek=1 conv=fsync
  • 将设备树和linux内核拷贝到SD卡的第一个分区boot
sudo cp ~/linux/tftpboot/zImage /media/hyq/boot/ -rf
sudo cp ~/linux/tftpboot/imx6ull-hyq-emmc.dtb /media/hyq/boot/ -rf
  • 将根文件系统拷贝到SD卡的第二个分区rootfs,rootfs.ext4需要挂载到某个节点下才能才可以查看和拷贝
sudo mount -o loop -t ext4 ~/linux/tool/buildroot-2019.02.6/output/images/rootfs.ext4 /mnt/myd/

sudo cp /mnt/myd/* -a /media/hyq/rootfs/

3.SD卡启动

fatload mmc 0:1 80800000 zImage

fatload mmc 0:1 83000000 imx6ull-hyq-emmc.dtb

setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk0p2 rootwait rw'
saveenv

bootz 80800000 - 83000000

解决内核启动网络不可用的问题

ifconfig eth0 up
ifconfig eth0 192.168.0.50 netmask 255.255.255.0 
route add default gw 192.168.0.1

4.将程序固化到内部emmc

在程序固化之前首先是要将内部emmc进行分区,和SD卡的分区是一模一样的,imx6ull是通过MfgTool 工具从USB口下载到内部emmc的,当然分区操作也是该MfgTool来完成了。因此我们在imx6ull的uboot中找不到fdisk命令,但是以前在玩三星4412的时候确实是有fdisk命令的,也许是NXP强烈建议使用MfgTool工具来烧录程序,所以给去掉了该分区命令。虽然如此,在uboot中我们仍然可以通过命令升级SD中的内核固件和设备树到内部emmc。

fatload mmc 0:1 80800000 zImage
fatwrite mmc 1:1 80800000 zimage 552f78

fatload mmc 0:1 83000000 imx6ull-hyq-emmc.dtb
fatwrite mmc 1:1 83000000 imx6ull-hyq-emmc.dtb 3c88

注意fatload命令默认是没有的,需要在mx6ull_hyq_emmc.h添加

#define CONFIG_FAT_WRITE /* 使能 fatwrite 命令 */

fatwrite 写的字节数是十六进制的,比如552f78对应的是5582712 bytes

由于使用fatloat和fatwrite命令拷贝文件比较繁琐,需要知道文件的名字和文件大小,还需要将文件逐个加载到内存中才能进行拷贝,对于文件系统的拷贝更加麻烦。

因此我们一般是从SD卡引导启动linux内核,然后在内核程序中将内部的emmc进行分区格式化,再将相对应的文件从过linu命令进行批量的文件拷贝。下一篇文章将介绍如何通过脚本来照做SD启动卡和在linux中更新程序。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值