[嵌入式linux]

迅为6818/4418开发板Yocto开发指南

[复制链接]
3099|0
手机看帖
扫描二维码
随时随地手机跟帖
jugaga|  楼主 | 2021-7-30 15:18 | 显示全部楼层 |阅读模式
迅为6818/4418开发板新增Yocto系统,并支持支持QMLOpenGL ES2.0Web浏览器、gstreamer。


iTOP-4418 和 iTOP-6818 的 yocto 系统使用了 Linux4.4 版本的内核(设备树系统),源码可编译出 Qt5.4, Qt5.6,Qt5.8,Qt5.9 多个版本的 Qt 文件系统,Qt 使用了 eglfs 显示,支持 GPU 加速,能够运行 QML,Q3D 程序;文件系统中集成了 gstreamer,可调用 VPU 进行硬件编解码。
28.1 修改 userdata.img 镜像
userdata.img 镜像烧写到了/dev/mmcblk0p4 分区,有十多 G 的空间,
559586-20210730145647892-1507892543.jpg

本章介绍如何在 userdata 中添加文件。
进到源码的 topeet_yocto/yocto/meta-nexell/meta-nexell-distro/tools/convert_tools/opt 目录,使用命令 “touch helloworld”新建一个文件,
6818开发板支持Yocto系统02.jpg
559586-20210730145702261-1942861165.jpg

然后重新编译源码,将生成的 userdata.img 烧写到开发板,进到开发板的/data/opt/目录,发现 helloworld 文件已经烧写到了开发板。
6818开发板支持Yocto系统03.jpg
559586-20210730145718463-1067340219.jpg
8.2 交叉编译 Qt 程序
编译完 SDK 程序后,可以得到交叉编译器,本章介绍交叉编译 Qt 程序的方法。
本章将 SDK 安装在了以下目录:
6818开发板支持Yocto系统04.jpg
559586-20210730145729239-409126337.jpg
进到 Qt 工程路径,输入“source /home/house/6818-sdk/environment-setup-aarch64-poky-linux”将编译器添加到环境变量,输入“qmake”生成 Makefile,
559586-20210730145742914-2030567327.jpg 6818开发板支持Yocto系统05.jpg

执行“make”即可编译 Qt 程序,
6818开发板支持Yocto系统06.jpg
559586-20210730145802449-1443198851.jpg
编译完成后生成可执行文件
559586-20210730145820353-2030158258.jpg 6818开发板支持Yocto系统07.jpg

28.3 交叉编译 C 程序
编译完 SDK 程序后,可以得到交叉编译器,本章介绍交叉编译 Qt 程序的方法。
本章将 SDK 安装在了以下目录:
559586-20210730145832529-1445391949.jpg
6818开发板支持Yocto系统08.jpg
进到 Qt 工程路径,输入“source /home/house/6818-sdk/environment-setup-aarch64-poky-linux”(根据实际路径设置)将编译器添加到环境变量,输入“echo $CC”可看到交叉编译器
6818开发板支持Yocto系统09.jpg 559586-20210730145845166-924153312.jpg
Test.c 为 C 程序,输入“$CC -o test test.c”即可编译出可执行文件,
559586-20210730145900116-1005794578.jpg 6818开发板支持Yocto系统10.jpg

28.4 触摸报错问题
执行 Qt 程序后 ,如果出现 “Failed to move cursor on screen LVDS1: -14”,可以 根据报错修 改
/etc/qboot/eglfs_config.json 文件,如下所示:
559586-20210730145912344-688853405.jpg 6818开发板支持Yocto系统11.jpg

Yocto 源码中可修改 yocto/meta-nexell/meta-nexell-distro/recipes-qt/eglfs-kms/files/eglfs_config-itop.json
文件,
559586-20210730145926948-1826394552.jpg
6818开发板支持Yocto系统12.jpg
28.5 触摸校准
系统起来后,结束掉开机自启程序,
6818开发板支持Yocto系统13.jpg 559586-20210730145935263-117933993.jpg
输入“ts_calibrate”,此时屏幕会出现准星,依次点击,
完成后即可校准成功。
559586-20210730145942937-1191959603.jpg
6818开发板支持Yocto系统14.jpg



