00 IMX6ULL裸机开发:程序工具|烧写整个系统或更新部分系统

创建时间:2022/1/11 11:46
更新时间:2022/1/20 15:42
作者:gi51wa2j
标签:100ask_IMX6ULL_v11, bingo, 正文

开发板配置

百问网开发了一款烧写软件:100ask_imx6ull_flashing_tool,它的界面如下:

使用这软件,只需要一条USB线连接电脑和开发板USB OTG口,只需要点击一个按钮就可以实现某项烧写功能。
100ask_imx6ull_flashing_tool是一个GUI前端,它调用NXP官方的烧写工具uuu:Universal Update Utility(又名mfgtools 3.0)。
市面上的imx6ull开发板多是使用mfgtools 2.0来烧写,效率不高,脚本复杂;uuu有所改进,但是烧写效率还是不高。
我们做了很多改进,烧写更方便、效率更高。使用mfgtools烧写500M的映象文件到EMMC,耗时5分钟;而使用100ask_imx6ull_flashing_tool只需要1分钟。
本章会首先介绍100ask_imx6ull_flashing_tool的使用,后面也会介绍常规的烧写方法。

一、 100ASK_IMX6ULL启动开关

1.1 Pro版

100ask_imx6ull Pro版支持USB、EMMC、SD/TF卡三种启动方式。使用后2种启动方式之前,需要先在EMMC或SD/TF卡上烧写系统。
板子背后画有一个表格,表示这3种方式如何设置。表格如下:
BOOT CFG
BOOT
SW1(LCD_DATA5)
SW2(LCD_DATA11)
SW3(BOOT_MODE0)
SW4(BOOT_MODE1)
EMMC
OFF
OFF
ON
OFF
SD
ON
ON
ON
OFF
USB
X
X
OFF
ON

这3种启动方式的设置示意图如下:
其中的USB启动模式主要用来烧写系统。
注意
设置为USB启动时,不能先插上SD/TF卡。
要在USB启动模式下烧写SD/TF卡时,需要先上电再插卡,先上电再插卡,先上电再插卡,。

二、在Windows使用USB烧写工具

NXP公司给IMX6ULL提供了烧写工具:mfgtools。注意nxp烧写工具不支持烧写imx6ull mini emmc版和imx6ull mini nand版,它的使用界面如下:
操作很简单,一键烧写整个映象文件。
但是,缺点也很多:
a. 不能单独烧写bootloader、内核、设备树
或者说,可以实现这些功能,但是需要你去修改xml配置文件,对初学者不友善,对老手也显得麻烦。
b. 烧写速度慢
烧写500M的系统,耗时5分钟(我们的工具可以在1分钟内烧完)。

基于上述缺点,我们开发了新的烧写工具100ask imx6ull flashing tool,并且完全开源。它有如下特点:
a. 可以烧写整个系统,也可以分开烧写bootloader、内核、设备树
b. 可以上传用户文件到开发板系统中任意目录里
c. 烧写速度是原厂工具的5倍
d. 支持所有厂家的开发板烧写,注意:不只是支持100ASK_IMX6ULL,还支持其他厂家的IMX6ULL开发板。

从网盘下载工具后,在“01_Tools(工具)/100ask_imx6ull烧写工具”目录下双击运行“100ask_imx6ull_flashing_tool.exe”。
它有“基础版”、“专业版”两个页面。

“基础版”是专为100ASK_IMX6ULL设计的,点击一下即可完成某项烧写。
“专业版”功能更强大,特别是它可以上传文件到某个分区、某个目录。有些厂家的开发板,zImage和设备树是在第1个分区里的,而100ASK_IMX6ULL的zImage和设备树是在第2个分区里,所以这些厂家的开发板就无法使用基础版来烧写,需要使用专业版,指定分区、指定分区格式、指定路径,然后再上传文件。
注意:开发板必须设置为USB模式,如果要用SD/TF卡,必须先上电再插卡;
      不能先插卡再上电,不能先插卡再上电,不能先插卡再上电!

2.1 烧写工具目录详解

在100ASK_IMX6ULL的配套资料中,有文件:“01_Tools (工具)/100ask_imx6ull烧写工具.tar.bz2”,把它解压后可得如下目录:
要留意的是files目录下的文件,各文件的作用在上图中列出来了,文件名不能改变,要更新某文件时需要覆盖旧文件。
这个烧写工具不断更新,现在是V3.0版本,增加了Nand Flash的烧写功能。上述截图中files目录下内容更丰富了,请见下表。
如果要更新某个文件,把新文件放进去覆盖同名文件即可。
目录
文件
说明
files



