百问网(100ask)提供的烧写工具的原理
具体的实现原理见链接 http://wiki.100ask.org/100ask_imx6ull_tool
为了防止上面这个链接失效,我还对上面这个链接指向的页面保存成了mhtml
文件,这个mhtml
文件的百度网盘下载链接:
https://pan.baidu.com/s/1DCNVMu5hjsedasyMGM35gA?pwd=t6sx
视频讲解链接 https://www.bilibili.com/video/BV1zV411U7H9/?p=14&vd_source=8fb767d1739ea6b35c7177ba909eed36
大致的实现原理我梳理一下如下:
NXP公司给IMX6ULL提供的烧写工具mfgtools缺点多:既不能单独烧写bootloader、内核、设备树,烧写速度还慢,所以有必要另外开发一个烧写工具。
百问网开发的烧写工具的原理概括如下:
借助IMX6ULL本身支持USB启动的特点,将IMX6ULL设置为USB启动后,首先它会运行固化在芯片内部的程序imx6ull boot ROM
,我们可以借助这个程序通过SDP协议把某个特制程序发送到IMX6ULL中,然后开始运行这个特制程序,这个特制程序就可以通过FB协议实现我们理想中的烧写工具的各种功能,示意图如下:
NXP官方已经开发了一个名叫uuu
的工具来实现上面这段话的功能了。所以百问网就在工具uuu
的基础上进行二次开发,实现了我们理想中的烧写工具的各个功能。
百问网(100ask)提供的这个烧写工具的界面分为基础版和专业版。
“基础版”是专为100ASK_IMX6ULL设计的,点击一下即可完成某项烧写。
专业版则更强大、更灵活、适合所有开发板,专业版的强大在于烧写文件时可以选择任意文件,上传文件时可以指定分区、分区格式、目标路径。
百问网的IMX6ULL开发板的zImage和设备树是放在第2分区的,而有些厂家的开发板,zImage和设备树是在第1个分区里的,所以这些厂家的开发板就无法使用基础版来烧写,需要使用专业版,指定分区、指定分区格式、指定路径,然后再上传文件。
关于什么叫开发板上的第1分区和第2分区,请参见我的另一篇博文:
https://blog.csdn.net/wenhao_ir/article/details/145653766
基础版的使用说明如下:
专业版的说明如下:
有些开发板厂家把内核zImage、设备树放在第1个分区里,它通常是FAT分区。那么可以使用专业版来更新内核、更新设备树。
比如:
几乎所有的开发板的第2个分区都是EXT4格式,我们可以上传文件到它的任意目录下,比如:
关于什么叫开发板上的第1分区和第2分区,请参见我的另一篇博文:
https://blog.csdn.net/wenhao_ir/article/details/145653766
下载百问网(100ask)提供的烧写工具
在百度网盘中下载下面这个压缩包:
上面这个截图红框中的压缩包百度网盘下载链接:
https://pan.baidu.com/s/1f6VPeq25LoEo5_zPjFC8Xg?pwd=a2g5
这里有说明下为什么这个压缩包快1GB,因为里面包含开发板的各种镜像文件。
下载完成后解压:
这里先不忙运行这个工具。
工具files目录下的文件说明
你需要烧写哪个文件,就把哪个文件用你要写的文件覆盖掉就行了,注意是覆盖,也就是文件名不能变。
烧写SD卡时要特别注意的地方
当然,咱们这篇博文中是烧到eMMC中,而不是SD卡中,不过为了为了不必要的麻烦,建议先把SD卡取出放到读卡器中,排除它的干扰。
将烧写工具配置好以便能写入镜像
设置开发板为USB启动
说明一下,为了不必要的麻烦,建议先把SD卡取出放到读卡器,根据教程,就算是要烧写SD卡,也得上电后再插SD卡。
把板子设置为USB启动的方式如下:
连接USB-OTG接口并安装两个驱动
拿另一根USB线连接USB-OTG接口(注意:这里串口其实可以不连哈):
连接好后,上电…
上电后请及时让选择连接到主机,而不要连接到虚拟机,然后通常就会自动安装第一个驱动,并获得设备“SE Blank 6ULL”,如下图所示:
如果没有自动安装驱动,请参考嵌入式Linux应用开发完全手册V5.2_IMX6ULL_Pro开发板
的第136页,这个手册的百度网盘下载链接 https://pan.baidu.com/s/1gB9o–jN0NYhR66gKNzgHg?pwd=9bkp
接下来打开百问网提供的烧写工具,即运行文件100ask_imx6ull_flashing_tool_v4.0.exe
:
绿灯亮起,说明连接成功了:
这样,第一个驱动安装完成,但是“固件未运行”前的绿灯还没有亮,所以需要安装第二个驱动:
切换到专业版界面上,然后点击运行
按钮:
这个按钮的作用相当于是往IMX6ULL里写入原理介绍里说的“特制程序”。“特制程序”写入完成后,这时电脑会识别出“USB download gadget”设备(注意:不要连到虚拟机上了),并且一般情况下都会自动给它安装驱动程序。安装了驱动程序后,如下面的截图所示:
此时“固件未运行”变成了“固件已运行”,它前面的绿灯也亮了:
不妨切换到“基础版”界面,因为后面要对百问网的IMX6ULL_PRO开发板作操作嘛。
接下来就可以开始烧写镜像了。
烧写u-boot镜像文件到eMMC
在后续过程中为了不必要的麻烦,建议先把SD卡取出放到读卡器,根据教程,就算是要烧写SD卡,也得上电后再插SD卡。
把目录100ask_imx6ull_pro开发板系统烧写工具\files
下的文件u-boot-dtb.imx
替换为前面编译u-boot时生成的镜像文件u-boot-dtb.imx
。
注意:镜像文件u-boot-dtb.imx
的位置就是在u-boot的根目录下:
替换之后files目录的截图如下(我把原来的文件加了个bak的后缀,哈哈):
按上面的步骤将开发板设置为USB启动,并用数据线连接好PC与开发板上的USB-OTG接口。
然后按照上面的步骤配置好烧写工具(100ask_imx6ull_flashing_tool_v4.0.exe):
设置那里选择EMMC
,然后点击按钮“更新 Uboot”,烧写成功后的截图如下:
烧写完成后关闭开发板电源,烧写完成后关闭开发板电源,烧写完成后关闭开发板电源,然后设置开发板为eMMC启动方式,打开串口即可看到终端有u-boot的运行信息了。