有屏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
随后烧录测试,运行可执行程序,屏幕成功显示界面