米尔MYC-Y6ULX-V2开发板测评记录

2024-06-03 00:44

本文主要是介绍米尔MYC-Y6ULX-V2开发板测评记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 1、板子上手体验
    • 2、板载硬件
    • 3、系统信息
    • 4、 驱动测试
    • 5、编译linux三大件
    • 7、摄像头测试
    • 9、总结

1、板子上手体验

首先非常感谢芯查查给了这样一个机会来测评这样一款性能十分强大的开发板,我拿到手的是MYC-Y6ULX-V2核心板及开发板,这块板子具有如下特点:

  • 1、高性能i.MX6UL/i.MX6ULL系列处理器、内核Cortex-A7 主频900Mhz;主频还可以,已经接近1ghz了。
  • 2、邮票孔140Pin引脚;工业级:-40~85℃,这使得这块板子非常适合开发,利于形成产品开发。
  • 3、外设资源丰富:LCD接口、 双网口、CSI接口、USB OTG2、UART8 I2S,SPI,CAN;强大的外设接口使得这块板子可以用来做很多事情,不用去专门找一些其他的板子来当作外接的接口。

下面贴几张开箱的图片,下面是包装外观:(米尔电子的大log)
在这里插入图片描述
开发板正面(大大的邮票孔)
在这里插入图片描述
附赠的电源还有网线,以及用来调试的USB线,给的还是很充足的,不用专门去额外购买了。
在这里插入图片描述

2、板载硬件

板子的资料可以从官网获取,网址如下:
https://www.myir.cn/shows/78/26.html

资料网站:
https://www.myir-tech.com/product/myc_y6ulx.htm

一些编译的资料下载网站:
https://down.myir-tech.com/MYD-Y6ULX/

我拿到的是这一款
在这里插入图片描述
接口信息如下:
在这里插入图片描述
对应如下:
在这里插入图片描述
板载系统的适配情况如下:
在这里插入图片描述

3、系统信息

接上串口就可以用了,默认已经刷好了软件,上电就可以使用,首先是确认启动方式:
在这里插入图片描述
这里我设置位eMMC启动也就是0010拨码状态,状态如下所示:
在这里插入图片描述
信息查看的话我这里用的是串口,对着丝印接一下即可,如下所示:
在这里插入图片描述
之后打开就能看到系统启动的信息了
在这里插入图片描述
系统是无密码的,可以直接进入,当然不想用串口的话也可以ssh远程登陆,先查看一下设备ip地址:
在这里插入图片描述
之后使用ssh直接登陆就行
在这里插入图片描述
可以看到板子默认的系统是已经安装了ssh工具的,可以直接进去
在这里插入图片描述
用ssh的好处是传文件会方便很多,直接在右侧的窗口拖放文件就行了,真的不要太方便。

下面来看一下板子的基本信息吧:

查看CPU型号,性能等信息,核心芯片是 i.MX6ULx 系列是基于高性能、超低功率 ARM Cortex-A7核心处理器,处理器运行速度高达 900MHz,包含 128 KB L2 高速缓存和 16 位DDR3/LPDDR2 支持。其内部集成了电源管理、安全单元和丰富的互联接口。
在这里插入图片描述
查看CPU的频率,温度等相关的信息
在这里插入图片描述
查看CPU占用情况如下(这个一般评估某个模块是否过度占用资源)
在这里插入图片描述
总体情况看最上面一排就行,相关参数说明如下:

  • %us:表示用户空间程序的 cpu 使用率(没有通过 nice 调度)
  • %sy:表示系统空间的 cpu 使用率,主要是内核程序。
  • %ni:表示用户空间且通过 nice 调度过的程序的 cpu 使用率。
  • %id:空闲 cpu

下面还可以进行一下cpu的压力测试,cpu压力测试的方案比较多,我大概了解了一下,可以用下面的方式:

  • stress命令:stress是一个Linux工具,可以用来模拟CPU、内存、磁盘等资源的压力,用来测试系统的稳定性和性能。
  • sysbench工具:sysbench是一个多功能的基准测试工具,可以用来测试CPU、内存、数据库性能等方面。

但是都没跑起来,因此这里用官方推荐的计算圆周率的方案来测试,输入echo "scale=5000; 4*a(1)" | bc -l -q &,之后会打印一个进程号出来,输入top可以看到
在这里插入图片描述
这个进程在测试cpu占用情况,并且占用率很高

在这里插入图片描述
几分钟后会输出一个计算结果:
在这里插入图片描述

