T113平台Qt程序自启动说明-盈鹏飞嵌入式
SBC-T113产品特性:
-
采用Allwinner公司Cortex-A7双核T113-i处理器,运行最高速度为1.2GHZ;
-
内置64-bit XuanTie C906 RISC-V协处理器;
-
支持JPEG/MJPEG视频编码,最大分辨率1080p@60fps;支持多格式1080P@60fps视频解码 (H.265,H.264, MPEG-1/2/4);
-
支持RGB666/LVDS/MIPI-DSI,分辨率最高1920x1080;
-
支持512-1G Bytes DDR3 SDRAM;
-
支持SPI NAND存储和启动(默认:256MB;最大1GB)或者EMMC启动(默认:4GB,最大32GB);
-
支持四路USB2.0 HOST;
-
支持六路RS232通信;
-
支持双路CAN BUS通信(隔离);
-
支持双路以太网,一路10/100M;一路10/100/1000M;
-
稳定的操作系统的支持,可预装Ubuntu20.04/LINUX 5.4 Preempt/Tina5.0;
-
标准3.5寸主板, 尺寸为:146*102MM;
SBC-T113功能评估图:

Qt程序自启动说明
Linux系统启动后,会自动执行/etc/init.d中的rcS脚本。因此,只要在该脚本中增加程序的运行运行环境和启动该程序即可。以下是rcS的内容:
点击查看代码
#!/bin/sh
if [ ! -d /system/vendor/ ]; then
mkdir -p /system/vendor/
ln -s /lib/modules/`uname -r`/ /system/vendor/modules
ln -s /etc /system/etc
fi
#usb touch controller from wcn/wks;
insmod /system/vendor/modules/hid-multitouch.ko
# Start all init scripts in /etc/init.d
# executing them in numerical order.
#
for i in /etc/init.d/S??* ;do
# Ignore dangling symlinks (if any).
[ ! -f "$i" ] && continue
case "$i" in
*.sh)
# Source shell script for speed.
(
trap - INT QUIT TSTP
set start
. $i
)
;;
*)
# No sh extension, so fork subprocess.
$i start
;;
esac
done
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
#/etc/adb_conf.sh start &
MODEL=$(cat /proc/device-tree/model)
if [[ "$MODEL" = "sbc-t113" ]];then
#chip=t113_i
tinymix set "ADC2 Input MIC2 Boost Switch" 1 > /dev/null
tinymix set "MIC2 gain volume" 31 > /dev/null
tinymix set "MIC2 Input Select" 1 > /dev/null
#tinymix set "ADC3 Input MIC3 Boost Switch" 1 > /dev/null
tinymix set "HpSpeaker Switch" 1 > /dev/null
tinymix set "Headphone Switch" 1 > /dev/null
tinymix set "Headphone volume" 7 > /dev/null
else
tinymix set "ADC3 Input MIC3 Boost Switch" 1 > /dev/null
tinymix set "MIC3 gain volume" 31 > /dev/null
tinymix set "MIC3 Input Select" 1 > /dev/null
tinymix set "Headphone Switch" 1 > /dev/null
tinymix set "Headphone volume" 7 > /dev/null
fi
if [ ! -f "/usr/lib/libcrypto.so.1.0.0" ]; then
ln -s /usr/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.0.0
fi
if [ ! -f "/usr/lib/libssl.so.1.0.0" ]; then
ln -s /usr/lib/libssl.so.1.1 /usr/lib/libssl.so.1.0.0
fi
. /etc/qtenv_capx.sh && /embfly_test/DeviceTest &
看最后一行,“. /etc/qtenv_capx.sh”这语句表示初始化QT的运行环境,qtenv_capx.sh 脚本是配置qt使用电容屏控制器的配置脚本,“/embfly_test/DeviceTest &”这个语句表示运行/embfly_test/DeviceTest程序,用户将DeviceTest替换为自己的程序名,用户程序即可自动运行。
qtenv_capx.sh脚本内容如下:
点击查看代码
export QTDIR=/usr/local/Qt_5.12.5
if [ -d $QTDIR ];then
export QT_ROOT=$QTDIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:/usr/lib/cedarx/:$LD_LIBRARY_PATH
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_QPA_FONTDIR=$QT_ROOT/fonts
export QML_IMPORT_PATH=$QTDIR/qml
export QML2_IMPORT_PATH=$QTDIR/qml
#TouchDevice=gt9xxnew_ts
for InputDevices in /sys/class/input/event*
do
DeviceName=`cat $InputDevices/device/name`
# USB ILITEK
if [[ "$DeviceName" == "ILITEK ILITEK-TP" ]];then
TouchDeviceNum=${InputDevices##*event}
# export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event$TouchDeviceNum
# echo "add "/dev/input/event$TouchDeviceNum "to Qt Application."
break
# I2C Goodix
elif [ "$DeviceName" == "gt9xxnew_ts" ];then
TouchDeviceNum=${InputDevices##*event}
# export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event$TouchDeviceNum
# echo "add "/dev/input/event$TouchDeviceNum "to Qt Application."
break
#for hid-multi-touch(wks)
elif [[ "$DeviceName" == "wch.cn USB2IIC_CTP_CONTROL" ]];then
TouchDeviceNum=${InputDevices##*event}
# export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event$TouchDeviceNum
# echo "add "/dev/input/event$TouchDeviceNum "to Qt Application."
break
fi
done
if [ ! -n "$TouchDeviceNum" ]; then
export QT_QPA_GENERIC_PLUGINS=evdevmouse,evdevkeyboard
echo "Error:Input device $TouchDevice can not be found,plz use mouse & keyboard!"
else
#config for lvgl touchscreen lv_drv_conf.h
ln -sf /dev/input/event$TouchDeviceNum /dev/input/touchscreen
export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event$TouchDeviceNum
export QT_QPA_GENERIC_PLUGINS=evdevtouch:/dev/input/event$TouchDeviceNum,evdevmouse,evdevkeyboard
echo "add "/dev/input/event$TouchDeviceNum "to Qt Application."
fi
export QT_QPA_PLATFORM=linuxfb
# export QT_QPA_GENERIC_PLUGINS=evdevtouch
#export QT_QPA_EGLFS_INTEGRATION=eglfs_mali
#export QT_QPA_FB_HIDECURSOR=1
#export QT_QPA_EGLFS_HIDECURSOR=1
#export QT_QPA_EGLFS_ROTATION=90
export QT_QPA_FB_NO_LIBINPUT=1
#export QT_QPA_PLATFORM=eglfs
#export QT_QPA_GENERIC_PLUGINS=evdevtouch
#export QT_QPA_EGLFS_INTEGRATION=eglfs_mali
#export QT_QPA_FB_HIDECURSOR=1
#export QT_QPA_EGLFS_HIDECURSOR=1
#export QT_QPA_EGLFS_ROTATION=90
export QWS_MOUSE_PROTO=
export DBUS_SESSION_BUS_ADDRESS=`cat /tmp/dbusaddr`
mkdir -p /dev/shm
ulimit -c unlimited
echo "find qt5 installed done"
fi
本脚本适配了三款电容式触摸,它们分别是ILITEK ILITEK-TP/gt9xxnew_ts(i2c接口,控制器为gt911等)/wch.cn USB2IIC_CTP_CONTROL(hid-multitouch协议),脚本将自动识别它们其中的某一个。
另外, 我司也为用户提供了qt使用电阻式触摸屏配置脚本qtenv_rtp.sh,脚本内容如下:
点击查看代码
export QTDIR=/usr/local/Qt_5.12.5
if [ -d $QTDIR ];then
export QT_ROOT=$QTDIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:/usr/lib/cedarx/:$LD_LIBRARY_PATH
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_QPA_FONTDIR=$QT_ROOT/fonts
TouchDevice=sunxi-ts
for InputDevices in /sys/class/input/input*
do
DeviceName=`cat $InputDevices/name`
if [ $DeviceName == $TouchDevice ];then
TouchDeviceNum=${InputDevices##*input}
#export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event$TouchDeviceNum
echo "add "/dev/input/event$TouchDeviceNum "to Qt Application."
break
fi
done
if [ ! -n "$TouchDeviceNum" ]; then
echo "Error:Input device $TouchDevice can not be found,plz check it!"
fi
export QT_QPA_PLATFORM=linuxfb
#export QT_QPA_GENERIC_PLUGINS=evdevtouch
#export QT_QPA_EGLFS_INTEGRATION=eglfs_mali
#export QT_QPA_FB_HIDECURSOR=1
#export QT_QPA_EGLFS_HIDECURSOR=1
#export QT_QPA_EGLFS_ROTATION=90
export QWS_MOUSE_PROTO=
#export DBUS_SESSION_BUS_ADDRESS=`cat /tmp/dbusaddr`
mkdir -p /dev/shm
ulimit -c unlimited
echo "find qt5 installed done"
fi
另外,要使用电阻式触摸屏,务必通过tslib的工具对电阻式触摸屏进行校正,校正后方可使用。校正前,请务必先检查/etc/profile.d目录下存在有tslib.sh脚本,它是 tslib工作的环境变量,该脚本会在系统启动后自动执行,tslib.sh脚本内容如下:
点击查看代码
#!/bin/sh
if [ -e /dev/input/touchscreen0 ]; then
TSLIB_TSDEVICE=/dev/input/touchscreen0
export TSLIB_TSDEVICE
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_TSEVENTTYPE=input
fi
这些变量解析如下:
点击查看代码
#TSLIB
export TSLIB_TSDEVICE=/dev/input/touchscreen0 # 指定触摸屏设备
export TSLIB_CALIBFILE=/etc/pointercal # 指定触摸屏校准文件pointercal存放位置
export TSLIB_CONFFILE=/etc/ts.conf # 指定TSLIB配置文件的位置
export TSLIB_PLUGINDIR=/usr/lib/ts # 指定触摸屏插件所在路径
export TSLIB_FBDEVICE=/dev/fb0 # 指定帧缓冲设备

浙公网安备 33010602011771号