米尔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开发板测评记录
文章目录 1、板子上手体验2、板载硬件3、系统信息4、 驱动测试5、编译linux三大件7、摄像头测试9、总结 1、板子上手体验 首先非常感谢芯查查给了这样一个机会来测评这样一款性能十分强大的开发板,我拿到手的是MYC-Y6ULX-V2核心板及开发板,这块板子具有…...
装修全流程
Summary 从2023年底到现在(2024年6月2日),装修可以定的东西基本过半了,我按照时间顺序把每个环节的内容和想法都记录一下 环节 选装修公司、找设计师设计环节预算计算角色介绍建材选型敲墙和开工水电放样泥工木工放样To be cont…...

探索微软Edge
微软开发的官方浏览器 Microsoft Edge是微软基于 Chromium 开源项目及其他开源软件开发的网页浏览器。 2015年4月30日,微软在旧金山举行的Build 2015开发者大会上宣布——Windows 10内置代号为“Project Spartan”的新浏览器被正式命名为“Microsoft Edge”&#x…...

Java面试——专业技能
优质博文:IT-BLOG-CN 一、简单讲下 Java 的跨平台原理 由于各个操作系统(Windows,Linux等)支持的指令集不是完全一致的。就会让我们程序在不同的操作系统上要执行不同的程序代码。Java 开发了适用于不同操作系统及位数的 Java 虚拟…...
C#按钮样式设置XMAL
统一按钮样式 <Window.Resources> <!--按钮样式统一设置,个别按钮单独定义样式的话则需要在定义按钮位置单独设置--><Style TargetType"Button"><Setter Property"Background" Value"Red"/><Setter Prop…...
EmmyLua注释详解
Lua EmmyLua 注解详解 Why 为了使 IDE 编码体验和强语言相近 让 IDE 提前发现编码错误 BUG 查找更方便 代码阅读更方便 建议 明确字段类型 明确字段访问修饰符 明确方法参数类型 善用 “:” 继承 “|” 或 ","多个 支持格式 –类 —class MY_TYPE[:PARENT_TYPE] [com…...
Linux内核 -- 启用 Linux 内核调试信息
启用 Linux 内核调试信息 本文档提供了如何在编译 Linux 内核时启用调试信息的逐步指南。调试信息对于调试和诊断内核问题至关重要。 启用调试信息的步骤 1. 进入内核源代码目录 打开终端并导航到 Linux 内核源代码目录: cd /path/to/linux-kernel2. 配置内核 …...

vs2019 无法打开QT的UI文件
/* * --------------------------- Microsoft Visual StudioQt5.15.2\5.15.2\msvc2019_64 --------------------------- D:\QT_Project_vs\QtWidgetsApplication1\QtWidgetsApplication1\QtWidgetsApplication1.ui 无法打开文件。 --------------------------- 确定 -------…...
Python | A + B问题|||
if语句:if、elif、else 关系运算符 逻辑运算符:and(&&)、or(||)、not(!) break退出循环 continue:只能出现在for、while循环内部,用法…...

JRT连接希森美康出图
良好的设计源自实践,优秀的基础决定上限 上一篇用JRT连设备实现了比较有难度的Sebia绘图设备和TCP模式连接。这次连接最常见的检验设备(西森美康),读文件和图上传出图。 视频演示 结果格式 通道对应 接口设置 接口处理实现…...

UVa11604 General Sultan
UVa11604 General Sultan 题目链接题意分析AC 代码 题目链接 UVA - 11604 General Sultan 题意 给出一些0和1组成的模式串,问是否存在一个串使得有多种方案将这个串分解成模式串。 给一个包含n(n≤100)个符号的二进制编码方式ÿ…...
USB - ACK、NAK和STALL的含义
在 USB(通用串行总线)通信中,术语 ACK、NAK 和 STALL 指的是用于控制数据流和错误处理的握手数据包。下面是对每个术语的详细解释: ACK(确认): ACK 数据包由接收方发送给发送方,以表…...
查看 WSL2 (Windows Subsystem for Linux 2) IP 地址
查看 WSL2 [Windows Subsystem for Linux 2] IP 地址 1. ipconfig2. ping $(hostname).local3. cat /etc/resolv.conf4. ip route show5. ip addrReferences 1. ipconfig Windows 系统上与 WSL2 (Windows Subsystem for Linux 2) 接口的地址 172.31.32.1。 Microsoft Windows…...
如何判断一个JavaScript对象是否为空?
在JavaScript的世界里,"空对象"这一术语的含义在不断演变。随着ECMA Script的更新和改进,判断一个对象是否为空变得更加复杂。本文将详细介绍如何判断一个JavaScript对象是否为空,并讨论各种解决方案的优缺点。 历史背景 在理解如何判断一个对象是否为空之前,我…...

小白跟做江科大32单片机之LED闪烁
原理介绍 原理介绍详见: 【STM32】江科大STM32学习笔记汇总(已完结)_stm32江科大笔记-CSDN博客https://blog.csdn.net/u010249597/article/details/134762513 项目准备 1.在项目文件夹中新建3-1 LED文件夹 2.keil新建项目,打开新建的3-1 LED…...

“世界酒中国菜”系列活动如何助推乡村振兴和文化交流?
"世界酒中国菜"系列活动如何助推乡村振兴和文化交流? 《经济参考报》(2024年5月24日 第6版) 新华社北京(记者 张晓明) “世界酒中国菜”系列活动自启动以来,已在国内外产生了广泛影响。这一国家…...

上位机图像处理和嵌入式模块部署(f407 mcu中fatfs中间件使用)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们已经实现了spi norflash的驱动,理论上这已经可以实现数据的持久化保存了。为什么还需要一个文件系统呢?主要原因还…...

LeetCode/NowCoder-栈和队列OJ练习
孜孜不倦:孜孜:勤勉,不懈怠。指工作或学习勤奋不知疲倦。💓💓💓 目录 说在前面 题目一:括号匹配问题 题目二:用队列实现栈 题目三:用栈实现队列 题目四:设…...
VSCODE终端输出中文乱码 菱形问号?
问题现象 VSCODE终端输出中文乱码 菱形问号? 解决方法 方法一 设置系统环境变量 变量名:PYTHONIOENCODING 值:utf8 方法二 安装插件Code Runner插件在设置中搜索 code-runner.executorMap,再点击在setting.json中编辑&#x…...
域名绑定ip和端口的方法是什么?
在互联网世界中,域名绑定IP和端口是实现网站精准访问的关键步骤。域名是用户访问网站的直观标识,而IP地址和端口号则指明了服务器的具体位置和通信接口。本文将详细介绍域名绑定IP和端口的过程。 域名与IP地址的关系 域名是互联网上网站的人类可读地址…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...