
米尔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不符:
使用Win32DiskImager或别的烧录工具进行烧录即可。烧录完毕后,SD卡会分为三个部分,最前面8MB为预留空间不做分区,中间89MB为FAT分区存放BOOT.bin/内核文件/设备树dtb文件,后面的EXT分区,其中后面的EXT分区为开发者可以自由操作的分区,可对此分区进行分割,合并,扩容,删除等,一般有基础的开发者会将该分区的厂家出厂文件系统做备份然后删除,扩容并替换为自己的文件系统分区,文件系统发行版为Ubuntu/Debian/Centos/Redhat/ARMbian等,根据个人喜好而定,这么做的好处是,不影响内核驱动开发的版本兼容问题,并且能按照个人意愿自选安装各种第三方软件,如桌面运行扩展,x11扩展,网络扩展等,而我为了方便使用apt插件安装各种软件,选择的文件系统发行版依然为之前一直沿用的Debian 10 for arm64,
该文件系统发行版可用在所有arm64架构开发板上:搭建文件系统的帖子我之前发表过,可参考此帖:https://bbs.elecfans.com/jishu_2030659_1_1.html替换完毕后,启动系统,查看CPU信息和运行内存信息:
CPU为IMX8mini,四核A53,内存2GB。替换文件系统后,需要移植/lib/modules内核驱动目录,以便开机时由内核文件正确加载各个ko文件:
正确加载/usr/lib/modules/5.4.3-2.0.0+gbed0791/kernel/drivers/net/wireless/bcmdhd/bcmdhd.ko文件后,板载WIFI模块便可正常使用:
1. ifconfig wlan02. nmcli dev wifi
PART.2
至于启动QT环境开发的方式有两种,第一种是使用SSH远程代码调试软件如VSCode,SourceInsight等,通过SSH方式登录到板子上,另外一种方法则是直接在板子的MobaXterm SSH终端启动QT creator:
我个人倾向于两种方式结合使用,在不同的开发场合下使用不同方式。QT creator默认配置编译环境gcc:
QT下操作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实际显示是输出内容:
当然了,如果不设置环境变量QT_QPA_PLATFORM的话,x11终端下启动的x11应用就会在远程机器上直接显示(远程机器就是我的电脑):
设置QT_QPA_PLATFORM之后,可以将启动界面映射到任意framebuffer外设上:1. export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
PART.3
编译选项采用米尔MYS-8MMX开发板的编译选项mys_iot_defconfig: 1. /home/myir-imx-linux-develop/arch/ARM64/configs/2. make mys_iot_defconfig
这边还需要注意的是内核镜像的版本与使用内核源码编译第三方驱动ko文件的版本必须相同,在内核源码一级目录处可以找到配置的位置:
使用menuconfig打开内核编译选项, Device Drivers > HID support的 /dev/hidraw raw HID device support选项要打开,或者是在配置文件中添加此项配置的环境变量:
配置完毕之后,替换Image内核文件覆盖出厂内核文件: 1. mount /dev/mmcblk1p1 /media2. mmcblk1是开发板的SD卡,mmcblk1p1是SD卡的FAT分区,存放内核文件的位置:
重新启动之后,将USBHID设备插到板子的USB接口:
在/dev目录下找到/dev/hidraw设备:安装-ludev软件库:
1. apt install udev使用代码读写HID设备:1. handle = hid_open(2020, 2020, NULL);2. res = hid_read(handle, buf, sizeof(buf));
PART.4
米尔电子 嵌入式解决方案专家“米尔MYiR”公众号☞不定期分享产品资料及干货☞第一时间发布米尔最新资讯 原文标题:米尔MYS-8MMX开发板试用体验测评——donatello1996
文章出处:【微信公众号:米尔MYiR】欢迎添加关注!文章转载请注明出处。
全部0条评论
快来发表一下你的评论吧 !