米尔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-yocto
 tar -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了,非常给力,让我学到了很多东西。厂家的文档是十分详细,非常适合入门学习,给深入学习也留足的空间,真想多拥有一段时间啊。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/672739.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SSMP整合案例第六步 在前端页面上利用axios和element-ui与后端交互实现增删改

新增操作 正常我们都是从新增功能书写 查看源码 显示的是这个 在vue里面开下来 这样就能显示 点击确定 就能把数据发送到后台进行保存 //弹出添加窗口handleCreate() {this.dialogFormVisible true;},//重置表单resetForm() {},//添加handleAdd() {//绑定的是确定按钮 发起请…

IDM优势

目录 &#x1f40b;引言 &#x1f40b;IDM的核心优势 &#x1f988;下载速度提升 &#x1f41f;技术原理&#xff1a; &#x1f41f;对比示例&#xff1a; &#x1f988;断点续传 &#x1f41f;技术原理&#xff1a; &#x1f41f;对比示例&#xff1a; &#x1f988;集…

牛客热题:缺失的第一个正整数

牛客热题&#xff1a;数组中出现一次的两个数字> &#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;力扣刷题日记 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 文章目录 …

如何使用golang自带工具对代码进行覆盖率测试

在 Go 语言中&#xff0c;测试代码覆盖率通常使用 go test 命令结合 -cover 和 -coverprofile 1. 基本代码覆盖率报告 在项目目录下运行以下命令 go test -cover这将在控制台输出一个代码覆盖率的百分比。但是&#xff0c;这种方式不会保存覆盖率数据&#xff08;可以指定目…

961操作系统知识总结

部分图片可能无法显示&#xff0c;参考这里&#xff1a;https://zhuanlan.zhihu.com/p/701247894 961操作系统知识总结 一 操作系统概述 1. 操作系统的基本概念 重要操作系统类型&#xff1a;批处理操作系统(批量处理作业&#xff0c;单道批处理/多道批处理系统&#xff0c;用…

将 py 文件编译成 pyd 文件

文章目录 一、简介1.1、Python中的文件类型&#xff1a;.py .pyc .pyd1.2、基本原理1.2.1、函数详解&#xff1a;Extension() —— 用于定义扩展模块&#xff08;C/C 扩展&#xff09;的类1.2.2、函数详解&#xff1a;setup() —— 用于配置和构建包的函数 二、构建过程2.0、…

带交互的卡尔曼滤滤波|一维滤波|源代码

背景 一维卡尔曼滤波的MATLAB例程&#xff0c;​背景为温度估计。 代码介绍 运行程序后&#xff0c;可以自己输入温度真实值&#xff1a; 以20℃为例&#xff0c;得到如下的估计值​&#xff1a; 滤波前的值和滤波后的值分别于期望值&#xff08;真实值&#xff09;作差…

海光CPU:国产信创的“芯“动力解读

国产信创CPU-海光CPU CPU&#xff1a;信创根基&#xff0c;国之重器 国产CPU形成三大阵营&#xff1a;自主架构、x86及ARM。自主阵营中&#xff0c;龙芯和申威以LoongArch和SW-64为基石&#xff1b;ARM阵营由鲲鹏、飞腾主导&#xff0c;依托ARM授权研发处理器&#xff1b;x86阵…

Python知识点17---包

提前说一点&#xff1a;如果你是专注于Python开发&#xff0c;那么本系列知识点只是带你入个门再详细的开发点就要去看其他资料了&#xff0c;而如果你和作者一样只是操作其他技术的Python API那就足够了。 Python的包&#xff0c;你可以把它看成是一个大的模块&#xff0c;它…

【Java】javafx界面布局

目录 一、面板类 &#xff08;1&#xff09;Pane面板 &#xff08;2&#xff09;HBox面板 &#xff08;3&#xff09;VBox面板 &#xff08;4&#xff09;BorderPane面板 &#xff08;5&#xff09;FlowPane面板 (6)GridPane面板 &#xff08;7&#xff09;StackPane面…

生命在于学习——Python人工智能原理(3.1)

