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_hdmiHDMI显示屏
fb_lcdLCD显示屏
fb_lvdsLVDS显示屏
fb_lvds2LVDS2显示屏

以下是一个针对所有类型的完整示例配置:

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许可证下可用。
了解更多信息。