0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux系统烧写初探

CHANBAEK 来源:嵌入式攻城狮 作者:安迪西 2023-04-18 15:24 次阅读

系统烧写初探

嵌入式 Linux开发中通常是用网络来进行测试,但最终的产品中可能不会通过网络来运行。 因此需要将 uboot、linux kernel、. dtb(设备树) 和 rootfs这四个文件烧写到开发板的 EMMC、NAND或 QSPI Flash等存储设备上,这样不管有没有网络都可以正常运行。 本文将介绍 NXP官方提供的 I.MX系列 CPU烧写软件MfgTool及其工作原理

1. MfgTool工具介绍

MfgTool工具是 NXP提供的专门用于给 I.MX系列 CPU烧写系统的软件,可以在 NXP官网下载,该软件在 Windows下使用,本文中使用的是 L4.1.15_2.0.0-ga_mfg-tools.tar.gz,解压后的文件夹内容如下图:

图片

选择 with-rootfs的压缩包继续解压,解压完后,进入 mfgtools文件夹,其内容如下图示:

图片

其中:

  • Profiles文件夹:存放要烧写的文件
  • MfgTool2.exe:烧写软件

mfg_tools可以烧写I.MX6U、I.MX7、I.MX6Q等芯片,所以烧写前必须要进行配置,指定烧写芯片,烧写到哪里去。 mfgtools文件夹中有很多.vbs文件就是配置脚本,烧写时通过双击这些脚本文件来打开烧写工具

图片

2. MfgTool原理介绍

下面以 I.MX6U-ALPHA EMMC开发板为平台,介绍 MfgTool的工作原理,了解其工作流程

2.1 烧写方式

连接 USB线:通过 USB OTG接口将系统烧写进 EMMC中

图片

拨码开关拨到 USB下载模式:拨码到如下图所示模式,注意要弹出TF

图片

2.2 系统烧写原理

开发板连接电脑以后双击mfgtool2-yocto-mx-evk-emmc.vbs,若出现“符合HID标准的供应商定义设备”就说明连接正常,可以进行烧写,若出现其他字符就需要检查连接是否正确。 点击“Start”按钮即可开始烧写

图片

那么 uboot、Linux kernel、. dtb和 rootfs这四个文件应该放到哪个文件夹里,才可以被 MfgTool访问到呢。 进入如下目录中:

mfgtools/Profiles/Linux/OS 固件

图片

OS Firmware文件夹就是存放系统固件的,重点关注 files和 firmware文件夹,以及 ucl2.xml文件。 MfgTool 工作过程主要分两个阶段:

  • 将firmware目录中的uboot、kernel和.dtb三个文件,通过USB OTG下载到开发板的DDR中,并在DDR中启动系统,为后面的烧写做准备
  • 系统启动后,完成对EMMC的格式化、分区等操作,分区建好后就可以从files中读取要烧写的uboot、kernel、. dtb和 rootfs这四个文件,并将其烧写到EMMC中

下面介绍 files文件夹、firmware文件夹、ucl2.xml文件

firmware文件夹:存放第一阶段需要的三个文件,注意烧写自已的系统时,需要将自己的文件名字改为和下表中一致,否则 ucl2.xml识别不出来

图片

files文件夹:存放第二阶段需要的四个文件,将其烧写到 EMMC 中,烧写自已的系统时,需将自己的文件名字改为和下表中一致,否则 ucl2.xml 无法识别

图片

ucl2.xml文件:用来选择烧写文件,以UCL开始,/UCL结束,整体框架如下

CFG和/CFG之间是配置相关内容,判断给 I.MX系列的哪个芯片烧写系统。 通过读取芯片的VID和PID即可判断出当前要烧写什么处理器的系统




    name="BootStrap" dev="MX6SL" vid="15A2" pid="0063"/>
    name="BootStrap" dev="MX6D" vid="15A2" pid="0061"/>
    name="BootStrap" dev="MX6Q" vid="15A2" pid="0054"/>
    name="BootStrap" dev="MX6SX" vid="15A2" pid="0071"/>
    name="BootStrap" dev="MX6UL" vid="15A2" pid="007D"/>
    name="BootStrap" dev="MX7D" vid="15A2" pid="0076"/>
    name="BootStrap" dev="MX6ULL" vid="15A2" pid="0080"/>
    name="Updater" dev="MSC" vid="066F" pid="37FF"/>
  class="hljs-name"CFG>
	
  name="SDCard" desc="Choose SD Card as media">
  
class="hljs-name"LIST>
	
  name="eMMC" desc="Choose eMMC as media">

class="hljs-name"LIST>

name="Nor Flash" desc="Choose Nor flash as media">

class="hljs-name"LIST>

name="Quad Nor Flash" desc="Choose Quad Nor flash as media">

class="hljs-name"LIST>

name="NAND Flash" desc="Choose NAND as media">

class="hljs-name"LIST>

name="SDCard-Android" desc="Choose SD Card as media">

class="hljs-name"LIST>

name="eMMC-Android" desc="Choose eMMC as media">

class="hljs-name"LIST>

确定了处理器后,就要确定向什么存储设备烧写系统,这时需要再次用到 mfgtool2-yocto-mx-evk-emmc.vbs文件,此文件内容如下:

Set wshShell = CreateObject("WScript.shell")
#调用了mfgtool2.exe这个软件,并给出了相应的参数
wshShell.run "mfgtool2.exe -c ""linux"" -l ""eMMC"" -s
""board=sabresd"" -s ""mmc=1"" -s ""6uluboot=14x14evk"" -s
""6uldtb=14x14-evk"""
Set wshShell = Nothing

确定是向 EMMC中烧写系统后,返回到 ucl2.xml中找到相应的烧写命令。 以 uboot 烧写为例,通过 USB OTG向 DDR下载 uboot的命令如下:

# mfgtools文件夹下找到cfg.ini文件,该文件里包含了开发板的一些信息
# 可知 “%lite%”和“%6uluboot%”分别表示取lite和6uluboot的值
# 而lite=l,6uluboot=14x14evk,因此代入以后就是:
# u-boot-imx6ull14x14evk _emmc.imx

按上面的方法将.dtb 和 zImage都下载到 DDR中以后就会跳转去运行OS,这时在MfgTool工具中会有“Jumping to OS image”提示语句,ucl2.xml中的跳转命令如下:

type="jump" > Jumping to OS image. class="hljs-name"CMD>

启动 Linux 系统以后就可以在 EMMC 上创建分区,然后烧写 uboot、 zImage、 .dtb(设备树) 和根文件系统

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NXP
    NXP
    +关注

    关注

    60

    文章

    1215

    浏览量

    177309
  • Linux
    +关注

    关注

    87

    文章

    10992

    浏览量

    206745
  • WINDOWS
    +关注

    关注

    3

    文章

    3440

    浏览量

    87145
  • Linux系统
    +关注

    关注

    4

    文章

    567

    浏览量

    26923
  • 烧写
    +关注

    关注

    0

    文章

    55

    浏览量

    14119
收藏 人收藏

    评论

    相关推荐

    ok2440linux系统

    用u***linux系统的时候,linux
    发表于 04-27 18:34

    【OK210试用体验】之(二)——Linux系统和Android HDMI显示

    ` 本帖最后由 郎中令2000年 于 2015-7-21 01:47 编辑 在开箱贴之后,今天帖子的主要内容是对OK210测试板进行Linux系统和Android系统
    发表于 07-09 14:46

    【OK210试用体验】SDLinux系统

    的。WinPM.EXE在我win7 64位上打开失败,后来在虚拟机中用xp系统写成功。搞开发还是得用xp啊!写过程中可以使用串口查看写过程的。
    发表于 07-26 08:36

    【OK210试用体验】+Android系统+Linux(有点问题)

    电源,等待一段时间会进入开机画面,如下图还需等待一段时间才会进入Android界面(第一次启动时间往往较长)!但是问题出来了:我是以相同方法Linux系统,但是进不到图形话界面,
    发表于 08-16 19:13

    TQ210 Linux系统

    :  使用以下命令把linux文件系统镜像下载到开发板的内存中,然后程序会把linux文件系统镜像写到NAND FLASH中。   ./d
    发表于 10-30 16:53

    TQ210 Linux系统

    下命令把linux文件系统镜像下载到开发板的内存中,然后程序会把linux文件系统镜像写到NAND FLASH中。  ./dnw root
    发表于 11-09 10:48

    4412开发板Linux-QT问题

    请教一下:我买的开发板上的Linux+qt系统和加载系统都没问题。前两天买的两块新的核心板qt却起不来,用的是同样的image和syst
    发表于 12-11 16:12

    3399 开发板Linux 系统

    `` Linux 镜像 平台:iTOP-3399开发板系统Linux 系统 1 RKTo
    发表于 02-14 15:22

    Linux镜像详解

    iTOP-3399开发板之Linux镜像
    发表于 12-28 07:08

    [充电桩计费控制单元主板]如何一键启动Linux系统

    飞凌嵌入式于日前推出CDZ-335xD充电桩计费控制单元主板,完全符合国网充电桩标准,下面简单的介绍一下如何通过SD卡一键Linux系统。所谓的一键
    发表于 04-13 16:46

    如何解决linux固件失败的问题?

    )sun8iw11p1_linux_OKT3_C_uart0-1280x800.img能写成功; 2)sun8iw11p1_linux_OKA40i_C_uart0-1280x800.img
    发表于 01-05 07:31

    Linux系统DNW报错这是什么问题

    按照Linux 3.0.1用户手册“一键Linux系统”相关内容,在最后一步
    发表于 01-13 06:41

    如何linux镜像

    使用tftp下载方式进行镜像的验证,以及使用scp方式来更新linux内核与设备树。STM32CubeProgrammer方式STM32CubeProgrammer工具已经在前面的章节进行了安装,现在我们可以通过使用这个工具
    发表于 02-16 06:18

    STM32MP1系统镜像的过程

    STM32MP157系列教程连载-Linux系统移植篇2:STM32MP1微处理器之系统镜像第 1 章
    发表于 02-16 06:02

    Linux系统烧写实操

    Linux系统烧写初探一文中介绍了mfgtool烧写工具及其工作原理,下面以 I.MX6U-ALPHA EMMC开发板为平台,分别介绍如何烧写 NXP官方系统,以及烧写自制
    的头像 发表于 04-18 15:20 944次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>系统</b>烧写实操