0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

米尔MYS-8MMX开发板试用体验测评——donatello1996

米尔电子 2021-09-03 18:45 次阅读
4566305c-0c7e-11ec-abed-000c2944909e.png

米尔MYS-8MMX开发板试用体验测评

近期,米尔科技重磅发布新品“MYS-8MMX”开发板,并在电子发烧友、电路城等各大论坛发布试用通知,受到了众多工程师、广大电子爱好者围观,米尔选取了电子发烧友平台一篇优秀试用报告,在此同步给各位小伙伴们。由于篇幅原因:该文章中使用libjpeg库和giflib库显示JPG图片和GIF图片 该测评不一一展示了,想了解具体内容可以复制该链接查看:https://bbs.elecfans.com/jishu_2154638_1_1.html

PART.1

开箱上电&系统烧录&文件系统移植&WIFI模块驱动加载

米尔MYS-8MMX开发板支持两种系统启动方式,两种烧录方式,两种系统启动方式为SD卡启动或板上EMMC启动,两种烧录方式为卡刷和线刷,其中卡刷又分为SD卡启动和SD卡烧写EMMC,SD卡启动是开发者常用系统启动模式,因为可以随时在远端主机上对SD卡文件进行增删查改;而产品项目中则常用SD卡烧写EMMC的方式,因为操作简单,反馈清晰(只需要一盏LED灯即可监控烧录是否完成)。实际上,SD卡启动还有一种用途就是可以在SD卡的系统中对EMMC内容进行修改,因此是最适合开发者的模式。若无特别说明,本次帖子及今后帖子我都在SD卡的系统中进行开发。要制作SD启动卡,需要按照使用手册获取SD卡启动镜像,名为myir-image-full-mys-8mmx.wic,与手册所写myir-image-full-mys-8mmx.sdcard不符:45d739f4-0c7e-11ec-b8ae-000c2944909e.png 使用Win32DiskImager或别的烧录工具进行烧录即可。烧录完毕后,SD卡会分为三个部分,最前面8MB为预留空间不做分区,中间89MB为FAT分区存放BOOT.bin/内核文件/设备树dtb文件,后面的EXT分区,其中后面的EXT分区为开发者可以自由操作的分区,可对此分区进行分割,合并,扩容,删除等,一般有基础的开发者会将该分区的厂家出厂文件系统做备份然后删除,扩容并替换为自己的文件系统分区,文件系统发行版为Ubuntu/Debian/Centos/Redhat/ARMbian等,根据个人喜好而定,这么做的好处是,不影响内核驱动开发的版本兼容问题,并且能按照个人意愿自选安装各种第三方软件,如桌面运行扩展,x11扩展,网络扩展等,而我为了方便使用apt插件安装各种软件,选择的文件系统发行版依然为之前一直沿用的Debian 10 for arm64,45f72db6-0c7e-11ec-a051-000c2944909e.png 该文件系统发行版可用在所有arm64架构开发板上:搭建文件系统的帖子我之前发表过,可参考此帖:https://bbs.elecfans.com/jishu_2030659_1_1.html替换完毕后,启动系统,查看CPU信息和运行内存信息:4617bd30-0c7e-11ec-b1c2-000c2944909e.png 462c53cc-0c7e-11ec-83e3-000c2944909e.png CPU为IMX8mini,四核A53,内存2GB。替换文件系统后,需要移植/lib/modules内核驱动目录,以便开机时由内核文件正确加载各个ko文件:46497024-0c7e-11ec-88ce-000c2944909e.png 正确加载/usr/lib/modules/5.4.3-2.0.0+gbed0791/kernel/drivers/net/wireless/bcmdhd/bcmdhd.ko文件后,板载WIFI模块便可正常使用:46575dde-0c7e-11ec-931e-000c2944909e.png 1.ifconfig wlan02.nmcli dev wifi466d684a-0c7e-11ec-980e-000c2944909e.png 

PART.2

QT开发板本地开发framebuffer&x11vnc的妙用

