米尔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

相关文章

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Spring Boot中定时任务Cron表达式的终极指南最佳实践记录

《SpringBoot中定时任务Cron表达式的终极指南最佳实践记录》本文详细介绍了SpringBoot中定时任务的实现方法,特别是Cron表达式的使用技巧和高级用法,从基础语法到复杂场景,从快速启... 目录一、Cron表达式基础1.1 Cron表达式结构1.2 核心语法规则二、Spring Boot中定

QT移植到RK3568开发板的方法步骤

《QT移植到RK3568开发板的方法步骤》本文主要介绍了QT移植到RK3568开发板的方法步骤,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录前言一、获取SDK1. 安装依赖2. 获取SDK资源包3. SDK工程目录介绍4. 获取补丁包二

国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)

《国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)》本文给大家利用deepseek模型搭建私有知识问答库的详细步骤和遇到的问题及解决办法,感兴趣的朋友一起看看吧... 目录1. 第1步大家在安装完ollama后,需要到系统环境变量中添加两个变量2. 第3步 “在cmd中

Spring Retry 实现乐观锁重试实践记录

《SpringRetry实现乐观锁重试实践记录》本文介绍了在秒杀商品SKU表中使用乐观锁和MybatisPlus配置乐观锁的方法,并分析了测试环境和生产环境的隔离级别对乐观锁的影响,通过简单验证,... 目录一、场景分析 二、简单验证 2.1、可重复读 2.2、读已提交 三、最佳实践 3.1、配置重试模板

在 Spring Boot 中使用异步线程时的 HttpServletRequest 复用问题记录

《在SpringBoot中使用异步线程时的HttpServletRequest复用问题记录》文章讨论了在SpringBoot中使用异步线程时,由于HttpServletRequest复用导致... 目录一、问题描述:异步线程操作导致请求复用时 Cookie 解析失败1. 场景背景2. 问题根源二、问题详细分