u-boot-dtb.imx
IMX6ULL Pro版的u-boot,烧到EMMC或SD/TF卡

u-boot-dtb_nand.imx
IMX6ULL mini nand版的u-boot,烧到Nand

u-boot-dtb_nandsd.imx
IMX6ULL mini nand版的u-boot,烧到SD/TF卡

zImage
内核,适用于多个板子

100ask_imx6ull-14x14.dtb
IMX6ULL Pro版的设备树文件

100ask_myir_imx6ull_mini.dtb
IMX6ULL mini nand版的设备树文件

emmc.img
IMX6ULL Pro版的EMMC映像文件

sdcard.img
IMX6ULL Pro版的SD/TF卡映像文件

rootfs.ubi
IMX6ULL mini nand版的Nand Flash映像文件

2.2 连接USB OTG线

接线、设置USB启动的方式如下:
注意:USB串口线可接可不接,接上只是为了观察烧写过程。
注意:设置为USB启动时,先不要接TF卡

(1) Pro版接线方式
(2) MINI EMMC版接线方式

2.3 安装IMX6ULL的USB驱动程序

通过USB下载或是烧写程序时,需要把开发板的OTG口用USB线连接到电脑。一般都会自动安装驱动,烧写软件的绿灯不亮时,则很有可能是驱动程序没有安装好,这时再来看本节文档。
(1) VMWARE可能会截取USB设备导致烧写失败
如果你运行了VMWARE,它会截取USB设备,可能会有如下提示:
要选择“连接到主机”,勾选“记住我的选择,以后不再询问”。
也许你不慎点错了“连接到虚拟机”,那也没关系,在VMWARE的菜单中把“Freescale SE Blank 6ULL”或“Netchip USB download gadget”断开连接,如下图所示:
(2) USB驱动没有自动安装
通过USB下载或是烧写程序时,需要把开发板的OTG口用USB线连接到电脑。IMX6ULL开发板会通过这一个OTG口,模拟出2个USB设备(先后模拟,不是同时):“Freescale SE Blank 6ULL”、“USB download gadget”。一般会自动安装好驱动程序,如果驱动程序没安装好,你可以去下载“zadig”来安装驱动。
安装第1个驱动:只要开发板设为USB启动(不要插SD/TF卡)并上电,电脑就会识别出“Freescale SE Blank 6ULL”设备,一般都会自动给它安装驱动程序。
如果没有自动安装好驱动程序(“设备已连接”绿灯没亮),要使用zadig安装libusb-win32驱动。
先去https://zadig.akeo.ie/下载zadig并运行,然后参考下图安装驱动程序:
安装第2个驱动:当烧写工具的“设备已连接”绿灯亮起,就可以在“专业版”点击“运行”按钮,这时电脑会识别出“USB download gadget”设备,一般都会自动给它安装驱动程序,如下图:
如果没有自动安装好驱动程序(“固件已运行”绿灯没亮),先去https://zadig.akeo.ie/下载zadig并运行,然后参考下图安装驱动程序:
如果一切正常,烧写工具的2个绿灯都会亮,如下:
这就表示所有驱动都安装好了,可以重启开发板,使用后面2节的方法来烧写。

2.4 基础版烧写方法

要更新某个文件,就把它复制到烧写工具的files目录,比如zImage、100ask_imx6ull-14x14.dtb。
举例:要更新内核,先把新的zImage覆盖files目录下的zImage,然后接线,上电,选择设备,点击“更新内核”即可。
板子复位或重新上电后,在APP里操作即可,一个图就可以列清楚所有步骤:
当开发板设为USB模式,上图的烧写工具中“设备已连接”的绿灯亮起,就可以通过按钮一键烧写了,各按钮作用如下:
按钮
作用
烧写整个系统
“选择设备”为EMMC时,把emmc.img烧到EMMC上;
“选择设备”为SD/TF时,把sdcard.img烧到SD/TF卡上;
“选择设备”为NAND时,把rootfs.ubi烧到Nand Flash上;
并且会烧写对应的U-Boot,请看下面的“更新Uboot”按钮说明。
更新内核
把zImage上传到根文件系统的/boot目录
(对于Nand,是直接烧到内核分区)
更新设备树
把100ask_imx6ull-14x14.dtb上传到根文件系统的/boot目录
(对于Nand,是直接烧到设备树分区)
更新Uboot
对于IMX6ULL Pro版:
①“选择设备”为EMMC时,把u-boot-dtb.imx烧写到EMMC
②“选择设备”为SD/TF时,把u-boot-dtb.imx烧写到SD/TF卡
对于IMX6ULL mini nand版:
①“选择设备”为NAND时,把u-boot-dtb_nand.imx烧写到Nand Flash
②“选择设备”为SD/TF时,把u-boot-dtb_nandsd.imx烧写到SD/TF卡
烧写裸机
把所选裸机文件,烧写到EMMC、SD/TF卡或Nand Flash
上传文件
把所选用户文件,上传到根文件系统的/目录
对于imx6ull mini nand版,无法上传文件(只支持ext4文件系统,而它不是)