安装QT开发环境,即QT creator和QT5软件库:1.apt install qt5-default qtcreator安装x11界面远程登录软件x11vnc1.apt install x11vnc在进行QT开发之前,我先用vnc工具实时映射板子HDMI输出的界面,即/dev/fb0:1.x11vnc -rawfb /dev/fb0 -clip 1920x108046894330-0c7e-11ec-a9fe-000c2944909e.png 46a527fa-0c7e-11ec-ab66-000c2944909e.png 至于启动QT环境开发的方式有两种,第一种是使用SSH远程代码调试软件如VSCodeSourceInsight等,通过SSH方式登录到板子上,另外一种方法则是直接在板子的MobaXterm SSH终端启动QT creator4700b1e4-0c7e-11ec-9109-000c2944909e.png 我个人倾向于两种方式结合使用,在不同的开发场合下使用不同方式。QT creator默认配置编译环境gcc471c5590-0c7e-11ec-8e1c-000c2944909e.pngQT下操作framebuffer外设显示一行文字:1.void MainWindow::LCD_Show_ASCII_64(uint32_t x,uint32_t y,uint32_t fontcolor,uint32_t backcolor,char word)2.{3. int i,j,k;4. unsigned char temp;5. word -= 0x20;6. for(j=0;j<64;j++)7. {8. for(i=0;i<4;i++)9. {10. temp = ascii_font_64[j*4+i+word*256];11. for(k=0;k<8;k++)12. {13. IF(temp & 0x80)14. framebuffer_lcd[i*8+k+x+LCD_WIDTH*(j+y)] = fontcolor;15. else16. framebuffer_lcd[i*8+k+x+LCD_WIDTH*(j+y)] = backcolor;17. temp<<=1;18. }19. }20. }21.}22.23.void MainWindow::LCD_Show_ASCII_String_64(uint32_t x,uint32_t y,uint32_t wordcolor,uint32_t backcolor,char s[])24.{25. int i=0;26. for(i=0;s[i]!='\0';i++)27. LCD_Show_ASCII_64(x+i*32,y,wordcolor,backcolor,s[i]);28.}29.30.int MainWindow::LCD_Effect(char *dev)31.{32. int fd_lcd = open(dev , O_RDWR);33. if(fd_lcd == -1)34. {35. qdebug("open LCD faiLED!");36. return -1;37. }38. write(fd_lcd , framebuffer_lcd , LCD_WIDTH * LCD_HEIGHT * 4);39. ::close(fd_lcd);40. return 0;41.}可以看出,在QT下操作文件字符设备与普通系统编程并没有明显区别,唯一不同的是,QT下使用文件关闭函数需要添加双冒号::close(),防止与QT自带的close()函数产生冲突。在mainwindow类任意位置打开/dev/fb0外设后,即可进行ASCII码符号的显示:1. LCD_Show_ASCII_String_64(0 , 0 , 0 , LCD_COLOR_CYAN_32 , (char *)"elecfans.com");2. LCD_Show_ASCII_String_64(0 , 64 , 0 , LCD_COLOR_CYAN_32 , (char *)"donatello1996");3. LCD_Effect((char*)FB_DEV);非常简单愉快就玩成了,看看x11vnc远程终端显示效果,这也就是HDMI实际显示是输出内容:4732c1c8-0c7e-11ec-8028-000c2944909e.png 当然了,如果不设置环境变量QT_QPA_PLATFORM的话,x11终端下启动的x11应用就会在远程机器上直接显示(远程机器就是我的电脑):474c877a-0c7e-11ec-a414-000c2944909e.png 设置QT_QPA_PLATFORM之后,可以将启动界面映射到任意framebuffer外设上:1.export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0475fbfbe-0c7e-11ec-8028-000c2944909e.png 

PART.3

编译内核镜像&USBHID设备通信