yocto 配置文件说明
iTOP-4418 和 iTOP-6818 的 uboot 和内核配置文件在
topeet_yocto/yocto/meta-nexell/meta-nexell-distro/conf/machine/路径下,以 iTOP-6818 1G 内存开发板为例,
打开“s5p6818-itop2g.conf”,
559586-20210730145952546-1512389333.jpg 6818开发板支持Yocto系统15.jpg
如下所示:
559586-20210730145959942-1085202970.jpg
6818开发板支持Yocto系统16.jpg
内核设备树文件为 yocto 源码的 kernel/kernel-4.4.x/arch/arm64/boot/dts/nexell/s5p6818-itop2g.dts
559586-20210730150009360-1060897681.jpg 6818开发板支持Yocto系统17.jpg

删除桌面,进到源码的“yocto/meta-nexell/meta-nexell-distro/tools/configs/board”路径,可以看到许多
配置文件,名字带 itop 的为开发板的配置文件,以 iTOP-6818 2G 内存为例,输入“vi s5p6818-itop2g.xml”,
删掉如下红框内容即可删除桌面例程。
559586-20210730150016703-736270762.jpg 6818开发板支持Yocto系统18.jpg


28.7 QML 测试
系统起来后,结束掉开机自启程序,
559586-20210730150026146-670792627.jpg 6818开发板支持Yocto系统19.jpg

终端执行“Qt5_CinematicExperience --platform eglfs”,
559586-20210730150035578-231958200.jpg 6818开发板支持Yocto系统20.jpg
屏幕显示如下:
559586-20210730150042861-381408528.jpg 6818开发板支持Yocto系统21.jpg
输入“cat /sys/kernel/debug/mali/gpu_memory”可查看 GPU 使用率:
559586-20210730150052383-1910968340.jpg
6818开发板支持Yocto系统22.jpg
28.8 3D 测试( 基于 OpenGL ES2.0 )
系统起来后,结束掉开机自启程序,终端执行“/usr/share/qopengl-1.0/Q3D --platform eglfs”,
559586-20210730150102085-179008072.jpg 6818开发板支持Yocto系统23.jpg
屏幕显示如下:
559586-20210730150109301-260411097.jpg 6818开发板支持Yocto系统24.jpg
例程源码路径:topeet_yocto/yocto/meta-nexell/meta-nexell-distro/recipes-itop-apps/qt-opengl

28.9 Web 浏览器测试
系统起来后,结束掉开机自启程序,保证网络正常,能 ping 通网络,
559586-20210730150120596-757427905.jpg
6818开发板支持Yocto系统25.jpg
终端执行“/usr/share/qwebrowser-1.0/webKit --platform eglfs”
559586-20210730150129709-1189194871.jpg 6818开发板支持Yocto系统26.jpg
例程源码路径:topeet_yocto/yocto/meta-nexell/meta-nexell-distro/recipes-itop-apps/qt-webkit
28.10 添加 QSerialPort
以 Qt5.6 为例
1. 在文件系统中添加
topeet_yocto/source/recipes-core/packagegroups/packagegroup-nexell-qt.bb
559586-20210730150142598-249252872.jpg
6818开发板支持Yocto系统27.jpg
2. sdk 中添加
topeet_yocto/yocto/meta-nexell/meta-nexell-sdk/recipes-core/packagegroups/packagegroup-nexell-qt-sdk.bb
559586-20210730150156328-729571950.jpg 6818开发板支持Yocto系统28.jpg

28.11 gstreamer 测试
测试文件在文件系统的/data 目录下
6818开发板支持Yocto系统29.jpg

