SD卡烧录i.MX6ULL uboot Linux内核及buildroot根文件系统

1 NXP官方烧录uboot、Linux、设备树和根文件系统

1.1 NXP官方烧录uboot文件

  使用SD卡烧录uboot、linux内核镜像文件、设备树文件和根文件系统之前需要先对SD卡进行分区及格式化,SD卡分区及格式化请参考:fdisk命令制作i.MX6ULL烧录SD卡。烧录uboot需要使用dd命令,关于dd命令请参考:Linux 命令大全 | 菜鸟教程

  NXP官方《i.mx linux user’s guide》文档4.3.4 Copying a bootloader image章节详细描述了使用dd命令将uboot-imx拷贝到SD卡中,详情如下图所示:
在这里插入图片描述

1.2 NXP官方烧录Linux镜像文件、设备树文件

  NXP官方《i.mx linux user’s guide》文档4.3.5 Copying the kernel image and DTB file章节详细描述了烧录Linux镜像文件和设备树文件
到SD卡操作步骤,详情如下图所示:

在这里插入图片描述
在这里插入图片描述

1.2 NXP官方烧录根文件系统

  NXP官方《i.mx linux user’s guide》文档4.3.6 Copying the root file system (rootfs)章节详细描述了烧录根文件系统到SD卡操作步骤,详情如下图所示:
在这里插入图片描述
在这里插入图片描述

2 烧录uboot、Linux、设备树和根文件系统到SD卡

2.1 烧录u-boot-dtb.imx文件到SD卡

  烧录移植好的u-boot-dtb.imx文件到SD卡,参照NXP官方《i.mx linux user’s guide》文档4.3.4章节,烧录详细过程如下图所示:
在这里插入图片描述
  烧录uboot需要用到dd命令,使用dd命令将u-boot-dtb.imx文件拷贝到SD卡中,拷贝时需要前两个扇区,从第2个扇区开始,每个扇区的大小为512个字节,dd命令如下:

sudo dd if=u-boot-dtb.imx of=/dev/sdb bs=512 seek=2 conv=sync

if:u-boot-dtb.imx uboot源文件

of:/dev/sdb输出设备(SD卡)

bs:512 块的大小(和扇区的大小保持一致,官方给的示例为1K,我们使用的SD卡扇区大小为512字节,因此这里填写512)

seek:跳过的块的数量(NXP官方SD卡启动时需要跳过1K地址空间,因此seek取值为2即跳过前两个扇区)

conv:输入输出同步(这里选择sync)

2.2 烧录Linux镜像文件和设备树文件到SD卡

  烧录编译好的Linux镜像文件(zImage)和设备树文件(imx6ull-alientek-emmc.dtb)文件到SD卡中sdb1分区,参照NXP官方《i.mx linux user’s guide》文档4.3.5章节,烧录详细过程如下图所示:
在这里插入图片描述
  由上图可知将Linux镜像文件和设备树文件拷贝到sdb1分区需要以下五个步骤:

  1.创建sdb1分区挂载点,在Ubuntu根目录下mmt临时挂载目录下新建sd目录用于挂载sdb1分区。

  2.进入Linux镜像文件和设备树文件存储目录(~/linux/imx6ull/test/)

  3.使用mount命令将sdb1分区挂载在第1步新建的sd目录(sudo mount /dev/sdb1 /mnt/sd/)

  4.使用cp命令将Linux镜像文件和设备树文件拷贝到sdb1分区挂载目录(sudo cp imx6ull-alientek-emmc.dtb zImage /mnt/sd/)

  5.使用umount命令卸载sdb1分区挂载(sudo umount /mnt/sd)

2.3 烧录根文件系统buildroot到SD卡

  为了方便调试,我们在产品开发过程中一般将根文件系统放在nfs服务器上,通过设置uboot环境变量bootargs变量让uboot在启动的时候可以找到nfs服务器上的根文件系统,当产品上市前将根文件系统烧录在EMMC或者SD卡中。

  烧录编译好的根文件系统buildroot到SD卡sdb2分区,参照NXP官方《i.mx linux user’s guide》文档4.3.6章节,烧录详细过程如下图所示:
在这里插入图片描述
在这里插入图片描述
  由上图可知将Linux镜像文件和设备树文件拷贝到sdb2分区需要以下四个步骤:

  1.进入根文件系统buildroot的存储目录(~/linux/imx6ull/test/buildroot/)

  2.使用mount命令将sdb2分区挂载在新建的sd目录(sudo mount /dev/sdb2 /mnt/sd/)

  3.使用cp命令将根文件系统buildroot目录下所有文件拷贝到sdb2分区挂载目录(sudo cp -a * /mnt/sd/)

  4.使用umount命令卸载sdb2分区挂载(sudo umount /mnt/sd)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值