如果想用一种简单的方式控制更多外设的话,除了添加扩展芯片,还有一种项目上用得比较多的方式是USBHID通信,将开发板作为主机,通过USB接口与支持USBHID协议的从机进行通信,这个方法非常简单,刚入门嵌入式的小白也必须熟练掌握,只需要应用层开发的知识和皮毛的驱动层开发知识。要想使用这种方式进行通信,板子的内核镜像就必须支持USBHID设备的检测与读写,检测是没什么问题的,但是能不能映射到设备文件,供开发者进行读写操作,那就需要检查内核编译选项了,这里刚好是比较坏的一种情况,米尔厂家出厂镜像是没有打开USBHID通信的,必须让开发者重新编译内核镜像,那么这里就涉及到内核编译的知识了:下载并解压内核源码镜像:1.https://github.com/MYiR-Dev/myir-imx-uboot.git4773cada-0c7e-11ec-ad3f-000c2944909e.png 编译选项采用米尔MYS-8MMX开发板的编译选项mys_iot_defconfig1./home/myir-imx-linux-develop/arch/ARM64/configs/2.make mys_iot_defconfig4787ca46-0c7e-11ec-b276-000c2944909e.png 这边还需要注意的是内核镜像的版本与使用内核源码编译第三方驱动ko文件的版本必须相同,在内核源码一级目录处可以找到配置的位置:479a67a2-0c7e-11ec-b086-000c2944909e.png 47ab2e14-0c7e-11ec-a390-000c2944909e.png 使用menuconfig打开内核编译选项, Device Drivers > HID support/dev/hidraw raw HID device support选项要打开,或者是在配置文件中添加此项配置的环境变量:47dbd6d2-0c7e-11ec-beb5-000c2944909e.png 47f89412-0c7e-11ec-a52c-000c2944909e.png 配置完毕之后,替换Image内核文件覆盖出厂内核文件:1.mount /dev/mmcblk1p1 /media2.mmcblk1是开发板的SD卡,mmcblk1p1SD卡的FAT分区,存放内核文件的位置:4815fc5c-0c7e-11ec-b666-000c2944909e.png 重新启动之后,将USBHID设备插到板子的USB接口:4830b982-0c7e-11ec-b3a8-000c2944909e.png /dev目录下找到/dev/hidraw设备:安装-ludev软件库:485ece24-0c7e-11ec-929e-000c2944909e.png 1.apt install udev使用代码读写HID设备:1.handle = hid_open(2020, 2020, NULL);2.res = hid_read(handle, buf, sizeof(buf));4f1004fa-0c7e-11ec-8520-000c2944909e.png 

PART.4

使用libjpeg库和giflib库显示JPG图片和GIF图片

