查看: 2052|回复: 3

[原创] 【i.MX6ULL-evk试用】之一:烧写系统

[复制链接]
  • TA的每日心情
    开心
    1 小时前
  • 签到天数: 1274 天

    [LV.10]以坛为家III

    21

    主题

    1万

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    13214
    最后登录
    2024-4-19
    发表于 2022-4-11 15:47:30 | 显示全部楼层 |阅读模式
    本帖最后由 sumoon_yao 于 2022-4-11 15:49 编辑

    对于一块linux arm开发板,首先要了解的就是如何烧写系统镜像。
    iMX6ULL-evk随板带有一片烧写好镜像的TF卡,为了避免评测过程中发生意外导致TF卡镜像的损坏,也为了有问题时可以做比对,因此就用了手头的一片32G的TF卡做测试。
      根据官方提供的资料,对TF卡烧写镜像有3种方法:
      1、使用linux系统的dd命令进行整卡镜像
      NXP官网上提供了每款开发板的不同版本的BSP下载,我下载了L4.1.15_2.0.0-ga_images_MX6ULLEVK.tar,解压后里面有个文件fsl-image-validation-imx-x11-imx6ull14x14evk.sdcard,这个文件就是TF卡的镜像,在开发平台上用dd命令将镜像烧写到TF卡。
      sudo dd if=fsl-image-validation-imx-x11-imx6ull14x14evk.sdcardof=/dev/sda bs=1M
    烧好镜像的TF卡插入卡槽,上电,登录界面出现后输入root,回车。
    输入命令df,查看文件系统空间:

    文件系统空间.png


      32G的TF卡,整个系统只用了1G左右,其余的都浪费啦。当然整卡镜像对于批量生产来说还是很方便的。
      2、通过网络使用tftp烧写
      先用fdisk命令对TF卡分区,然后用dd命令把uboot镜像烧写到卡上,将TF卡插入板上的卡槽,上电,进入uboot倒计时界面后按回车,此时就可以通过tftp将zImage、设备树文件和文件系统镜像烧写到CF卡上。
      3、通过NXP官方提供的专用工具mfgtool烧写
      从官网下载带镜像的mfgtool工具包L4.1.15_2.0.0-ga_mfg-tools,这个是windows版本的,解压后里面有带fs和不带fs的 压缩包,继续解压带fs的压缩包,就得到了带镜像文件的mfgtool烧写工具。
      一个完整的linux arm系统烧写需要4个镜像文件,对iMX6ull-evk官方开发板来说所需要的4个文件分别是:启动文件u-boot-imx6ull14x14evk_sd.imx,内核文件zImage,设备树文件zImage-imx6ul-14x14-evk.dtb,不带GPU的根文件系统rootfs_nogpu.tar.bz2,这4个文件位于烧写工具目录下的Profiles/Linux/OS Firmware/files子目录,我们看到这个目录下有不同MPU型号不同硬件配置的镜像文件,那烧写工具是如何准确知道要烧写的是哪些文件呢?这个就由烧写工具根目录下的cfg.ini文件和Profiles/Linux/OS Firmware子目录下的ucl2.xml来决定的。
      cfg.ini文件的部分内容如下:
    [profiles]
    chip = Linux
    [platform]
    board = SabreSD
    [LIST]
    name = SDCard
    [variable]
    board = sabresd
    mmc = 0
    sxuboot=sabresd
    sxdtb=sdb
    7duboot=sabresd
    7ddtb=sdb
    6uluboot=14x14ddr3arm2
    6uldtb=14x14-ddr3-arm2
    6ulldtb=14x14-ddr3-arm2
    ldo=
    plus=
    lite=l
        ucl2.xml文件的部分内容如下:
    <UCL>
      <CFG>
        <STATE name="BootStrap"dev="MX6SL" vid="15A2" pid="0063"/>
        <STATE name="BootStrap"dev="MX6D" vid="15A2" pid="0061"/>
        <STATE name="BootStrap"dev="MX6Q" vid="15A2" pid="0054"/>
        <STATE name="BootStrap"dev="MX6SX" vid="15A2" pid="0071"/>
        <STATE name="BootStrap"dev="MX6UL" vid="15A2" pid="007D"/>
        <STATE name="BootStrap"dev="MX7D" vid="15A2" pid="0076"/>
        <STATE name="BootStrap"dev="MX6ULL" vid="15A2" pid="0080"/>
        <STATE name="Updater"   dev="MSC" vid="066F"pid="37FF"/>
      </CFG>
      <LIST name="SDCard"desc="Choose SD Card as media">   <!--burn uboot -->
        <CMD state="Updater" type="push"body="send" file="files/u-boot-imx6q%plus%%board%_sd.imx"ifdev="MX6Q">Sending u-boot.bin</CMD>
        <CMD state="Updater" type="push"body="send" file="files/u-boot-imx6dl%board%_sd.imx"ifdev="MX6D">Sending u-boot.bin</CMD>
        <CMD state="Updater" type="push"body="send" file="files/u-boot-imx6slevk_sd.imx"ifdev="MX6SL">Sending u-boot.bin</CMD>
        <CMD state="Updater" type="push"body="send" file="files/u-boot-imx6sx%sxuboot%_sd.imx"ifdev="MX6SX">Sending u-boot.bin</CMD>
        <CMD state="Updater" type="push"body="send" file="files/u-boot-imx7d%7duboot%_sd.imx"ifdev="MX7D">Sending u-boot.bin</CMD>
        <CMD state="Updater" type="push"body="send" file="files/u-boot-imx6ul%6uluboot%_sd.imx"ifdev="MX6UL">Sending u-boot.bin</CMD>
        <CMD state="Updater" type="push"body="send"file="files/u-boot-imx6ul%lite%%6uluboot%_sd.imx"ifdev="MX6ULL">Sending u-boot.bin</CMD>
    </LIST>
    </UCL>
      cfg.ini文件中的name变量决定了ucl2.xml文件中LIST段的烧写介质,ucl2.xml文件中的CFG段决定了板子上的芯片型号,如我们的板子型号dev="MX6ULL",再加上另一个烧写脚本文件mfgtool2-yocto-mx-evk-sdcard-sd2.vbs,内容如下:
    Set wshShell =CreateObject("WScript.shell")
    wshShell.run"mfgtool2.exe -c ""linux"" -l""SDCard"" -s ""board=sabresd"" -s""mmc=1"" -s ""6uluboot=14x14evk"" -s""6uldtb=14x14-evk"" -s ""6ulldtb=14x14-evk"""
    Set wshShell = Nothing
    通过这3个文件相关变量的定义,就决定了镜像烧写时具体使用的哪个文件,以我们这块板的uboot镜像文件为例:
    <CMD state="Updater" type="push"body="send" file="files/u-boot-imx6ul%lite%%6uluboot%_sd.imx"ifdev="MX6ULL">Sending u-boot.bin</CMD>
    name,dev,lite,6uluboot共4个变量决定了uboot镜像文件为:u-boot-imx6ull14x14evk_sd.imx。
    下面就是采用mfgtool工具烧写镜像的具体方法:
    将开发板上的拨码开关SW602拨为D1:off、D2:on,用USB线将板上的USB OTG口J1602连到电脑,给开发板上电,然后双击运行mfgtool烧写工具根目录下的
    mfgtool2-yocto-mx-evk-sdcard-sd2.vbs文件,出现烧写界面,如果识别到开发板,则会显示找到HID设备,点击start按钮,开始烧写镜像:

    烧写界面.png


      耐心等待烧写完成,如果还有另一根USB连接线的话,可以将开发板上的USB debug口(J1901)也接到电脑上,打开串口终端,这时就能看到烧写过程中给出的提示信息。
      烧写完成后会给出提示,点击stop按钮,然后关闭烧写工具。

    烧写结束.png


    拨码开关SW602拨回D1:on、D2:off,用USB连接线将开发板上的USBdebug口(J1901)接到电脑上,打开串口终端,给开发板上电,稍后出现登录界面,输入root回车后即进入系统,此时再次输入文件系统空间查看命令df:

    文件系统空间1.png


      此时可以看到根文件系统空间近30G。
      至此系统镜像烧写成功完成,下一篇将介绍如何编译3个镜像文件:启动文件u-boot-imx6ull14x14evk_sd.imx,内核文件zImage,设备树文件zImage-imx6ul-14x14-evk.dtb


    跟着日天混 ,三天饱九顿!
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    1 小时前
  • 签到天数: 1933 天

    [LV.Master]伴坛终老

    61

    主题

    1万

    帖子

    3

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    17218
    最后登录
    2024-4-19
    发表于 2022-4-11 16:02:18 | 显示全部楼层
    我来看看
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3298

    主题

    6545

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32003
    最后登录
    2024-4-9
    发表于 2022-4-11 16:20:54 | 显示全部楼层
    好家伙,编辑好了这是,一次性发出
    签到签到
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2022-1-4 14:25
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    172

    帖子

    0

    高级会员

    Rank: 4

    积分
    567
    最后登录
    2024-4-10
    发表于 2024-4-9 17:39:09 | 显示全部楼层
    学习了,谢谢!
    每天登陆学习一下
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-19 12:56 , Processed in 0.122114 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表