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

    文章

    1267

    浏览量

    183241
  • Linux
    +关注

    关注

    87

    文章

    11222

    浏览量

    208896
  • WINDOWS
    +关注

    关注

    3

    文章

    3524

    浏览量

    88409
  • Linux系统
    +关注

    关注

    4

    文章

    591

    浏览量

    27349
  • 烧写
    +关注

    关注

    0

    文章

    57

    浏览量

    14258
收藏 人收藏

    评论

    相关推荐

    ok2440linux系统

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

    【OK210试用体验】SDLinux系统

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

    3399 开发板Linux 系统

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

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

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

    如何linux镜像

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

    ucos方法

    在OK6410上ucos ii 方法
    发表于 10-29 10:55 0次下载

    单片机软件

    单片机软件,单片机软件,单片机软件
    发表于 12-09 18:40 16次下载

    最新插件

    最新插件,有兴趣的同学可以下载学习
    发表于 04-27 17:12 9次下载

    NXP PMIC芯片步骤

      如果用户打算查看芯片是否已经programed,可以通过Blankcheck进行空片检查。需要特别提醒的是,因为OTP是只能一次的,所以建议先几片,测试确保
    发表于 09-18 09:50 21次下载
    NXP PMIC芯片<b class='flag-5'>烧</b><b class='flag-5'>写</b>步骤

    什么是单片机软件?如何

    什么是单片机软件? 什么是单片机软件? 简单点说,就是把你写好代码(C或者是汇编)专程的机器语言通过一定的方式下载到单片机中。称为
    发表于 04-14 11:04 3.4w次阅读

    stm32使用flymcu程序

    文章目录一、使用flymcu程序一、使用flymcu程序程序之前要使ASP指示灯保持
    发表于 10-26 11:06 18次下载
    stm32使用flymcu<b class='flag-5'>烧</b><b class='flag-5'>写</b>程序

    STM32MP157 Linux系统移植开发篇2:linux镜像

    使用tftp下载方式进行镜像的验证,以及使用scp方式来更新linux内核与设备树。 STM32CubeProgrammer方式 STM32CubeProgrammer工具已经在前面的章节进行了安装,现在我们可以通过使用这
    发表于 12-17 18:22 11次下载
    STM32MP157 <b class='flag-5'>Linux</b><b class='flag-5'>系统</b>移植开发篇2:<b class='flag-5'>烧</b><b class='flag-5'>写</b><b class='flag-5'>linux</b>镜像

    STM32MP157系列教程连载-Linux系统移植篇2:STM32MP1微处理器之系统镜像

    STM32MP157系列教程连载-Linux系统移植篇2:STM32MP1微处理器之系统镜像第 1 章
    发表于 12-17 18:22 14次下载
    STM32MP157系列教程连载-<b class='flag-5'>Linux</b><b class='flag-5'>系统</b>移植篇2:STM32MP1微处理器之<b class='flag-5'>系统</b>镜像<b class='flag-5'>烧</b><b class='flag-5'>写</b>

    Linux系统写实操

    Linux系统初探一文中介绍了mfgtool
    的头像 发表于 04-18 15:20 1211次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>系统</b><b class='flag-5'>烧</b>写实操

    TI、DSP方法介绍

    由于 TI 的 DSP 要比单片机略微复杂,很多客户对不是很熟悉,所以我们将方法做一
    发表于 10-07 14:22 1399次阅读
    TI、DSP<b class='flag-5'>烧</b><b class='flag-5'>写</b>方法介绍