Linux系统编程中对JPG和GIF图片的显示都有集成的软件库可以用,显示JPG图片可用libjpeg库,可以直接用apt在线安装apt install libjpeg62-turbo libjpeg62-turbo-dev对于ARM64架构的系统,会有turbo关键字,而在x86架构系统上面,直接安装libjpeg62即可。安装完毕之后,开发板的板上代码可以使用jpeglib.h提供的函数接口进行jpg文件的软件解码,直接读取jpg文件并显示在framebuffer外设之上,具体函数如下:-struct jpeg_decompress_struct cinfo;用于存放JPG文件解码数据的结构体-JSAMPARRAY buffer;存放一行图像数据的结构体-jpeg_create_decompress(&cinfo);初始化jpeg_decompress结构体对象的函数-jpeg_stdio_src(&cinfo,input_file);-指定解压缩数据源1.void LCD_RGB888_Show_JPG_File(char *dev , int xpos , int ypos , char *filename)2.{3. //int fjpg;4. int i,j;5. FILE *input_file = fopen(filename,"rb");6. struct jpeg_decompress_struct cinfo;7. //JPEG图像在解码过程中8. //使用jpeg_decompress_struct类型的结构体来表示9. //图像的所有信息都存储在结构体中10.11. struct jpeg_error_mgr jerr;12. //定义一个标准的错误结构体13.14. JSAMPARRAY buffer;15. //用于存取一行数据16. //fjpg = open((char *)"/home/fa/1.jpg",O_RDONLY);17. cinfo.err = jpeg_std_error(&jerr);18. //绑定错误处理结构对象19.20. jpeg_create_decompress(&cinfo);21. //初始化cinfo结构22.23. jpeg_stdio_src(&cinfo,input_file);24. //指定解压缩数据源25.26. jpeg_read_header(&cinfo,TRUE);27. //获取文件信息28.29. jpeg_start_decompress(&cinfo);30. //开始解压缩31.32. int width = cinfo.output_width;33. //图像宽度34. int height = cinfo.output_height;35. //图像高度36. int depth = cinfo.output_components;37. //图像深度38. uint8_t img_byte = cinfo.jpeg_color_space;39. //像素字节数(1/2/3/4个字节,对应8/16/24/32位格式)40.41. memset(bmp_buf , 0 , sizeof(unsigned char) * width * height * depth);42.43. buffer = (*cinfo.mem->alloc_sarray)((j_common_ptr)&cinfo,JPOOL_IMAGE , width * depth , 1);44. //分配一行数据空间45. point = bmp_buf;46. while(cinfo.output_scanline < height)//逐行读取位图数据47. {48. jpeg_read_scanlines(&cinfo , buffer , 1);49. //读取一行jpg图像数据到buffer50. memcpy(point , *buffer , width * depth);51. //将buffer中的数据逐行给src_buff52. point += width * img_byte;53. //指针偏移一行54. }55.56. jpeg_finish_decompress(&cinfo);//解压缩完毕57.58.59. for(i = 0 ; i < LCD_HEIGHT ; i ++)60. {61. for(j = 0 ; j < LCD_WIDTH ; j ++)62. if(i <= height && j <= width)63. {64. uint32_t temp = bmp_buf[(i * width+j) * 3] << 16 |65. bmp_buf[(i * width+j) * 3 + 1] << 8 |66. bmp_buf[(i * width+j) * 3 + 2];67. framebuffer_lcd[(i+ypos)*(LCD_WIDTH)+j+xpos] = temp;68.69. }70. //else framebuffer_lcd[(i+ypos)*(LCD_WIDTH)+j+xpos]=0;71. }72. int fd_lcd = open(dev , O_RDWR);73. write(fd_lcd , framebuffer_lcd , LCD_WIDTH * LCD_HEIGHT * 2);74. close(fd_lcd);}53475266-0c7e-11ec-bf8d-000c2944909e.png米尔电子嵌入式解决方案专家“米尔MYiR”公众号不定期分享产品资料及干货第一时间发布米尔最新资讯

原文标题:米尔MYS-8MMX开发板试用体验测评——donatello1996

文章出处:【微信公众号:米尔MYiR】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 测评
    +关注

    关注

    0

    文章

    42

    浏览量

    3075
收藏 人收藏

    评论

    相关推荐

    新品7折购!米尔RK3568国产开发板

    近日,米尔电子发布MYC-LR3568核心开发板,核心基于高性能、低功耗的国产芯片-瑞芯微RK3568。核心采用LGA创新设计,可实
    的头像 发表于 08-02 08:01 292次阅读
    新品7折购!<b class='flag-5'>米尔</b>RK3568国产<b class='flag-5'>开发板</b>

    米尔基于NXP iMX.93开发板的M33处理器应用开发笔记

    资源MYD-LMX9X开发板米尔基于NXPiMX.93开发板)3.软件资源Windows7及以上版本软件:IAREmbeddedWorkbench4.板载固件调试
    的头像 发表于 06-29 08:01 1005次阅读
    <b class='flag-5'>米尔</b>基于NXP iMX.93<b class='flag-5'>开发板</b>的M33处理器应用<b class='flag-5'>开发</b>笔记

    点击参与米尔NXP i.MX 93开发板有奖试用

    米尔与NXP合作发布的新品基于NXPi.MX93应用处理器的MYD-LMX9X开发板免费试用活动来啦~~米尔提供了3块价值678元的MYD-LMX9X
    的头像 发表于 06-13 08:02 282次阅读
    点击参与<b class='flag-5'>米尔</b>NXP i.MX 93<b class='flag-5'>开发板</b>有奖<b class='flag-5'>试用</b>

    米尔NXP i.MX 93开发板的Qt开发指南

    1.概述Qt是一个跨平台的图形应用开发框架,被应用在不同尺寸设备和平台上,同时提供不同版权版本供用户选择。米尔NXPi.MX93开发板(MYD-LMX9X开发板)使用Qt6.5版本进行
    的头像 发表于 06-07 08:01 1446次阅读
    <b class='flag-5'>米尔</b>NXP i.MX 93<b class='flag-5'>开发板</b>的Qt<b class='flag-5'>开发</b>指南

    免费!NXP i.MX 93开发板有奖试用

    米尔与NXP合作发布的新品基于NXPi.MX93应用处理器的MYD-LMX9X开发板免费试用活动来啦~~米尔提供了2块价值678
    的头像 发表于 05-23 08:01 501次阅读
    免费!NXP i.MX 93<b class='flag-5'>开发板</b>有奖<b class='flag-5'>试用</b>

    通过物联网管理多台MQTT设备-基于米尔T527开发板

    本篇测评由电子工程世界的优秀测评者“JerryZhen”提供。本文将介绍基于米尔电子MYD-LT527开发板的网关方案测试。一、系统概述基于米尔
    的头像 发表于 05-10 08:01 513次阅读
    通过物联网管理多台MQTT设备-基于<b class='flag-5'>米尔</b>T527<b class='flag-5'>开发板</b>

    米尔-瑞米派兼容树莓派扩展模块-试用体验】初始开发板_米尔-瑞米派兼容树莓派扩展模块

    (HMI)和具有视频功能的嵌入式设备等应用。 米尔电子和瑞萨电子共同定义和开发了瑞萨第一款MPU生态开发板——瑞米派(Remi Pi)正式上市了!在各种Pi板卡琳琅满目的当下,Remi Pi是一款与众不同
    发表于 04-29 11:42

    G2D图像处理硬件调用和测试-基于米尔-全志T113-i开发板

    本篇测评由电子工程世界的优秀测评者“jf_99374259”提供。本文将介绍基于米尔电子MYD-YT113i开发板的G2D图像处理硬件调用和测试。MYC-YT113i核心
    的头像 发表于 04-12 08:01 453次阅读
    G2D图像处理硬件调用和测试-基于<b class='flag-5'>米尔</b>-全志T113-i<b class='flag-5'>开发板</b>

    米尔-全志T113-i开发板与modbus设备的连接和操作

    本文主要介绍通过米尔-全志T113-i开发板实现与modbus设备的连接和操作。
    的头像 发表于 03-21 19:42 658次阅读
    <b class='flag-5'>米尔</b>-全志T113-i<b class='flag-5'>开发板</b>与modbus设备的连接和操作

    米尔-全志T113-i开发板试用米尔-全志T113-i开发板与modbus设备的连接和操作

    读取连接到米尔-全志T113-i开发板上的温度传感器,源码如下: #include <errno.h> #include <modbus.h>
    发表于 03-21 19:39

    先楫HPM5361EVK开发板,网友测评效果(二)

    上海先楫半导体举办的HPM5361EVK开发板试用活动圆满结束,广大工程师和爱好者们踊跃参与此次试用并提交报告。经过先楫半导体专家组评选,一共产生6名优秀获奖者。感谢媒体平台电子工程世界(简称
    的头像 发表于 03-12 08:16 1332次阅读
    先楫HPM5361EVK<b class='flag-5'>开发板</b>,网友<b class='flag-5'>测评</b>效果(二)

    ROS系统的智能车开发-基于米尔芯驰MYD-JD9X开发板

    本篇测评由电子工程世界的优秀测评者“mameng”提供。本文将介绍基于米尔电子MYD-JD9X开发板的ROS系统智能车开发。目前实现ROS的
    的头像 发表于 01-26 08:01 709次阅读
    ROS系统的智能车<b class='flag-5'>开发</b>-基于<b class='flag-5'>米尔</b>芯驰MYD-JD9X<b class='flag-5'>开发板</b>

    米尔电子和瑞萨电子推出首款MPU生态开发板瑞米派

    近日,米尔电子和瑞萨电子共同定义和开发了瑞萨第一款MPU生态开发板——瑞米派(Remi Pi)正式上市了!在各种Pi板卡琳琅满目的当下,Remi Pi是一款与众不同的开发板,它兼顾了严
    的头像 发表于 01-25 09:21 879次阅读

    【新品体验】先楫HPM5361EVK开发板免费试用

    规定时间内完成试用报告并上传至电子发烧友论坛,如发现未完成试用报告上传发布,将会要求您退回开发板8.优秀试用帖评选:将从
    发表于 10-20 11:30

    国产开发板上打造开源ThingsBoard工业网关--基于米尔芯驰MYD-JD9X开发板

    本篇测评由面包论坛的优秀测评者“JerryZhen”提供。本文将介绍基于米尔电子MYD-JD9X开发板打造成开源的Thingsboard网
    的头像 发表于 10-13 08:01 661次阅读
    国产<b class='flag-5'>开发板</b>上打造开源ThingsBoard工业网关--基于<b class='flag-5'>米尔</b>芯驰MYD-JD9X<b class='flag-5'>开发板</b>