有屏RV1126部署QT应用

之前写过一篇在RV1126上移植QT的文章,当时只是重点记录了项目移植的方法及交叉编译的配置等。RV1126只有buildroot系统,因此想要编译有界面的app需要借助QT和framebuffer实现。

下面记录一下如何通过buildroot的方式构建有界面的qt程序

首先在buildroot中添加QT5的内容

source envsetup.sh  //选择rockchip_rv1126_rv1109
make menuconfig

Target packages->Graphic libraries and applications (graphic/text)

开启 Qt5 下的 gui module 和 widgets module

保存退出

make savedefconfig
./build.sh rootfs

随后在 SDK/buildroot/package/rockchip/ 目录下,新建工程文件夹(QT Creator创建的项目名称,我的项目名称是qhyccd,下文提到的项目名称都是指这个),在文件夹中添加两个文件, Config.in 和 项目文件名.mk 。

Config.in

config BR2_PACKAGE_QHYCCD
    bool "qhyccd"
    help
    hya qt demo

qhyccd.mk

################################################################################
#
# qhyccd
#
################################################################################

QHYCCD_VERSION = 1.0
QHYCCD_SITE = $(TOPDIR)/../app/qhyccd
QHYCCD_SITE_METHOD = local

TEST_LICENSE = Apache V2.0
TEST_LICENSE_FILES = NOTICE
define TEST_CONFIGURE_CMDS
cd $(@D); $(TARGET_MAKE_ENV) ~/workspace/rv1126SDK0/buildroot/output/rockchip_rv1126_rv1109/host/bin/qmake
endef
define QHYCCD_BUILD_CMDS
$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) 
endef

define QHYCCD_INSTALL_TARGET_CMDS
$(INSTALL) -D -m 0755 $(@D)/qhyccd $(TARGET_DIR)/usr/bin/qhyccd
endef
$(eval $(generic-package))

2)移植源码

在SDK/app/目录下建立项目文件夹qhyccd

在qt里简单的构建了一个工程,随后将.pro .cpp .h .ui 文件移动到虚拟机SDK/app/项目文件夹下

给工程文件夹权限

3)编译工程

在SDK根目录下,make 项目名-build

编译完成后,在对应的output的target/usr/bin下面可以找到可执行文件

假如对源码进行了修改,可以使用make 项目名-rebuild进行重新编译

make qhyccd-rebuild
./build.sh rootfs
./build.sh updateimg

把镜像烧录到开发板

4)测试可执行程序

运行可执行程序报错如下,是因为开发板没有配置QT的环境

Could not find the Qt platform plugin "eglfs" in ""

vi /etc/profile

#QT 配置
export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/qt/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_QPA_FONTDIR=/usr/lib/fonts

之后报错如下,是因为没有/dev/fb0设备

重新配置内核,打开framebuffer驱动

在kernel目录下

make ARCH=arm rv1126_defconfig
make ARCH=arm menuconfig

//配置如下
Devices Drivers > 
    Graphics support > 
        Frame buffer Devices >
         Support for frame buffer devices >
             [*] Enable Video Mode Handling Helpers
             ********
             <*> ARM PrimeCell PL110 support
             
Devices Drivers > 
    Graphics support > 
        Direct Rendering Manager >
            [*] Enable legacy fbdev support for your modesetting driver

退出保存
make ARCH=arm savedefconfig // 将.config 保存为 deconfig
cp defconfig arch/arm/configs/rv1126_defconfig
cd ..
./build.sh kernel

报错信息如下,找不到字体库

Cannot find font directory /usr/lib/fonts

在Windows下此路径,把其中的字体库文件拷贝到开发板target/usr/lib/fonts文件夹下

在SDK根目录下

./build.sh rootfs
./build.sh updateimg

随后烧录测试,运行可执行程序,屏幕成功显示界面