在对同一件事情的处理方式上,效率和优雅总是互损的。—— R.W

mfgtools的介绍

mfgtools是NXP提供的可以给imx系列烧写程序的工具。我们可以到NXP的官网去下载一个mfgtools的工具,我下载的版本是L4.9.88_2.0.0_mfg-tool

mfgtools的烧写原理

在下载的模式下,通过imx6q出厂就带有的固化在芯片里面的程序,往内存里面下载uboot和支持UTP的内核,然后让已经下载好的内存里的系统程序运行起来,同时也可以在串口里面看到系统启动输出的log。
然后,通过UTP协议把需要的文件和固件传到内存,把需要的烧写的image通过dd写入相应的分区,rootfs则直接解压到格式化好的分区上即可。
切换到eMMC启动模式,即可将烧写好的系统启动起来。

mfgtools烧写过程

  • UICfg.ini文件,这个文件是用来指定可以同时烧写几块板子,取值范围是1~4,开发的时候当然都是选择1了。
[UICfg]
PortMgrDlg=1
  • cfg.ini文件里面的profiles/chip的内容和mfgtools\Profiles下面的下载目标的文件夹保持一致;platform/board现在已经没有用了;LIST/name指向你想要在ucl2.xml里面执行的操作列表。
[profiles]
chip = Linux[platform]
board = Itop[LIST]
name = Linux-Itop-eMMC
  • ucl2.xml文件里面包含了很多操作列表,我们也可以定义自己的操作列表。操作列表分两个阶段。第一个阶段是BootStrap阶段,第二阶段是Updater阶段。
    可以分别来看一下,第一个阶段的操作列表如下
<CMD state="BootStrap" type="boot" body="BootStrap" file="firmware/u-boot.imx" ifdev="MX6Q">Loading U-boot.</CMD><CMD state="BootStrap" type="load" file="firmware/zImage_mfgtool" address="0x12000000" loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" ifdev="MX6Q MX6D">Loading Kernel.</CMD><CMD state="BootStrap" type="load" file="firmware/%initramfs%" address="0x12C00000" loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" ifdev="MX6Q MX6D">Loading Initramfs.</CMD><CMD state="BootStrap" type="load" file="firmware/imx6q-sabresd.dtb" address="0x18000000" loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" ifdev="MX6Q">Loading device tree.</CMD><CMD state="BootStrap" type="jump" > Jumping to OS image. </CMD>

把firmware下面的uboot、kernel和initramfs传输到对应的内存地址上去,然后通过jump命令告诉bootstrap程序去运行uboot。
这个阶段是为了后面烧写固件到eMMC做铺垫,其过程有点类似于OTA升级。其实,我们也可以利用这个过程验证我们开发中的程序或者固件。
第二阶段是Updater阶段,就是升级程序的意思。这个阶段会把每个分区=依次烧写,这里只摘取前面的过程看一下,后面的其他分区烧写也是类似的。

     <!-- create partition --><CMD state="Updater" type="push" body="send" file="mksdcard.sh.tar">Sending partition shell</CMD><CMD state="Updater" type="push" body="$ tar xf $FILE "> Partitioning...</CMD><CMD state="Updater" type="push" body="$ sh mksdcard.sh /dev/mmcblk3"> Partitioning...</CMD><!-- burn uboot --><CMD state="Updater" type="push" body="$ dd if=/dev/zero of=/dev/mmcblk3 bs=1k seek=384 conv=fsync count=129">clear u-boot arg</CMD><CMD state="Updater" type="push" body="$ echo 0 > /sys/block/mmcblk3boot0/force_ro">access boot partition 1</CMD><CMD state="Updater" type="push" body="send" file="files/linux/u-boot.imx" >Sending u-boot.bin</CMD><CMD state="Updater" type="push" body="$ dd if=$FILE of=/dev/mmcblk3boot0 bs=512 seek=2">write U-Boot to sd card</CMD><CMD state="Updater" type="push" body="$ echo 1 > /sys/block/mmcblk3boot0/force_ro"> re-enable read-only access </CMD><CMD state="Updater" type="push" body="$ mmc bootpart enable 1 1 /dev/mmcblk3">enable boot partion 1 to boot</CMD>

上面的过程是先将mksdcard.sh.tar放入文件系统,然后解压执行,主要是创建分区表用的。然后还有就是清除uboot的arg,将mmcblk3boot0设置成可更改的模式,然后把传进去的uboot的镜像dd到mmcblk3boot0分区,再把mmcblk3boot0分区恢复成只读的模式,然后设置设备从eMMC的第一个bootpart(也就是mmcblk3boot0)启动。
上面大致介绍了一下imx6q的烧写过程,但烧写过程较其他平台稍显繁琐,期望官方可以改进,使烧录过程简单化。