559586-20210730150210228-797331276.jpg
28.11.1 硬解码测试
test_h264.mp4 文件:H.264 编码格式,MP4 封装
串口终端输入:
gst-launch-1.0 filesrc location=/data/opt/test_h264.mp4
! qtdemux
name=demux demux.video_0 ! h264parse !
queue ! nxvideodec ! queue ! nxvideosink

559586-20210730150221797-60992737.jpg 6818开发板支持Yocto系统30.jpg

输入完成后屏幕开始播放视频。
6818开发板支持Yocto系统31.jpg
559586-20210730150231278-1950760131.jpg
test_mpeg4.avi 文件:mpeg4 编码格式,AVI 封装,
gst-launch-1.0 filesrc location=/data/opt/test_mpeg4.avi
! avidemux name=demux demux.video_0
!
mpeg4videoparse ! queue ! nxvideodec ! queue ! nxvideosink
559586-20210730150241378-1144487482.jpg
6818开发板支持Yocto系统32.jpg
执行命令后屏幕开始播放视频。
其他硬解码测试命令:
Decoder command example
a. Supported format
-Mpeg2, H.263
b. How to use:
gst-launch-1.0 filesrc
location=test-mp4.mp4 ! qtdemux name=demux demux.video_0 ! h263parse ! queue
!
nxvideodec ! queue !
nxvideosink
gst-launch-1.0 filesrc location=test_mp2.mp2 ! mpegpsdemux name=demux demux.video_e0 ! mpegvideoparse !
queue ! nxvideodec ! queue !
Nxvideosink

28.11.2 硬编码转码测试
H.264 硬件编解码,转封装:MP4==>AVI
gst-launch-1.0 filesrc location=/data/opt/test_h264.mp4
! qtdemux name=demux demux.video_0
!
h264parse
!
avdec_h264 ! nxvideoenc codec=video/x-h264 ! avimux name=mux ! filesink location=result.avi
如下图:
559586-20210730150258375-627437290.jpg 6818开发板支持Yocto系统33.jpg
完成后生成的 result.avi 如下,MP4 转换成了 AVI 格式。
559586-20210730150307098-232663867.jpg 6818开发板支持Yocto系统34.jpg
转码 H.264==>H.263
gst-launch-1.0 filesrc location=/data/opt/test_h264.mp4 ! qtdemux name=demux demux.video_0
!
h264parse
!
avdec_h264 ! nxvideoenc codec=video/x-h263 ! avimux name=mux ! filesink location=result.avi
如下所示:
559586-20210730150320074-579762169.jpg 6818开发板支持Yocto系统35.jpg
将生成的 result.avi 拷贝到 windows,使用格式工厂查看,如下所示,已经转化成了 H263 格式
6818开发板支持Yocto系统36.jpg . 559586-20210730150332487-227014333.jpg

转码 H.264==>MPEG-4
gst-launch-1.0 filesrc location=/data/opt/test_h264.mp4
! qtdemux name=demux demux.video_0 ! h264parse !
avdec_h264 ! nxvideoenc codec=video/mpeg ! avimux name=mux ! filesink location=result.avi
如下所示:
559586-20210730150342970-1816785464.jpg 6818开发板支持Yocto系统37.jpg

将生成的 result.avi 拷贝到 windows,使用格式工厂查看,如下所示,已经转化成了 MPEG-4 格式
559586-20210730150354145-1972567457.jpg 6818开发板支持Yocto系统38.jpg
28.12 添加开机自启程序
iTOP-4418 和 iTOP-6818 的开机自启脚本为
topeet_yocto/yocto/meta-nexell/meta-nexell-distro/recipes-qt/qt5_5.9.x/qtcinema-launcher/qt_cinema_run.sh,
输入“vi qt_cinema_run.sh”,将自己的程序添加进去即可,这里将 DesktopManager 设置成了开机自启,
559586-20210730150404846-1828058500.jpg
6818开发板支持Yocto系统39.jpg

6818开发板支持Yocto系统01.jpg

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

104

主题

118

帖子

1

粉丝