05-SA8155 QNX Hypervisor MultiTouch多点触摸

1. 前言

Hypervisor多点触摸涉及多个系统多个显示子系统。

多系统:QNX + Android + Linux

多显示子系统:驾驶屏 + 副驾驶 + 控制屏 + 后座屏 + 其他.....

可以用不同技术方案实现。

2. 技术点

2.1 Virtio(vdev)

不做详细介绍

2.1.1 Virtio-i2c

参考文章:QNX Hypervisor Virtio-i2c

不做详细介绍

2.1.2 Virtio-input

技术点与virtio-i2c类似

不做详细介绍

2.1.3 配置

QVM虚拟机参考配置如下:

GVM端内核DTS参考配置:

 

 
 
2.1.4 Qnx mtouch

QNX独有的多点触控设备管理

配置文件:/etc/system/config/mtouch_xxxx.conf

begin mtouch
    driver = hid //驱动类型
    options = vid=0x1391,did=0x2112,width=1280,height=720,max_touchpoints=5
    display = 1 //屏ID
end mtouch

启动:在/scripts/startup.sh中启动

MTOUCH_CONF=/etc/system/config/mtouch.conf
CALIB_CONF=/etc/system/config/calib.conf
chmod a+w /etc/system/config
 

$ON $MTOUCH_ON_ARGS  mtouch -c $MTOUCH_CONF &
if [ $? -eq 0 ]
then
        log_ready "mtouch"
else
        echo "mtouch failed."
fi
$ON $CALIB_TOUCH_ON_ARGS  calib-touch -config-file=$CALIB_CONF &

 

2.2 Pass-Through(直通)

不做详细介绍

参考文章:QNX Hypervisor passthrough

3. 方案

3.1 GVM实现所有触控 //一体化设备

如果触控操作都是GVM渲染实现(主驾屏,副驾屏等),则可以采用直通模式,将屏触控I2C通过直通模式实现input touchscreen方案,直通模式同时也拥有较高的工作效率。

3.2 分体设备(Ser/DeSer 与 触控IC共一个I2C)

QNX Hypervisor 显示部分(BE)由QNX处理即PVM处理,GVM(Android)端是FE端,负责显示数据绘制,将绘制好的的数据发送给BE端进行渲染显示。

详细可以参考文章:QNX Hypervisor显示

这种情况多屏多点触摸屏该如何实现?

3.2.1 virtio-i2c

 参考文章:QNX Hypervisor Virtio-i2c

依据之前写的文章可以看出,虚拟I2C情况下,PVM(QNX)以及GVM(Android)其实均可以访问I2C设备的。因此可以采用虚拟I2C方案,将touchscreen驱动放置在GVM(Android)。

3.2.1 virtio-input

TODO

这种方案就是将touchscreen驱动放在QNX实现,通过virtio-input在GVM(Android)实现多个触摸输入设备。经过mtouch配置给不同的显示屏/ 同时也可以通过virtio-input 在GVM绑定不同的显示屏。 

 

4. 实操

TODO 


版权声明:本文为liaochaoyun原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。