完美体育·(中国)手机网页版科技提醒您:您的浏览器版本过低或者使用了兼容模式,为了获得更好的浏览体验,建议使用IE10以上的浏览器或使用极速模式。 请升级浏览器以获得更好的体验!

完美体育·(中国)手机网页版 > 评测报告 > 【完美体育·(中国)手机网页版王牌产品MYD-Y6ULX-V2开发板】开发板刷机和制作SD启动运行卡

【完美体育·(中国)手机网页版王牌产品MYD-Y6ULX-V2开发板】开发板刷机和制作SD启动运行卡

文章来源: 发布日期:2023.1.10 浏览次数:1467 次

由评测者“ALSET”提供。


完美体育·(中国)手机网页版的MYD-Y6ULX-V2开发板,是完美体育·(中国)手机网页版的经典王牌产品。作为一款嵌入式linux入门级的开发板,在测试C++程序的时候发现,有的程序在板上运行,表现为程序启动后无反应。查看日志信息也没有错误信息,经过检查后发现是开发板的运行环境和SDK不一致所致。


一、SDK运行库问题
    在linuxgnu开发工具链里有一个工具:ldd,它是查看执行文件所链接的库的命令。他可以查看动态库和elf可执行文件所链接的库,通常命令下:
ldd thread
如下图,可以看到这个执行文件,链接了哪些动态库文件。



ARM-linux上也需要这样一个工具,查看开发工具链目录下,没有发现这个命令,所以参照x86编译环境下的ldd命令,自己编写一下arm-poky-linux-gnueabi-ldd 文件,内容如下:
#!/bin/sh
arm-poky-linux-gnueabi-readelf-a $1 | grep "Shared library"
将此文件放到与交叉编译链相同的目录下:



然后可以查看交叉编译出来的elf执行文件的链接库信息,查看编译的测试文件 hello 文件,信息如下:



它链接了 lib.so.c库,而这个库指向的是libc-2.32.so:



而开发板系统内Lib 目录下的 libc.so.6 指向的却是 libc-2.28.so
即此问题是C++编译后的程序,编译后的程序连接了一个C运行时库是libc-2.32.so , 而板上的C运行时库是libc-2.28.so
因此交叉开发环境中的运行库和开发板内的运行库版本不一致,导致交叉开发环境下编译的程序在目标板上执行会出异常。
解决方案就是:
刷机。

二、OTG 刷机步骤
刷机的工具和文件都在开发板所带的文件资料包里。



1.刷机工具
在开发板的资料里面带有OTG刷机的工具,位置在:
E:\workspace\i.MX6UL\03_Tools\MYD-i.MX6ULX_UUU_v1.1
下有一个 uuu.exe即windows下的刷机工具,该工具是命令行工具,需要在具有admin权限下运行。
2.刷机镜像文件
这里面有多个,从命名可以看出,这个开发板是4G flash,512M ram的,qt版本是对应带有QT的版本,core是命令行版本,因此使用这个镜像文件:
myd-y6ulx-y2-4e512d-core-base.auto
3.启动windowsPowerShell
在开始菜单上右键,选择PowerShell(Admin), 然后进入上面文件的盘和目录下。



4.设置启动拨码开关
开发板右下角有一组拨码开发,它是可以设置开发板BOOT模式的硬件开关,其模式选择如下:



使用OTG刷机时,拨码设置如下:
SW1~SW4 : OFF,OFF,OFF,ON
拨码开关比较小,可以使用镊子进行拨动开关,拨动好的图如下:



5.开始执行刷机
在powershell命令行下,执行刷机命令:
.\uuu.exe myd-y6ulx-y2-4e512d-core-base.auto
即可看到刷机的进度,直到最后显示 100% ,刷机成功。



6.重启板子
把拨码开关设置为正常启动模式,
SW1~SW4 : OFF,OFF,ON,OFF



然后按一下reset按键,查看串口输出信息,发现已经是新的系统了,进入板子shell里查看libc 库,已经是新版本,和SDK的版本一致了。



三、刷写SD卡准备从上面的刷机可以看到开发板也支持从SD卡启动,另外从文件介绍看,SD卡也是批量生产时刷机写系统的一种方法。这里就尝试研究了一下从SD卡启动系统的方法。
1. 准备SD卡
准备一张8G以上的空白MicroTF 卡和USB读卡器,方便读写SD卡

2. 准备SD卡刷卡文件
MYD-Y6ULX开发板提供了一个制作 SD 卡更新系统镜像的工具,文件位置在MYiR-iMX-mkupdate-sdcard-5.10.9_v1.1 文档目录下

四、SD卡刷写步骤1. 挂载资源目录
    因为烧写脚本是linux下执行的,所以先把这个目录挂载到linux下,挂载完后在Linux下可以看到烧写shell脚本文件

firmware 文件夹下的固件是用于 SD 卡启动文件,一般情况不需要修改,mfgimages-myd-y6ulg2、mfgimages -myd-y6ulg2 和 roofs 文件夹中存放的固件是最终会烧写到板子的 flash 中;mfgimages-m yd-* 文件夹中 Manifest 文本中指定了烧写的文件名,如下:

2. ubuntu主机插入空白U盘
在主机上插入sd卡的usb读卡器,在ubuntu里能看到这个U盘的文件位置。如下图:

主机插入sd卡读卡器后,虚拟机会有一个提示,需要点击连接虚拟机,否则虚机内不出现这个U盘设备。
3. 制作SD卡镜像文件
按MYD-Y6ULX_Linux软件开发指南.pdf文档和开发板的硬件,可以确定烧写SD卡的命令参数,如下:
sudo ./build-sdcard-5.10.9.sh -pmyd-y6uly2 -e -d mfgimages-myd-y6uly2 -s 512 -f core

执行完成后,在当前目录下回发现生成了
myd-y6uly2-update-emmc-core-20230108150103.rootfs.sdcard.img.gz刷机包镜像文件。

4. 制作SD卡的系统
产生了镜像文件后,就可以使用刷机工具来制作SD卡了,刷机有windwos下的工具,把SD卡插入主机格式化成FAT格式,电脑上识别出新的盘符F:如下图:

然后启动 E:\workspace\i.MX6UL\03_Tools\win32diskimager-binary下的Win32DiskImager.exe 文件,如下图:

   然后选择上面生成的镜像文件。即进行制作带启动的刷新SD卡了。
刷新完后,在windwos下,SD卡文件系统已经变成了 exFat格式。


五、开发板SD卡启动     制作好之后就可以插入开发板的SD卡里,并且设置拨码开关,把拨码开关设置为SD启动模式:
SW1~SW4 : ON,ON,ON,ON

然后就可以看到系统充SD卡上启动了。
     因为这个镜像是刷机镜像,启动完后会自动执行复制SD卡启动文件到emmc里,自动制作系统的启动和文件系统。对于批量生产板上系统是非常方便的。
    而只要修改 firmware\ flash_emmc.sh 也可以不进行系统的更新,只从SD卡启动了。