查看内存占用情况(这个一般运行程序的时候看一下有没有内存泄漏用的比较多)
在这里插入图片描述
相关字段的含义如下:

  • MemTotal :所有可用的 RAM 大小,物理内存减去预留位和内核使用
  • MemFree :LowFree + HighFree
  • Buffers :用来给块设备做缓存的大小
  • Cached :文件的缓冲区大小
  • SwapCached :已经被交换出来的内存。与 I/O 相关

当然通过free -h命令也可以获取内存信息,我们是512mb+4gb内存的方案,这样看起来也没什么问题了
在这里插入图片描述
查看内存信息,可以看到大概就是4gb了
在这里插入图片描述
插入一个u盘看看,这个系统已经做了自动挂载,可以看到比较顺利的挂载了,输入fdisk -l也可以看到挂载的u盘的信息。
在这里插入图片描述

4、 驱动测试

首先是GPIO接口,这块板子的gpio接口引脚是有一个对应关系,在这个文件里面
在这里插入图片描述
打开如下:
在这里插入图片描述
在linux上(也就是应用层驱动gpio),操作gpio的步骤如下:
输入下面命令导出GPIO echo 24 > /sys/class/gpio/export
在这里插入图片描述
设置GPIO方向:
设置为输出

echo "out" > /sys/class/gpio/gpio24/direction

设置为输入

echo "in" > /sys/class/gpio/gpio24/direction

查看gpio方向

cat /sys/class/gpio/gpio24/direction

之后就可以设置gpio的高低电平了
设置输出低电平

echo "0" > /sys/class/gpio/gpio24/value

设置输出高电平

echo "1" > /sys/class/gpio/gpio24/value

针对led,还设置了专门的驱动:

可以通过下面的命令读取led状态

cat /sys/class/leds/cpu/brightness

0就是关闭,这个led是pwm驱动的,这个数值在0-255之间
在这里插入图片描述
led的操作汇总如下:

echo 0 > /sys/class/leds/cpu/brightness 熄灭led
echo 0 > /sys/class/leds/cpu/brightness 点亮led
echo "heartbeat" > /sys/class/leds/cpu/trigger 开启led心跳

设置为心跳的效果如下:
在这里插入图片描述

gpio还可以引申出来按键,按键的效果如下:

这里我们看一下设备树的信息:
在这里插入图片描述
这里用的是一个脚本来测试的按键,在串口输入evtest,之后按下按键,就可以看到打印的信息,如下所示
在这里插入图片描述
除了上面测试的这些,这块板子接口丰富,由于时间原因我没有一一测试,这里仅是浅浅的测试了一下。

5、编译linux三大件

终于到了大头了,下面开始看一下这个板子的系统构建框架部分,简单来说就是linux三大件的部分了,这里主要参考这个文档
在这里插入图片描述
一开始我以为也是常规的buildroot的那一套,结果不是,他这里用的是Yocto的方式,这个我之前是从来没有接触过的,关于yocto,介绍是这样的:

  • Yocto 不仅仅是一个制做文件系统工具,同时提供整套的基于 Linux 的开发和维护工作流程,使底层嵌入式开发者和上层应用开发者在统一的框架下开发,解决了传统开发方式下零散和无管理的开发形态。

下面来体验一下,这里我用的是windows上的wsl来开发,这个的好吃是可以榨干你电脑的性能,我觉得用起来还是很爽的。
把需要的文件导入,准备编译
在这里插入图片描述

首先还是安装必要的库

sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib
build-essential chrpath socat cpio python python3 python3-pip python3-pexpect
xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-
dev pylint3 xterm

设置环境变量,这里要求用个人账号,不能用root

mkdir -p ~/MYD-Y6ULX-devel
export DEV_ROOT=~/MYD-Y6ULX-devel
cp -r <DVDROM>/02_Images $DEV_ROOT
cp -r <DVDROM>/03_Tools $DEV_ROOT
cp -r <DVDROM>/04_Sources $DEV_ROOT

接下来是安装编译器,进入sdk目录,输入下面命令这个工具链要你自己用官方给的资料里面拷贝过来,有下面两种:
在这里插入图片描述
安装编译工具的命令

 ./fsl-imx-fb-glibc-x86_64-myir-image-fullcortexa7t2hf-neon-myd-y6ull14x14-toolchain-5.10-gatesgarth.sh

使用下面命令测试是否安装完成:

source /opt/test5.10/environment-setupcortexa7t2hf-neon-poky-linux-gnueabi
$CC -v

看到如下输出,说明OK了
在这里插入图片描述
之后就可以编译了(构建镜像)

进入源码目录,开始解压

cd $DEV_ROOT/04_Sources
tar -xzf MYiR-i.MX6UL-Yocto.tar.gz