imx6q烧写程序的方法相关推荐

  1. atmega8a如何烧写程序_快捷又安全!如何利用芯片内部Bootloader烧写程序?

    CC2640 R2是德州仪器推出的面向 Bluetooth Smart 应用的低功耗无线 MCU.该芯片运行TI的BLE协议栈,具有功耗低,外设种类丰富,射频性能好等特点.利用它可以实现许多有趣的应用 ...

  2. 51单片机usb烧录电路_51单片机怎么用usb烧写程序 - 全文

    单片机怎样用usb烧写程序 首先,需要安装keil软件和STC_ISP程序下载软件. 先对你想要实现对单片机的功能用keil编程,然后用STC_ISP下载软件下载到单片机上,最后打开给单片机提供电源就 ...

  3. 用OpenJTAG烧写程序到Flash—— 韦东山嵌入式Linux视频学习笔记03

    说明:本文仅在Windows环境下实验. 韦东山的JZ2440(v2),可以选择从Nor Flash启动,也可以选择从Nand Flash启动,不管从哪里启动,都需要Flash上有程序,没有程序的话, ...

  4. omap-l138烧写程序之 - 启动模式选择及确认

    omap-l138烧写程序之 - 启动模式选择及确认 本文介绍烧写omap-l138程序到nand flash之前的准备工作 – 启动模式选择. 1 启动模式选择 下载Using the OMAP-L ...

  5. S32K144烧写程序记录

    调试工具S32DS ,下载使用Jlink v8 一,调试记录 板子来了以后,下载不了程序,调试好像也不正常.读取不到寄存器的值,首先检查了电源和晶振,好像也没问题.网上查了查,应该是被锁了,或者新片子 ...

  6. STM32、51单片机如何使用USB转TTL烧写程序?

    STM32.51单片机如何使用USB转TTL烧写程序? 一个好的程序员就要有钻研的精神,有串口工具就要用! 下面给大家介绍一下除了用J/ST-LINK烧写程序的另一种方法. 废话不多,按步骤一步步来! ...

  7. STC单片机蓝牙无线下载-烧写程序ISP(STC8 STC15 STC12 STC11 STC89)

    前一阵子用单片机开发一个小东西,其应用在一个非常潮湿的环境,以至于电脑和人员没发接近,但是又需要很长时间来调整参数,才能将设备设定好.另外设备一直在转动,这又导致不能通过电缆下载程序.在此时,我想到了 ...

  8. 开发板之驱动安装与烧写程序

    硬件接口 开发板接口:板载USB串口.JTAG.usb下载口(dnw) 软件下载 USB串口连接及驱动安装 串口驱动的安装非常简单: 运行串口驱动 PL2303_Prolific_DriverInst ...

  9. Stm32开发1-蓝牙实现STM32的无线烧写程序 ISP模式 串口1不受影响 无线下载

    最近研究如何实现Stm32的无线烧写程序.从CSDN上看到大部分的无线烧写方法,大都是采用ESP8266+CMSIS-DAP的方式,其能下载也能调试程序,也能通过虚拟串口通信.但是其串口应该是用软件实 ...

最新文章

  1. Discovering Urban Functional Zones Using Latent Activity Trajectories TKDE 2015
  2. Linux上怎样实现文件夹重命名
  3. java多线程打印helloworld,Java并发编程--多线程之HelloWorld
  4. android基础之TabSpec和TabHost
  5. java取负数_阿里巴巴 Java 开发手册之MySQL 规约
  6. sqlmap安装总结
  7. 通过IP地址获取对方MAC地址的命令
  8. python足球联赛赛程_足球联赛赛程表工作表
  9. linux bin目录下存放的什么,Linux_Linux根目录下主要目录功能说明,/bin:存放最常用命令;   /b - phpStudy...
  10. python处理wps表格数据匹配_两个excel表格数据匹配wps-WPS怎样用VLOOKUP引用另一个表格的数据...
  11. x-admin前端模板左侧菜单栏消除记忆功能(清除缓存)
  12. 知来路方知去处。坎坷已过,一马平川后必看的经典!——2018最新倾斜摄影建模与无人机航拍影像处理完美配置解决方案!
  13. Java格式日本邮编
  14. android通过USB连接佳博80打印机
  15. android studio自带的取色器(可脱离as界面取色)
  16. 第6章 供给、需求与政府政策
  17. 【原】flash图片批量上传处理专用php类。
  18. 数学物理方程逻辑梳理和有关思考
  19. 2021.04.01【2021省赛】模拟 比赛总结
  20. 图片识别二维码,二维码的黑白格线是怎么组合的?

热门文章

  1. 剪时光碎片,共度人间烟雨
  2. 信息收集之cms指纹识别
  3. 通俗易懂物联网(9):物联网终端操作系统
  4. CF 954I - Yet Another String Matching Problem FFT 字符串
  5. 计算机屏幕暗度怎么调,怎么调电脑屏幕暗度怎么调电脑屏幕暗度<br – 手机爱问...
  6. 不用启动盘安装linux系统,不用制作启动盘安装Windows操作系统的最简单办法
  7. Web前端面试题——HTML/CSS部分
  8. 6.S081-Lab3
  9. APPx小程序生成工具助力商家备战双十一“第二战场”
  10. vue实现前台生成word并下载,并且可实现批量打包下载