IMX6ULL学习笔记(2)——通过SD卡烧录镜像

发布者:EnigmaticCharm最新更新时间:2025-02-26 来源: jianshu关键字:SD卡 手机看文章 扫描二维码
随时随地手机看文章

一、系统镜像和固件

1.1 镜像文件格式

镜像(Mirroring)是一种文件存储形式,是冗余的一种类型,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像。可以把许多文件做成一个镜像文件,与GHOST等程序放在一个盘里用GHOST等软件打开后,又恢复成许多文件,RAID 1和RAID 10使用的就是镜像。常见的镜像文件格式有ISO、BIN、IMG、TAO、DAO、CIF、FCD。

  • ISO
    这种格式的镜像扩展名为.ISO,是以ISO-9660格式保存的光盘镜像文件,是最常见的光盘镜像格式。安装Ubuntu系统时,我们使用到了Ubuntu提供的.iso后缀的系统镜像文件。

  • IMG
    主要用于创建磁盘的镜像文件(disk image), 它可以用来打包整个磁盘或光盘的内容。img是iso文件格式的超集,它向后兼容iso文件格式。

嵌入式单板机一般没有光驱,而它们通常支持运行SD卡里的操作系统,所以嵌入式的系统镜像通常使用img文件的形式发布。 人们通常在PC上使用软件通过读卡器把img镜像文件烧录至SD卡,然后把SD接入到嵌入式单板机上运行。部分工具生成的镜像文件后缀名不一定是img,例如使用yocto生成的系统镜像,通常是以“.sdcard”为后缀的。

1.2 Debian镜像

基于debian社区提供的构建工具制作的debian 10 buster稳定发行版。

野火提供适用于i.MX6开发板的debian镜像可在如下链接下载:

https://pan.baidu.com/s/1pqVHVIdY97VApz-rVVa8pQ 提取码:uge1

  • imx6ull-lubancat-carp-console-armhf-2022-02-10.img.xz: Debian的纯净版固件,没有带桌面环境和野火的QT App。

  • imx6ull-lubancat-carp-qt-armhf-2022-02-10.img.xz: 具有QT App功能的Debian固件,系统启动后会进入QT App的界面。

野火提供的debian镜像特点:

  • 经过整合,SD、NAND和eMMC存储器使用同一个uboot固件和内核固件。

  • 使用插件设备树和fire-config工具,能在系统运行时调整设备树,适配不同的硬件使用场景。

  • 通过apt工具可以安装各种软件,达到调整文件系统的目的。例如使用我们提供的debian纯净版系统, 直接通过apt工具就能安装全功能的野火Qt-App,变成我们提供的Full-Qt版镜像。 用户可以根据自己的需要安装各种软件工具而不需要重新制作和烧录镜像。

  • 可以直接在运行的系统复制粘贴替换除uboot外的系统固件,使用apt-update可在线更新包括uboot在内的系统固件。

  • SD卡的镜像能直接原样刷机至NAND和eMMC存储器,量产非常方便。

1.3 Yocto镜像

基于NXP提供的yocto工具配置构建的。

yocto工具生成的文件后缀默认是sdcard,它实际上是img格式的文件,野火提供适用于i.MX6开发板的yocto镜像可在如下链接下载:

https://pan.baidu.com/s/1kJdJ6xc12Yg4rPby_MatDA 提取码:4u7d

由于该yocto生成的镜像是针对特定硬件定制化的,通用性不好。例如我们针对7寸屏幕与4.3寸屏幕就需要分别提供两种镜像文件。 而且此处提供的镜像文件只能适配SD卡,不支持烧录至NAND和eMMC存储器中。 使用yocto镜像时需要严格按照硬件功能进行烧录和定制,相对debian镜像使用起来非常麻烦。

1.4 系统固件

上面的debian镜像和yocto镜像都是img格式的文件,这些镜像都是由 bootloader、设备树、Linux内核、根文件系统 四部分固件构成的。

以野火提供的部分yocto固件进行说明:

  • bootloader固件
    此处使用uboot,分别适配sd卡、NAND flash以及eMMC存储器:


  • 设备树固件
    适配eMMC存储器,由于某些设备引脚共用,只能同时使用其中一个,需要不同的设备树进行适配:


    适配NAND存储器,跟eMMC的类似:


  • Linux内核固件
    适配5寸屏、4.3寸显示屏:


  • 根文件系统固件
    不同用途的根文件系统,由于没法通过apt安装软件,所以针对不同的应用提供了多种不同的文件系统示例:



上面这些固件都是通过yocto工具构建出来的,单从它生成的文件类型就我们可以感受到yocto工具的强大之处, 即它能够针对不同的应用场景进行细致的定制。

不过,如果我们对这些固件都打包成img格式的镜像文件,将会有非常多的组合,不方便镜像发布和调整。 而且img格式的镜像文件目前只适用于SD卡,没法烧录至板载的NAND FLASH或eMMC存储器上。

一般来说芯片厂商会提供专用的工具来把这些独立的固件烧录到存储器,如NXP提供了mfgtools工具。 使用这样的工具可以直接用上面的固件自己组合并烧录至存储器中,省去了打包成img格式文件的麻烦。

1.5 Debian、Yocto(Buildroot)镜像的差异

我们把buildroot与yocto镜像都归类为 自定义镜像。很多系统工程师使用buildroot来构建镜像,buildroot工具构建出来的镜像与yocto镜像类似, 不过buildroot工具使用起来相对简单一点。

  • 使用方便

    • 由于debian镜像与自定义镜像的根文件系统不同,导致两种镜像的使用感受差异非常大。 使用debian镜像时,可以保留我们在x86 PC上使用Debian、Ubuntu的习惯,通过apt包管理工具直接安装各种各样的软件, 例如python、java、php等运行环境,各种使用配置也跟PC上的类似,这会给我们的开发和学习带来极大的便利。

    • 而使用yocto(buildroot)镜像时,如果我们想给系统安装某些软件,就需要重新使用yocto(buildroot)工具构建文件系统,再烧录到开发板上,非常麻烦。 特别是对Linux系统不熟悉的用户,使用它来学习效率会非常非常低。

  • 占用大小

    • 使用yocto(buildroot)镜像的主要优势是:如果有需要,它可以把镜像做得非常小,我们制作的debian镜像最小的约为340MB,如果再裁剪的话,可能很多debian系统的功能都会没用了,没有意义。 而使用yocto(buildroot)工具可以制作出50MB以内的镜像。当然了,如果想要用yocto(buildroot)工具做出debian系统的效果,它并不会比debian镜像小。 所以通常在产品功能固定、应用程序本身依赖小、flash容量要求苛刻且有非常熟悉系统的工程师时,才会采用这种方案定制自己的镜像。

    • 简单来说,debian镜像是整个开源社区的力量制作出来的,而且无论是在x86、arm等各种平台上使用它都非常多,基于debian还衍生出各种各样的Linux发行版。

强烈建议先学习好如何构建debian镜像,再去研究buildroot,最后再学习yocto工具。

二、通过SD卡烧录Debian镜像

2.1 安装Etcher工具



官网下载:https://www.balena.io/etcher/
百度网盘:https://pan.baidu.com/s/1mChjnYzWHs_GlLveZzQqgA?pwd=vlbo 提取码:vlbo


2.2 烧录Debian镜像至SD卡

  1. 下载野火最新发布的Debian系统镜像
    https://pan.baidu.com/s/1pqVHVIdY97VApz-rVVa8pQ 提取码:uge1

  • console版本: Debian的纯净版固件,没有带桌面环境和野火的QT App。(解压后约340M)

  • carp-qt版本: 具有QT App功能的Debian固件,系统启动后会进入QT App的界面。

  1. 准备Micro SD卡
    推荐使用闪迪class 10的SD卡,容量2GB以上就完全足够。

  2. 使用管理员身份打开安装好的Etcher工具
    否则等会报以下错误:


  3. 选择要烧录的镜像


  4. 选择要烧录的SD卡,然后点击Flash按钮开始进行烧录


  5. 烧录过程会显示镜像的烧录进度,如下图




  6. 等到软件出现出现如下界面时,表示镜像已经成功烧录完毕


2.3 设置为SD卡启动模式

开发板插入烧录好Debian镜像的SD卡。

根据以下BOOT拨码开关启动配置表,调整拨码开关为SD卡启动方式,即2-5-8位拨到on,其他位拨到0。

编号名称NAND FLASHeMMCSDUSB
1MODE00001
2MODE11110
3CFG1-4100X
4CFG1-5010X
5CFG1-6011X
6CFG1-7100X
7CFG2-3010X
8CFG2-5001X

然后注意使用SD卡时开发板右下角的J2竖排针不要盖有跳帽需断开(此为WIFI模块供电,核心板只引出一路SDIO,SD卡和WIFI不能同时用)

注意:开发板第一次从SD卡启动时,系统会自动进行SD卡扩容, 以保证充分利用SD卡存储空间。扩容完毕后,系统自动重启生效。

2.4 通过fire-config刷机