大概是这些内容:
在这里插入图片描述
然后官方教程让你去网上拉更新下代码,这也太慢了,还好他给了替代方案,就是这个10几个g的大包,直接解压他就完事了
在这里插入图片描述
回到上一级新建一个路径,之后去这个路径下面解压

 cd imx6ulx-yoctotar -xvf downloads.tar.gz -C ./

搞完是这样的
在这里插入图片描述
之后就可以开始编译了(我只能说确实方便)

bitbake myir-image-full 带gui的版本
bitbake myir-image-core 不带gui版本

编译开始后就会自动去寻找匹配,然后下载,之后就是疯狂占用cpu编译了
在这里插入图片描述
编译好了是这样的,编译产物在这个路径下:tmp/deploy/ima ges/myd-y6ull14x14/
在这里插入图片描述
这些就是三大件了,不得不说这个构建方式确实方便啊
在这里插入图片描述
然后关于这个构建我总结下吧:

  • 1、网络要好,要能连外网那种,不然总会有超时什么的拉不下来,很麻烦这样搞得
  • 2、失败了就再来一次,我也是失败了两三次才行的,但是只要成功了一次后面就没失败过了
  • 3、有一个小问题,是下面这个报错
    在这里插入图片描述
    最后解决方案是参考的这里
    https://community.nxp.com/t5/i-MX-Processors/Yocto-Error-when-generating-the-SDK-for-imx-linux-5-10/m-p/1261377

具体改动的话参考我这里吧:
在这里插入图片描述

之后就是烧录固件了,不得不说这个烧录固件是真的方便了,这里我用的是usb更新(前面不是提到官方送了一个USB数据线吗,没想到这里用到了,真是贴心哦,爽歪歪了)
在这里插入图片描述
更新固件步骤如下:

  • 切换启动拨码开关(SW1)的第三位位 OFF,第四位为 ON
  • 使用 USB 转接线(Type-A 转 Micro-B)连接 PC 机 USB 端口与开发板 Micro USB OTG 端口(J26)
  • 使用 DC 12V 电源适配器连接至开发板的电源座(J22)
  • 以管理员权限打开 cmd 窗口,进入 MYD-i.MX6ULX_UUU_v1.1 目录,输入:
    uuu.exe myd-y6ulx-y2-4e512d-qt.auto 开始烧写系统

刷写过程如下:
在这里插入图片描述
进度条走完重启:
在这里插入图片描述
启动
在这里插入图片描述
如果用sd卡来更新,用下面的方式制作sd卡镜像,之后插卡更新即可
在这里插入图片描述
之后启动
在这里插入图片描述
三大件这里限于篇幅就到这里了,怎么说呢,感觉这个新的工具还是很方便,然后官方提供的这些下载工具也都很给力,用起来还是很爽的。

7、摄像头测试

因为最近在做摄像头相关的工作,所以就来测试一下摄像头相关的功能吧:

首先给板子接上USB摄像头,下面查看摄像头信息
在这里插入图片描述
查看dev信息
在这里插入图片描述
查看摄像头信息
在这里插入图片描述
可以用下面的命令来查看视频流
在这里插入图片描述
视频显示出来如下所示:
在这里插入图片描述
也可以直接用v4l2来查看:

v4l2-ctl --device=/dev/video2 --stream-mmap=3 --stream-to=video_output.yuv --stream-count=100

会输出一个yuv文件,打开就能看
在这里插入图片描述

之后尝试使用mjpg_streamer来实现一次推流,但是我发现输出gcc用不了,因为我用的这个是精简版本的系统,所以就比较小了
在这里插入图片描述
那么就只能用交叉编译了

先把这个库拉下来:

https://github.com/jacksonliam/mjpg-streamer/archive/refs/heads/master.zip

之后上传到我们的wsl里面,然后unzip解压一下

按照上面的命令(前面章节)配置一下交叉编译器:
在这里插入图片描述
因为现在make是用的gcc,所以需要先替换原来makefile里面的gcc为cc,使用下面的命令:

find -name "Makefile" -exec sed -i "s/CC = gcc/#CC = gcc/g" {} \;
grep -rn 'CC = gcc' * 这个是检查效果的

结果如下,有四处被替换
在这里插入图片描述
之后make编译一下:
在这里插入图片描述
生成这些库和可执行文件
在这里插入图片描述
拖到开发板里面
在这里插入图片描述
运行测试

v4l2-ctl --device=/dev/video2 --stream-mmap=3 --stream-to=video_output.yuv --stream-count=100

打印如下:
在这里插入图片描述
使用vlc拉流:(延迟一般,但是说实话对于这种板子来说还可以)

