历史上的今天
返回首页

历史上的今天

今天是:2024年12月28日(星期六)

2021年12月28日 | 迅为6818/4418开发板Yocto开发指南

2021-12-28 来源:eefocus

迅为6818/4418开发板新增Yocto系统,并支持支持QML、OpenGL ES2.0、Web浏览器、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 的空间,

 

本章介绍如何在 userdata 中添加文件。

进到源码的 topeet_yocto/yocto/meta-nexell/meta-nexell-distro/tools/convert_tools/opt 目录,使用命令 “touch helloworld”新建一个文件,

 

 

然后重新编译源码,将生成的 userdata.img 烧写到开发板,进到开发板的/data/opt/目录,发现 helloworld 文件已经烧写到了开发板。

 

8.2 交叉编译 Qt 程序

编译完 SDK 程序后,可以得到交叉编译器,本章介绍交叉编译 Qt 程序的方法。

本章将 SDK 安装在了以下目录:

 

 

进到 Qt 工程路径,输入“source /home/house/6818-sdk/environment-setup-aarch64-poky-linux”将编译器添加到环境变量,输入“qmake”生成 Makefile,

 

 

执行“make”即可编译 Qt 程序,

 

编译完成后生成可执行文件

 

 

28.3 交叉编译 C 程序

编译完 SDK 程序后,可以得到交叉编译器,本章介绍交叉编译 Qt 程序的方法。

本章将 SDK 安装在了以下目录:

 

进到 Qt 工程路径,输入“source /home/house/6818-sdk/environment-setup-aarch64-poky-linux”(根据实际路径设置)将编译器添加到环境变量,输入“echo $CC”可看到交叉编译器

 

Test.c 为 C 程序,输入“$CC -o test test.c”即可编译出可执行文件,

 

 

28.4 触摸报错问题

执行 Qt 程序后 ,如果出现 “Failed to move cursor on screen LVDS1: -14”,可以 根据报错修 改

/etc/qboot/eglfs_config.json 文件,如下所示:

 

 

Yocto 源码中可修改 yocto/meta-nexell/meta-nexell-distro/recipes-qt/eglfs-kms/files/eglfs_config-itop.json

文件,

 

28.5 触摸校准

系统起来后,结束掉开机自启程序,

 

输入“ts_calibrate”,此时屏幕会出现准星,依次点击,

完成后即可校准成功。

 

 

 

 

 

yocto 配置文件说明

iTOP-4418 和 iTOP-6818 的 uboot 和内核配置文件在

topeet_yocto/yocto/meta-nexell/meta-nexell-distro/conf/machine/路径下,以 iTOP-6818 1G 内存开发板为例,

打开“s5p6818-itop2g.conf”,

 

如下所示:

 

 

内核设备树文件为 yocto 源码的 kernel/kernel-4.4.x/arch/arm64/boot/dts/nexell/s5p6818-itop2g.dts

 

 

删除桌面,进到源码的“yocto/meta-nexell/meta-nexell-distro/tools/configs/board”路径,可以看到许多

配置文件,名字带 itop 的为开发板的配置文件,以 iTOP-6818 2G 内存为例,输入“vi s5p6818-itop2g.xml”,

删掉如下红框内容即可删除桌面例程。

 

 

 

28.7 QML 测试

系统起来后,结束掉开机自启程序,

 

 

终端执行“Qt5_CinematicExperience --platform eglfs”,

 

屏幕显示如下:

 

输入“cat /sys/kernel/debug/mali/gpu_memory”可查看 GPU 使用率:

 

 

28.8 3D 测试( 基于 OpenGL ES2.0 )

系统起来后,结束掉开机自启程序,终端执行“/usr/share/qopengl-1.0/Q3D --platform eglfs”,

 

屏幕显示如下:

 

例程源码路径:topeet_yocto/yocto/meta-nexell/meta-nexell-distro/recipes-itop-apps/qt-opengl

 

28.9 Web 浏览器测试

系统起来后,结束掉开机自启程序,保证网络正常,能 ping 通网络,

 

 

终端执行“/usr/share/qwebrowser-1.0/webKit --platform eglfs”

 

例程源码路径: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

 

 

2. sdk 中添加

topeet_yocto/yocto/meta-nexell/meta-nexell-sdk/recipes-core/packagegroups/packagegroup-nexell-qt-sdk.bb

 

 

28.11 gstreamer 测试

测试文件在文件系统的/data 目录下

 

 

 

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

 

 

 

输入完成后屏幕开始播放视频。

 

 

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

 

 

执行命令后屏幕开始播放视频。

其他硬解码测试命令:

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

如下图:

 

完成后生成的 result.avi 如下,MP4 转换成了 AVI 格式。

 

转码 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

如下所示:

 

将生成的 result.avi 拷贝到 windows,使用格式工厂查看,如下所示,已经转化成了 H263 格式

.

 

转码 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

如下所示:

 

 

将生成的 result.avi 拷贝到 windows,使用格式工厂查看,如下所示,已经转化成了 MPEG-4 格式

 

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 设置成了开机自启,

推荐阅读

史海拾趣

Continental Industries公司的发展小趣事