三、深度学习 &#xff08;一&#xff09;深度学习的概念 1、深度学习的来源 深度学习的概念来源于人工神经网络&#xff0c;所以又称深度神经网络。 人工神经网络主要使用计算机的计算单元和存储单元模拟人类大脑神经系统中大量的神经细胞&#xff08;神经元&#xff09;通关…

【精读文献】J. Environ. Manage.|青藏高原生态恢复项目下植被覆盖动态及其对生态系统服务的约束效应

目录 文章简介 01 文章摘要 02 研究背景、目标及创新点 2.1 研究背景 2.2 研究现状 03 研究区域与数据集 3.1 研究区域 3.2 研究数据 04 研究方法 4.1 趋势分析 4.2 残差趋势分析 4.3 偏相关 4.4 生态系统服务评价 4.5 约束线的定义和提取 05 研究结果 5.1 植被…

重学java 55. 集合 Set接口

我救自己万万次&#xff0c;铮铮劲草&#xff0c;绝不动摇 —— 24.6.2 一、Set集合介绍 Set和Map密切相关的 Map的遍历需要先变成单列集合&#xff0c;只能变成set集合 二、HashSet集合的介绍和使用 1.概述 HashSet是Set接口的实现类 2.特点 a、元素唯一 b、元素无序 c、无索引…

单元测试的心法分享

大家好&#xff0c;我是G探险者&#xff01; 今天我们简单聊聊单元测试的哪些事儿~ 两天时间我玩明白了单元测试的套路。 这里我分享一下思路。 在我眼里单元测试室什么&#xff1f; 请看这张草图&#xff1a; 单元测试主要关注单个代码单元&#xff08;通常是类或方法&am…

云原生架构案例分析_2.云原生技术助力某汽车公司数字化转型实践

名词解释&#xff1a; 互联网 在“互联网”模式下&#xff0c;我们仅仅把互联网看作是一种传播工具、传播手段、传播渠道和传播平台&#xff0c;对于互联网的应用大体上是在既有的运作逻辑的基础之上&#xff0c;把互联网作为延伸传媒影响力、价值和功能的一种延伸型工具&…

秒杀基本功能开发(不考虑高并发情况)

文章目录 1.显示秒杀状态1.controller修改GoodsController.java的toDetail方法&#xff0c;响应秒杀状态和秒杀剩余时间 2.前端1.goodsDetail.html 图片下面添加一行秒杀开始时间2.goodsDetail.html 添加计时器js代码 3.测试1.秒杀进行中2.修改db的秒杀开始时间为明天3.出现秒杀…

msvcr120.dll是干嘛的?出现找不到msvcr120.dll丢失怎样解决

msvcr120.dll是Microsoft Visual C 2012 Redistributable的核心文件&#xff0c;它是Microsoft Corporation开发的C/C运行时库文件之一。这个文件通常与应用程序一起安装&#xff0c;为应用程序提供许多基本的运行时功能&#xff0c;包括内存管理、异常处理、输入/输出操作等。…

Jenkins、GitLab部署项目

1、安装JDK 1.1、下载openJdk11 yum -y install fontconfig java-11-openjdk1.2、查看安装的版本号 java -version1.3、配置环境变量 vim /etc/profile在最底部添加即可 export JAVA_HOME/usr/lib/jvm/java-11-openjdk-11.0.23.0.9-2.el7_9.x86_64 export PATH$JAVA_HOME/…

SpringBoot注解--10--@Bean,对象注入的三种方法

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Bean一、如何使用方法注解注意Bean 的命名规则&#xff0c;当没有设置 name 属性时&#xff0c;那么 bean 默认的名称就是方法名&#xff0c;当设置了 name 属性之后…

【OJ】C++ | 二叉树进阶 · 合集(2)

摘要&#xff1a;根据二叉树创建字符串、二叉树的最近公共祖先、二叉树的层序遍历 前言&#xff1a;承接上文&#xff0c;本文继续提供二叉树进阶有关题目的解法。如有错误&#xff0c;烦请指正。 目录 1. 根据二叉树创建字符串 题解及代码 2. 二叉树的最近公共祖先 题解及…