米尔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地址的关系 域名是互联网上网站的人类可读地址…...

视频监控平台AS1000:通过网络SDK接入松下视频监控设备(Panasonic监控摄像机) 的源代码的函数和功能介绍及分享
目录 一、视频监控平台介绍 1、概述 2、视频接入能力介绍 3、功能介绍 二、PANASONIC网络摄像机 1、产品种类与定位 2、规格参数 3、功能特点 4、环境适应性 5、网络功能 6、其他特性 三、代码和解释 1、代码和注释 2、函数功能说明 (1)处…...

GitLab项目中添加用户,并设置其角色权限等
注意:创建用户(new user),创建完用户然后再项目邀请用户,选择创建过的用户 一、以管理员身份登录GitLab的WebUI并创建用户 1>.使用管理员登录GitLab 使用管理员(root)用户登录成功后,点击如下图所示的小扳手,点击…...

asio之winsock的初始化
简介 asio中,winsock初始化工作是放在winsock_init类中来处理的 类结构 #mermaid-svg-aC4x3cdr8TKGhsnX {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-aC4x3cdr8TKGhsnX .error-icon{fill:#552222;}#…...

打造智能化未来:智能运维系统架构解析与应用实践
在数字化转型的大背景下,智能运维系统成为了企业提升效率、降低成本、增强安全性的关键利器。本文将深入探讨智能运维系统的技术架构,介绍其核心要素和应用实践,帮助读者全面了解智能运维系统的概念、优势和应用价值。 ### 1. 智能运维系统的…...

【GeoServer系列】——安装与发布shapefile数据
GeoServer是一个基于java的服务器,它允许用户查看和编辑地理空间数据。使用OGC制定的开放标准,GeoServer在地图创建和数据共享方面具有极大的灵活性。 功能概述: Open and Share Your Spatial Data GeoServer允许您向世界显示您的空间信息。G…...

Rust 第三方库创建和导入(cargo --lib)
前言 日常开发过程中,难免会有一些工具方法,多个项目之间可能会重复使用。 所以将这些方法集成到一个第三方包中方便后期维护和管理, 比如工具函数如果需要修改,多个项目可能每个都需要改代码, 抽离到单独的包中只需要…...

node-sass和sass-loader安装Error经验
一、问题 当前笔记本环境版本:node-v16.15.1;npm-8.11.0,在面对五年前vue项目的依赖sass-loader8.0.2,node-sass4.14.1的情况下,怎么参考大神们的安装教程,始终存在Error,经过坚持不懈的努力&a…...

LabVIEW车体静强度试验台测控系统
LabVIEW车体静强度试验台测控系统 开发了一种基于LabVIEW的车体静强度试验台测控系统,通过自动化技术提高试验的精度和效率。系统采用LabVIEW软件与S7-200 SMART PLC硬件平台相结合,实现了对液压缸作用力的精确控制和试验数据的实时采集及管理。 传统的…...

软件测试进阶
目录 一、自动化测试 1.概念 2.Selenium 2.1 概念 2.1.1 Selenium是什么? 2.1.2 Selenium特点 2.1.3 工作原理 2.2 SeleniumJava环境搭配 2.3 定位元素 2.3.1 CSS语法 2.3.2 XPath语法 2.4 应用 2.4.1 点击提交文本 2.4.2 模拟输入 2.4.3 清除文本 2…...

将字符串 “()“ ““ “|“ 条件组成的复杂表达式转换为ES查询语句
应用场景 "()" "&" "|" 这几个条件对于我们来说并不陌生, 其表达的逻辑非常明了, 又能通过很少的字符表达很复杂的嵌套关系, 在一些复杂的查询中会经常用到, 因此我最近也遇到了类似的问题,一开始觉得这类的工具应该挺常见的, 结果搜了半天…...