面对电子行业日益激烈的竞争和不断变化的市场需求,Continental Industries积极应对挑战。公司加强了对市场趋势的研究和分析,不断调整产品结构和市场策略。同时,公司还加大了对新技术和新材料的研发力度,努力提升产品的竞争力和附加值。

芯佰微(Corebai)公司的发展小趣事

随着技术的不断发展,芯佰微逐步拓展了自己的产品线,覆盖了放大器、接口电路、电源管理、时间数字转换器、DAC数模转换、ADC模数转换等多个领域。同时,公司积极开拓国内外市场,与众多知名企业建立了合作关系,将产品广泛应用于手持移动终端、消费类电子产品、个人电脑及周边设备、网络通信设备、医疗设备、办公设备等多个领域。这些努力使得芯佰微的产品在市场上获得了广泛认可。

Cypress(赛普拉斯)公司的发展小趣事

Cypress公司成立于1982年,总部设在美国加州的San Jose。创业之初,公司专注于高速CMOS SRAM、EEPROM、PAL器件和TTL逻辑器件的设计和开发。这一时期,Cypress通过引入创新的技术和产品设计,在竞争激烈的电子芯片市场中逐渐崭露头角。公司凭借对技术的持续投入和积累,为未来的发展奠定了坚实的基础。

启攀微电子(Chiphomer)公司的发展小趣事

2009年,全球经济遭受金融海啸的冲击,启攀微电子也面临着巨大的市场压力。然而,公司并没有选择退缩,而是选择了坚守与创新。在经济危机的背景下,公司加强了产品推广和客户支持,同时加快了新品开发的步伐。经过几年的打拼,启攀微电子的消费类电子产品在手机领域取得了一定的市场认可,出货量大幅提升,市场份额稳步上升。

Connective Peripherals Pte Ltd公司的发展小趣事

启攀微电子(Chiphomer)公司成立于2003年,当时正值中国集成电路产业快速发展的初期。创始人张杨带领着一支由英美归国的留学精英和国内资深管理与技术人员组成的团队,立志要在这一领域闯出一片天地。然而,初创时期的资金短缺、技术壁垒和市场认可度低等问题,让公司面临着巨大的挑战。然而,他们凭借着对技术的执着追求和对市场的敏锐洞察,成功推出了首款SDH通信芯片,为公司的后续发展奠定了坚实的基础。

Crystal Semiconductor Corp公司的发展小趣事

Crystal Semiconductor Corp成立之初,面临着资金短缺、技术难题和市场竞争的多重压力。然而,公司的创始人凭借对半导体技术的深刻理解和敏锐的市场洞察力,成功吸引了一批志同道合的工程师和投资者。他们共同攻克了技术难关,推出了首款具有竞争力的晶体管产品,迅速在市场上占据了一席之地。

问答坊 | AI 解惑

求助:关于强电与弱电的接地问题

线路板上的弱电部分的地是通过PCB上的固定螺丝直接连接到设备外壳上,设备外壳连接大地,问题是,当设备的主回路(属强电部分,有开关管)工作时,pcb上弱电部分的某个器件收到干扰。当把pcb上的螺丝拆除,断开pcb的地与机壳的连接,故障解除。求助 ...…

查看全部问答>

三相正弦交流電路

三相正弦交流電路…

查看全部问答>

发一个大型PCB厂的技术参数 和 制板流程

技术指标  这基本就是标准了吧  大家不要做个安全间距4mil的哦  没人能生产  当然我只知道这些啊  有不足之处请见谅 1层数1-6层2最大加工面积1000*600mm3最小板厚单 0.25mm —3.0mm 双层 4、6 ...…

查看全部问答>

m23连续上传数据的问题

本来想通过服务器与模块间的相互确认来确定一侦数据是否上传成功,但是如果很多客户端同时上传就会给服务器造成很大压力,我采用的是,在单片机发给模块数据后留一段延时,等待模块自动上发,但是还是存在2个包在一起发了,导致超过的缓冲区,丢了不少数据 ...…

查看全部问答>

我的EVC这么会出现这种问题?

evc4+sp4 用evc半年了,一直都是好好的,可最近不知道这么回事,编译连接到模拟器的时候就经常出现“服务器正在运行中   由于另一个程序正在运行中,此操作无法完成......” 有人说是内存的问题,可是看进程管理器PF使用率才400M而 ...…

查看全部问答>

帮忙算一下GPRS的资费啊。。

昨天去移动开GPRS的卡,不知道选什么套餐哦。。具体需要按照流量来区分的。 这个GPRS的流量怎么计算啊?…

查看全部问答>

分析-关于边缘脉冲检测的问题

为什么led_d1, led_d2,led_d3 是在led_ctrl[0],led_ctrl[1],led_ctrl[2] 下降沿被触发,为什么不是上升沿被触发。下面是 程序,这是一个利用边缘脉冲检测进行 按键的操作。module lesson9( clk,              & ...…

查看全部问答>

面试这点事

在负责研发日常工作中,技术工程师和技术经理的招聘是我的基础工作之一,而且我也把它当成了我最重要的工作,虽然这件工作并未占用太多的时间。我一直以为,合适的人才是一切事物的源动力。我把这件事做好了,其他的研发日常工作就很好办了,事半功 ...…

查看全部问答>