注意: 刷机不建议用ssh远程登录来操作,避免开发板重启后, ssh断开连接而不能及时看到相关的刷机信息提示。

  1. 执行 sudo fire-config,选择 Advanced 项。


  2. 在Advanced,能够选择从sd烧写镜像到emmc或nand中,也可以选择从emmc或nand烧写系统到sd卡中, 从sd烧写镜像到emmc或nand可选择单次烧录,也可选择持续烧录模式方便量产使用,普通用户选择单次烧录即可。 此处我们选择从sd单次烧录到emmc或nand选项。


  3. 系统提示: “Would you like the flasher to be enabled”,选择


  4. 系统提示:“The flasher is enabled”,选择


  5. 返回fire-config初始界面,使用键盘方向→键,选择


  6. 在初始界面,选择项。 系统提示:“Some config will take effect after reboot,would you like to reboot now?” 选择


  7. 系统自动重启,重启后的系统将自动进行emmc或者nand flash刷机。


  8. 耐心等待刷机结束,刷机过程大约持续2分30秒左右。刷机完成后,控制台会重新进入串口登录页面, 此时观察开发板的LED灯,如果LED在持续闪烁,说明刷机成功。


  9. 无论是emmc,还是nand flash,刷机成功后,调整拨码开关为相应启动方式,重新上电启动系统即可。

根据以下BOOT拨码开关启动配置表,调整拨码开关为NAND FLASH启动方式,即2-3-6位拨到on,其他位拨到0。

编号名称NAND FLASHeMMCSDUSB
1MODE00001
2MODE11110
3CFG1-4100X
4CFG1-5010X
5CFG1-6011X
6CFG1-7100X
7CFG2-3010X
8CFG2-5001X

注意: 如果是选择持续烧录模式,想要停止持续烧录,使用读卡器将SD卡接入到电脑,打开sd卡boot分区, 修改该分区的uEnv.txt文件,修改内容见下图:



关键字:SD卡 引用地址:IMX6ULL学习笔记(2)——通过SD卡烧录镜像

上一篇:[国嵌笔记][015][裸机开发快速体验]
下一篇:[国嵌笔记][014][Mini2440安装Linux]

推荐阅读最新更新时间:2026-03-25 01:14

