联系管理员

开通文章发布权限

扫码 添加微信
微信图片
电话: QQ:1602036736

关于部署QT应用到buildroot系统上的方法

快速验证方法

该方法在执行 make clean 后将没有作用,想要重新部署。

在编译成功过的一个 buildroot SDK 中,直接将 /Run 文件夹放到下面 SDK 路径下:

假设我的 SDK 叫 tspi-1f-buildroot-qt5
tspi-1f-buildroot-qt5/buildroot/output/rockchip_rk3566/target/opt

将启动脚本 S97_auto_runQT 放到下面 SDK 路径:

tspi-1f-buildroot-qt5/buildroot/output/rockchip_rk3566/target/etc/init.d

修改会覆盖我们启动脚本的其他脚本不执行:

tspi-1f-buildroot-qt5/buildroot/output/rockchip_rk3566/target/etc/init.d/S49weston

修改里面的内容为:

#!/bin/sh -e
### BEGIN INIT INFO
# Provides:          weston
# Required-Start:    mountvirtfs
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Linux weston daemon
### END INIT INFO

PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"

# Load default env variables from profiles(e.g. /etc/profile.d/weston.sh)
. /etc/profile

start_weston()
{
#	/usr/bin/weston&
}

stop_weston()
{
#	killall weston
}

case "$1" in
	start)
		echo -n "starting weston... "
#		start_weston
		echo "done."
		;;
	stop)
		echo -n "stoping weston... "
#		stop_weston || true
		echo "done."
		;;
	restart|reload)
		echo -n "stoping weston... "
#		stop_weston && sleep .3
		echo "done."

		echo -n "starting weston... "
#		start_weston
		echo "done."
		;;
	*)
		echo "Usage: $0 {start|stop|restart}"
		exit 1
esac

exit 0
其实就是把里面真正执行的内容注释掉了

重新编译 SDK:

./build.sh all

固件打包

./mkfirmware.sh

合成镜像

./build.sh updateimg

完成后 update.img 系统镜像将生成在 SDK 下的 rockdev 中。烧录该 update.img 即可。

稳定部署方法

第一步:创建文件结构

cd tspi-1f-buildroot-qt5/buildroot/package
mkdir myapp

第二步:创建Config.in文件

创建文件 tspi-1f-buildroot-qt5/buildroot/package/myapp/Config.in。
写入内容:

config BR2_PACKAGE_MYAPP
    bool "myapp"
    help
      My QT Application

第三步:创建myapp.mk文件

创建 tspi-1f-buildroot-qt5/buildroot/package/myapp/myapp.mk。
写入内容:


################################################################################
# myapp
################################################################################

# 设置版本和源文件路径
MYAPP_VERSION = 1.0
MYAPP_SITE = $(TOPDIR)/../myapp_files
MYAPP_SITE_METHOD=local

# 定义安装命令
define MYAPP_INSTALL_TARGET_CMDS
    $(INSTALL) -d -m 0755 $(TARGET_DIR)/opt/Run
    cp -r $(@D)/Run/* $(TARGET_DIR)/opt/Run/
    $(INSTALL) -D -m 0755 $(@D)/S97_auto_runQT $(TARGET_DIR)/etc/init.d/S97_auto_runQT
endef

# 告诉Buildroot这是个通用包
$(eval $(generic-package))

第四步:创建文件存放目录

# 在Buildroot同级目录创建myapp_files文件夹
cd tspi-1f-buildroot-qt5/buildroot
cd ..
mkdir myapp_files

# 把你的文件放进去
cp -r /你的/Run/文件夹 myapp_files/
cp /你的/S97_auto_runQT myapp_files/

目录结构应该是这样的:

Linux SDK
├── buildroot/           # Buildroot目录
│   ├── package/
│   │   └── myapp/
│   │       ├── Config.in
│   │       └── myapp.mk
│   └── ...其他文件...
└── myapp_files/        # 你的文件目录
    ├── Run/
    │   ├── 你的QT程序
    │   └── ...其他文件...
    └── S97_auto_runQT

第五步:包含新应用包

需要在 tspi-1f-buildroot-qt5/buildroot/package/Config.in 文件末尾附近添加:

source "package/myapp/Config.in"

第六步:启用新的package

cd tspi-1f-buildroot-qt5/buildroot
make menuconfig

在menuconfig中:
/ 搜索 "myapp" 的路径
找到后,按 Y 选中(显示 [*])
保存退出

找对应的config文件并更新配置,路径为:

tspi-1f-buildroot-qt5/buildroot/configs/rockchip_rk3566_defconfig

在最末尾加入我们的myapp使能:

BR2_PACKAGE_MYAPP=y

第七步:编译生成固件

回到SDK根目录下重新编译 SDK:

./build.sh all

固件打包

./mkfirmware.sh

合成镜像

./build.sh updateimg

完成后 update.img 系统镜像将生成在 SDK 下的 rockdev 中。烧录该 update.img 即可。

 

评论

快捷导航

把好文章收藏到微信

打开微信,扫码查看

关闭

还没有账号?立即注册