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功能评估图:

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                      # 指定帧缓冲设备
posted @ 2025-08-15 15:14  embfly168  阅读(51)  评论(0)    收藏  举报