我是靠谱客的博主 忧心红酒,最近开发中收集的这篇文章主要介绍嵌入式Linux--i.mx6ull--制作SD卡启动卡常用操作前言制作启动卡更新Uboot更新设备树更新内核更新文件系统,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 前言
  • 制作启动卡
    • 用法说明:
  • 更新Uboot
  • 更新设备树
  • 更新内核
  • 更新文件系统

 SD卡启动卡,更新固件比较简单,我们可以直接在 ubuntu 上操作。 首先确保你已经制作了一张SD卡系统启动卡。

前言

 作为一张SD卡启动卡,它在物理上被分为了三个部分:

  • RAW数据区:无法被Ubuntu识别并挂载的区域,存放uboot.imx和启动参数。
  • boot分区:可以被Ubuntu识别的FAT32文件系统格式区域,存放设备树文件、zImage内核压缩文件。
  • rootfs分区:可以被Ubuntu识别的EXT4文件系统格式区域,存放根文件系统

制作启动卡

 脚本固化系统一般可用于批量固化与升级系统。不像 mfgtool 上位机那样还需要 PC 机和USB 数据线,用户可以自行修改好固化系统脚本,进行自动化固化测试,那么可以无需专业人员参与,即可批量固化系统。

同样地,拷贝:mfgtool->Profiles->Linux->OS Firmware->files 整个文件夹到 Ubuntu 虚拟机:

使用 chmod 指令修改固化 SD 卡系统脚本 imx6mksdboot.sh 的权限将 SD 卡用读卡器插到 Ubuntu 虚拟机,等待 Ubuntu 主机识别后,如下图。(因作者已经制作过 SD 卡,所以 Ubuntu 主机会识别出两个分区,如果您的 SD 卡是空白的,只有一个分区时就识别出一个分区,就会看到只有一个 USB 图标(可能图案不一样))。

输入如下指令查看 SD 卡挂载节点:

sudo fdisk -l
liefyuan@ubuntu:~/linux/sd$ sudo fdisk -l
Disk /dev/sda: 80 GiB, 85899345920 bytes, 167772160 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x02202ea5

设备       启动     Start    末尾    扇区 Size Id 类型
/dev/sda1  *         2048 163676159 163674112  78G 83 Linux
/dev/sda2       163676160 167772159   4096000   2G  5 扩展
/dev/sda5       163678208 167772159   4093952   2G 82 Linux 交换 / Solaris

Disk /dev/sdc: 14.9 GiB, 15931539456 bytes, 31116288 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xaa05766a

设备       启动  Start   末尾   扇区  Size Id 类型
/dev/sdc1  *      2048   133119   131072   64M  c W95 FAT32 (LBA)
/dev/sdc2       133120 31116287 30983168 14.8G 83 Linux

可以看到,我这张已经已经制作过启动卡的挂载节点是:/dev/sdc
并且可以识别出两个分区:

  • /dev/sdc1:FAT32格式,大小为64M,开始地址是2048结束地址是133119,也就是说开始地址0~2047的内容都是没有分区的专用来存放uboot和启动参数的
  • /dev/sdc2:EXT4格式,大小为14.8G,开始地址是133120,是紧接着前面那个分区的。

用法说明:

用法: imx6mksdboot.sh [选项] <(必选)-device> <(可选)-flash> <(可选)-ddrsize>

  • device:指明设备节点(SD 卡挂载的节点如/dev/sdx),执行脚本时必需要加这个参数
  • flash:指明核心板上的媒体存储介质,可选为(emmc|nand)
  • ddrsize:指明核心板上的 ddr 容量大小,可选为(512|256)MB
    比如现在用户是核心板的 ddr 容量大小是 512MB,媒体存储介质是 eMMC。SD 卡挂载节点为/dev/sdc。那么固化 SD 卡的指令如下,执行指令后脚本会有中文再次询问 SD 卡所挂载的节点是否对应,将会清空 SD 卡上的所有数据,请注意备份重要的数据。按 Enter 键确认后继续,固
    化 SD 卡需要大约需要几分钟时间,这里根据个人电脑不同和所用 SD 卡不同,可能花费的时间差异比较大。
sudo ./imx6mksdboot.sh -device /dev/sdb -flash emmc -ddrsize 512

注意:空白的SD卡也可以。

更新Uboot

在 ubuntu 上插上连接 SD 卡,使用 fdisk 指令查看 SD 卡挂载的节点。如下图,可以看到 SD 卡所挂载的节点为/dev/sdc。

sudo fdisk -l
sudo dd if=u-boot.imx of=/dev/sdc bs=1024 seek=1 conv=fsync

 至此更新 uboot 成功,需要注意的是:如果你的 SD 卡曾经保存过其他 uboot 环境变量,你需要在 SD 卡时恢复一次环境变量再保存,才能使用新的环境变量启动!

更新设备树

就直接拷贝对应的设备树dtb到SD卡的boot分区即可。

更新内核

就直接拷贝对应的zImage到SD卡的boot分区即可。

更新文件系统

最后

以上就是忧心红酒为你收集整理的嵌入式Linux--i.mx6ull--制作SD卡启动卡常用操作前言制作启动卡更新Uboot更新设备树更新内核更新文件系统的全部内容,希望文章能够帮你解决嵌入式Linux--i.mx6ull--制作SD卡启动卡常用操作前言制作启动卡更新Uboot更新设备树更新内核更新文件系统所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部