迅为-imx6ull开发板之C语言实现LED例程
第九章我们使用汇编编写了 LED 灯的实验,在实际开发过程中大部分还是使用 C 语言,汇编只是用来完成 C 语言环境的初始化,本章我么就来实现用汇编完成 C 语言环境的初始化,然后用 C 语言实现 LED 的例程。 10.1 C 程序版LED例程简介 汇编完成 C 语言环境的初始化主要包括内存初始化,设置堆栈指针等等,当这些工作完成以后就可以跳转到 C 语言,执行 C 程序了,所以我们有两部分事情要做: 1.汇编文件,用来完成 C 语言的环境初始化 2.C 语言文件,主要实现我们的业务功能,比武我们本章的点亮 LED。 10.2 原理图分析 原理图分析 本章用到的硬件资源和第 6 章的一样,可以参照第六章的硬件原理分析。
[单片机]
迅为-<font color='red'>imx6ull</font>开发板之C语言实现LED例程
迅为imx6ull开发板Linux I2C驱动实验-应用程序与I2C通信
本章内容对应视频讲解链接(在线观看): 程序源码在网盘资料“imx6ull 驱动程序配套资料21-Linux I2C 驱动实验”路径下。 我们可以先来体验一下,在 Linux 上操作 I2C 是多么的容易,我们可以先来看一下系统里面都有哪些 I2C的节点,这里以终结者 imx6ull 开发板为例。如下图所示: Linux 有一个非常重要的概念叫一切皆文件,那么我们能不能在应用层通过 open 这些节点来操作 I2C 来跟外设 I2C 通信的芯片进行一个数据交流呢?当然是可以的,我们来一起看一下,这里我们以 7 寸 RGB 屏幕上的触摸芯片 FT5X06 为例,迅为所有开发板都是支持迅为 7 寸 RGB 屏幕屏的,所有都是可以进
[单片机]
迅为<font color='red'>imx6ull</font>开发板Linux I2C驱动实验-应用程序与I2C通信
迅为imx6ull开发板移植Debian文件系统
本教程将带领大家移植 Debian 文件系统到 i.MX6ULL 终结者开发板上。 1 安装 Qemu 和 Debootstrap 由于我们是在 Ubuntu 上构建的 debian 的文件系统,所以安装这俩个工具我们直接使用 apt-get 命令即可。命令如下: apt-get install binfmt-support qemu qemu-user-static debootstrap如下图所示: 2 抽取 Debain 文件系统 抽取文件系统我们使用的是 debootstrap 命令,我们执行以下命令即可从 debian 下载源中获取到文件系统: debootstrap --arch=armhf --foreign bu
[单片机]
迅为<font color='red'>imx6ull</font>开发板移植Debian文件系统
迅为IMX6ULL开发板Buildroot文件系统构建-配置Busybox
Buildroot 也是基于 busybox 制作的文件系统,所以我们 buildroot 里的 busybox 也可以进行配置。首先我们在 buildroot 源码目录下,使用命令“ make busybox-menuconfig”,如下图所示: 在这里我们可以看到 busybox 版本是 1.29.3,然后就是我们之前看到过得 busybox 配置界面了,用户可根据自己需要配置。如下图所示: 然后我们使用命令“make busybox”即可单独编译 busybox。如下图所示: 最后编译完成以后使用命令“make”重新编译 buildroot,主要是对其进行打包,如下图所示: 重新编译完成以后查看 output/ima
[单片机]
迅为<font color='red'>IMX6ULL</font>开发板Buildroot文件系统构建-配置Busybox
迅为IMX6ULL开发板-Linux MISC驱动-编写实验程序
首先我们回想一下注册杂项设备的三大流程,我们在 Windows 上面新建 misc.c 文件,并用 sourceinsight打开。我们可以将上次编写的 helloworld.c 里面的代码拷贝到 misc.c 文件,并修改为如下图所示: 添加头文件 /*注册杂项设备头文件*/ #include /*注册设备节点的文件结构体*/ #include 填充 miscdevice 结构体 struct miscdevice misc_dev = { .minor = MISC_DYNAMIC_MINOR, .name = hello_misc , .fops = &misc_fops, }; 上述代码第 2 行的 minor 为 MI
[单片机]
迅为<font color='red'>IMX6ULL</font>开发板-Linux MISC驱动-编写实验程序
迅为imx6ull开发板使用c语言调用shell命令控制led灯
用命令来控制 led 灯没有感觉,那可以使用程序来控制,让程序帮我们输入这些命令,我们可以使用system 函数来完成。 头文件:#include 格式:system(要执行的命令) 代码实现: #include void main(void) { system(“echo none /sys/class/leds/sys-led/trigger”);//设置触发方式 while(1) { system(“echo 1 /sys/class/leds/sys-led/brightness”);//点亮 led2 sleep(5); system(“echo 0 /sys/class/leds/sys-led/brightne
[单片机]
迅为<font color='red'>imx6ull</font>开发板使用c语言调用shell命令控制led灯
实验分享丨迅为IMX6ULL开发板点亮第一个led灯
本章内容对应IMX6ULL开发板视频讲解链接(在线观看): 我们学 linux 、单片机的第一个操作硬件就是点亮第一个 led 灯。 在单片机上我们点亮一个 led 灯非常的简单,直接操作引脚就可以了。虽然 linux 听着比较高大上,但是点亮一个 led 灯是非常容易的。我们甚至不用去写驱动,直接命令操作就可以了,因为 linux 系统本身有好多成熟的驱动框架,使用这些框架的好处就是当我们更换平台的时候,比如换到 RK3399 平台,我们应用程序可以不用做任何改变,就可以直接在新的平台上运行。但是如果你在单片机上写一个点灯程序,比如说我在 32 上写了一个点灯我现在想把它移植到 51 上那这个移植过程是比较麻烦的,如果说用寄存
[单片机]
实验分享丨迅为<font color='red'>IMX6ULL</font>开发板点亮第一个led灯
迅为IMX6ULL开发板安装VMware Tool工具
本章内容对应视频讲解链接(在线观看):B站搜索迅为 从本章开始我们来搭建 嵌入式 开发环境,我们先来安装 VMware Tool 工具。我们在 ubuntu 上复制一个东西,但是粘贴不到 windows 上,因为我们没有安装 VMware Tool 这个工具,只有安装好这个工具,我们才能实现虚拟机 ubuntu 和 windows 之间互相的粘贴复制。 接下来我们安装 VMware Tool ,在安装之前我们先对虚拟机进行设置,点击编辑虚拟机设置,我们选择 CD/DVD 2 (SATA) ,把它改成物理驱动器,原来是使用 ISO 映像文件。 同样 CD/DVD (SATA) 也要选择物理驱动器,这两个我们都要选择自动检测,
[单片机]
迅为<font color='red'>IMX6ULL</font>开发板安装VMware Tool工具
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved