C
自定义运行时环境
环境和输入
默认情况下,Boot to Qt 应用的基本环境变量和启动选项设置在嵌入式 Linux 设备上的 /etc/default/qt
或 /etc/appcontroller.conf
。
如果您目标设备上有其他输入设备,而不是 Boot to Qt 栈默认配置的设备,则可以自定义此文件。
需要配置输入设备时,请参阅 嵌入式 Linux 设备的输入 获取更多信息。
USB 输入设备(如键盘和鼠标)会自动识别。如果连接了鼠标,则鼠标指针会自动显示。
但是,热插拔可能不起作用,这意味着键盘和鼠标等输入设备必须在引导时连接。
切换到 tslib 以支持电阻触摸屏
对于不提供现代多点触控功能的触摸屏,可能需要使用 tslib
库而不是依赖直接事件设备访问和 Linux 内核的多点触控协议。这也允许校准,并且更适合在工业环境中经常使用的电阻触摸屏。
要启用 tslib
,请将以下行添加到设备的 /etc/default/qt
:
QT_QPA_EGLFS_NO_LIBINPUT=1 QT_QPA_EGLFS_TSLIB=1
注意: tslib
插件不提供多点触控事件(QTouchEvent),它只生成鼠标事件(QMouseEvent)。
如果需要,可以通过设置 TSLIB_TSDEVICE
明确指定设备。
TSLIB_TSDEVICE=/dev/input/event1
可以通过 ts_calibrate
执行触摸屏校准,并通过设置 TSLIB_CALIBFILE
使用校准文件。
TSLIB_CALIBFILE=/etc/calibration.conf
引导至自定义应用程序
默认情况下,引导至 Qt 演示程序启动器 配置为启动时运行。
如果您想在引导时启动您的应用程序
- 转到 项目 > 运行,为您想要定制的 Boot to Qt 版本。
- 在 部署 下,单击 添加部署步骤,然后选择 更改默认应用程序。
- 重新部署您的项目。在 编辑 模式下,右键单击项目并选择 部署,或者点击(运行)。
现在,您的应用程序将在下一次设备重启时启动。
或者您也可以在设备上运行以下命令:
appcontroller --make-default <path>
其中 <path>
是设备上应用程序二进制文件的安装路径。
要从默认启动中删除您的应用程序,请在设备上运行以下命令:
appcontroller --remove-default
配置显示分辨率
配置自定义分辨率的步骤取决于设备和显示器。
边界设备i.MX6板
可以通过修改启动环境来更改分辨率。
通过串行终端连接设备并按任意键进入u-boot提示符,以启动设备:
Hit any key to stop autoboot
使用以下命令显示可用的预配置面板列表:
fbpanel
有四个变量控制选择不同连接类型的面板:
fb_hdmi | HDMI显示屏 |
fb_lcd | LCD显示屏 |
fb_lvds | LVDS显示屏 |
fb_lvds2 | LVDS2显示屏 |
以下是一个针对所有类型的完整示例配置:
setenv fb_hdmi 1280x720M@60 setenv fb_lcd CLAA-WVGA setenv fb_lvds hannstar7 setenv fb_lvds2 hannstar saveenv
如果您的HDMI屏幕具有非默认的CEA分辨率,则也应该设置:
setenv allow_noncea 1 saveenv
有关更多信息,请参阅边界设备在https://boundarydevices.com/display-configuration-u-boot/ 上的文档。
Raspberry Pi
默认情况下,分辨率根据连接的显示器自动选择。要选择特定的显示设置,请编辑SD卡启动分区上的config.txt
文件。
滚动到"hdmi_mode"
部分,并在表中查找要设置的模式。取消注释该部分的最后一行,并将其值设置为表中选择的一个值。保存文件并重新启动设备。
有关更多信息,请参阅Raspberry Pi在config.txt上的文档。
配置可伸缩用户界面的物理屏幕尺寸
通过Boot to Qt入门和Qt Quick控件会自动调整到不同尺寸的屏幕,从小7"触摸屏到60"或更大的电视,以确保可读性和触控友好性。为此,Qt需要知道屏幕的物理尺寸。默认情况下,它会尝试从帧缓冲设备查询这些值。但是,许多内核驱动程序不提供这些信息。
要覆盖并手动设置所需的屏幕尺寸,请转到启动器设置视图并更改物理屏幕尺寸(毫米)框中的值。然后点击重新启动按钮或重新启动您的应用程序。控件将根据新设置调整大小。
在纵向和横向视图之间切换
根据设备屏幕尺寸和应用需求,可能需要更改默认视图方向。以下示例展示了如何在QML中旋转您的应用程序。
import QtQuick 2.2 Item { id: root width: 800 height: 1280 // Container element for rotating Rectangle { id: main // Swap the width and height of the root item width: root.height height: root.width anchors.centerIn: parent // Rotate 90 degrees clockwise around transformOrigin rotation: 90 // The rotated content Text { text: qsTr("Hello World") anchors.centerIn: parent } MouseArea { anchors.fill: parent onClicked: { Qt.quit(); } } } }
调整SD卡根分区大小
默认情况下,Boot to Qt映像会为开发目的保留一些额外的空闲空间,但并非SD卡的全部额外容量都可用。Boot to Qt映像包括可用于将SD卡中的根分区扩展到其完整大小的工具。
注意: 这些工具将修改分区布局,可能导致数据丢失。如果您不确定或SD卡包含重要文件,则不应尝试这些步骤。
调整大小分为两步进行:
- 调整根分区的分区表,这通常是第二个分区
parted -s /dev/mmcblk0 resizepart 2 100%
- 调整第二个分区的文件系统
resize2fs /dev/mmcblk0p2
这里/dev/mmcblk0
指SD卡的设备节点,而/dev/mmcblk0p2
指该SD卡上的第二个分区。
在目标设备上设置USB以太网
对嵌入式目标设备的USB访问支持两种不同的USB协议。默认协议(远程网络驱动接口规范,RNDIS)可以在将目标设备连接到Linux或Windows主机时使用。当您要将目标设备连接到macOS主机时,您需要将协议更改为CDC-ECM(通信设备类 - 以太网控制模块)。
您已经将Boot to Qt安装到目标设备后,可以通过编辑设备上的配置文件来更改协议。
在设备上编辑配置文件
可以从目标设备上的以下文件配置USB以太网协议支持
/etc/default/qdbd
支持RNDIS协议用于Windows和Linux主机(默认)
USB_ETHERNET_PROTOCOL=rndis
支持CDC-ECM协议用于macOS和Linux主机
USB_ETHERNET_PROTOCOL=cdcecm
使用USB线将目标设备连接到主机。更改上述文件后,重新启动目标设备。
如果出现问题,请参阅故障排除。
在特定Qt许可证下可用。
了解更多信息。