2.5 专业版烧写方法

专业版的强大在于烧写文件时可以选择任意文件,上传文件时可以指定分区、分区格式、目标路径。用法也很简单,一图足以说明:

有些开发板厂家把内核zImage、设备树放在第1个分区里,它通常是FAT分区。那么可以使用专业版来更新内核、更新设备树。
比如:
几乎所有的开发板的第2个分区都是EXT4格式,我们可以上传文件到它的任意目录下,比如:

三、 使用win32diskimage通过读卡器烧写SD/TF卡(老方法)

使用读卡器烧写裸机程序到SD/TF卡

这需要借助读卡器,在电脑上烧写TF卡。步骤如下:
a. 烧写TF卡:
把TF卡通过读卡器接到电脑上,使用win32diskimager把img文件烧写到SD卡上,如下图所示操作,烧写成功后会有提示:

b. 启动开发板:
把烧写好的TF卡插到开发板,开发板设置为SD/TF启动模式(如下),上电即可:
注意:使用win32diskimager烧写时,一定要选择img文件,不能选择imx文件。
注意:烧写、运行led程序时,串口是没有输出的,这只是一个点灯程序没用到串口。

四、使用USB烧写裸机程序到SD/TF卡

步骤如下:
① 开发板设置为USB启动:
对于100ASK_IMX6ULL开发板,启动开关设置为下图所示的样子:
② 使用USB线连接电脑和开发板的OTG口:
对于100ASK_IMX6ULL开发板,接线如下所示,接好线后上电:
③ 运行100ask_imx6ull_flashing_tool:
如果不成功,请确认:
a. 开发板的启动开关是否设置为USB模式
b. 开发板不要插上TF卡
c. 开发板复位一下,确定烧写工具上的“设备已连接”的按钮变绿,这时再插SD/TF卡
d. 要下载运行的是imx文件,不是bin文件,也不是img文件
e. 烧写成功后,开发板断电,设置为SD/TF启动,再重新上电观察效果

五、 使用USB烧写裸机程序到EMMC

步骤如下:
① 开发板设置为USB启动:
对于100ASK_IMX6ULL开发板,启动开关设置为下图所示的样子:
② 使用USB线连接电脑和开发板的OTG口:
对于100ASK_IMX6ULL开发板,接线如下所示,接好线后上电:
③ 运行100ask_imx6ull_flashing_tool:
如果不成功,请确认:
a. 开发板的启动开关是否设置为USB模式
b. 开发板不要插上TF卡
c. 开发板复位一下,确定烧写工具上的“设备已连接”的按钮变绿
d. 要下载运行的是imx文件,不是bin文件,也不是img文件
e. 烧写成功后,开发板断电,设置为EMMC启动,再重新上电观察效果

六、使用USB运行裸机程序

使用USB来运行裸机程序,是最简单的方法,不需要烧写
步骤如下:
① 开发板设置为USB启动:
对于100ASK_IMX6ULL开发板,启动开关设置为下图所示的样子:
② 使用USB线连接电脑和开发板的OTG口:
对于100ASK_IMX6ULL开发板,接线如下所示:
接好线后上电。

③ 运行100ask_imx6ull_flashing_tool:
如果不成功,请确认:
a. 开发板的启动开关是否设置为USB模式
b. 开发板不要插上TF卡
c. 开发板复位一下,确定烧写工具上的“设备已连接”的按钮变绿
d. 要下载运行的是imx文件,不是bin文件,也不是img文件