http://192.168.1.4:8080/?action=stream

在这里插入图片描述

9、总结

限于时间原因,本次仅测评了这些内容,总的来说,这款开发板还是很不错的,他给我眼前一亮的地方在域厂家对他的配套生态做的很好,这使得开发者上手起来会很方便。特别是系统构建这块,其他家还在用老式的方式,这边已经在用yocto了,非常给力,让我学到了很多东西。厂家的文档是十分详细,非常适合入门学习,给深入学习也留足的空间,真想多拥有一段时间啊。

这篇关于米尔MYC-Y6ULX-V2开发板测评记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1025560

相关文章

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

学习记录:js算法(二十八):删除排序链表中的重复元素、删除排序链表中的重复元素II

文章目录 删除排序链表中的重复元素我的思路解法一:循环解法二:递归 网上思路 删除排序链表中的重复元素 II我的思路网上思路 总结 删除排序链表中的重复元素 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 图一 图二 示例 1:(图一)输入:head = [1,1,2]输出:[1,2]示例 2:(图

开发板NFS挂载文件目录

文章目录 序NFS1. 安装 NFS 服务器和客户端在服务器上(NFS 服务器端)在客户端上(NFS 客户端) 2. 配置 NFS 服务器创建共享目录编辑 `/etc/exports` 文件启动 NFS 服务 3. 在客户端挂载 NFS 共享创建挂载点挂载 NFS 共享验证挂载 4. 设置开机自动挂载5. 解决权限问题 序 本节主要实现虚拟机(服务器)与开发板(客户端)通过N

perl的学习记录——仿真regression

1 记录的背景 之前只知道有这个强大语言的存在,但一直侥幸自己应该不会用到它,所以一直没有开始学习。然而人生这么长,怎就确定自己不会用到呢? 这次要搭建一个可以自动跑完所有case并且打印每个case的pass信息到指定的文件中。从而减轻手动跑仿真,手动查看log信息的重复无效低质量的操作。下面简单记录下自己的思路并贴出自己的代码,方便自己以后使用和修正。 2 思路整理 作为一个IC d

SSM项目使用AOP技术进行日志记录

本步骤只记录完成切面所需的必要代码 本人开发中遇到的问题: 切面一直切不进去,最后发现需要在springMVC的核心配置文件中中开启注解驱动才可以,只在spring的核心配置文件中开启是不会在web项目中生效的。 之后按照下面的代码进行配置,然后前端在访问controller层中的路径时即可观察到日志已经被正常记录到数据库,代码中有部分注释,看不懂的可以参照注释。接下来进入正题 1、导入m

flume系列之:记录一次flume agent进程被异常oom kill -9的原因定位

flume系列之:记录一次flume agent进程被异常oom kill -9的原因定位 一、背景二、定位问题三、解决方法 一、背景 flume系列之:定位flume没有关闭某个时间点生成的tmp文件的原因,并制定解决方案在博主上面这篇文章的基础上,在机器内存、cpu资源、flume agent资源都足够的情况下,flume agent又出现了tmp文件无法关闭的情况 二、

Linux常用工具与命令日常记录(长期更新)

Linux常用工具与命令日常记录(长期更新) 目录 1.本地复制到远程2.Linux压缩拆包与解压3.生成随机密码4.ubuntu默认Python版本设置5.计算当前文件夹中文件数量6.windows中编写shell脚本,在Linux运行出错7.history 历史命令显示时间用户8.Ubuntu18.04设置源、网卡9.Ubuntu18.04设置网卡10.Ubuntu:自定义开

Excel和Word日常使用记录:

Excel使用总结 表格颜色填充: 合并单元格: 选中你要合并的单元格区域。按下快捷键 Alt + H,然后松开这些键。再按下 M,接着按 C。这个组合键执行的操作是:Alt + H:打开“主页”选项卡。M:选择“合并单元格”选项。C:执行“合并并居中”操作。 插入行: 在Excel中,插入一行的快捷键是:Windows:选择整行(可以点击行号)。按下 Ctrl + Sh

野火霸天虎V2学习记录

文章目录 嵌入式开发常识汇总1、嵌入式Linux和stm32之间的区别和联系2、stm32程序下载方式3、Keil5安装芯片包4、芯片封装种类5、STM32命名6、数据手册和参考手册7、什么是寄存器、寄存器映射和内存映射8、芯片引脚顺序9、stm32芯片里有什么10、存储器空间的划分11、如何理解寄存器说明12、如何操作寄存器的某一位 STM32F407芯片学习1、stm32单片机启动流程s