发 帖  
原厂入驻New

[经验] iTOP-imx6开发板之QtE必备知识介绍

2020-9-10 11:39:51  56 IMX6
分享
0
本节介绍一下用户需要了解的基础知识,包括开机启动脚本、qt4 的修改、触摸和鼠标库等。

1.开机启动脚本
开机启动脚本文件是“/etc/init.d/rcS”,大部分操作系统都有类似的文件。该文件中的代码属于脚本语言,比较容易理解。
下面截取有代表性的分析一下。注意,下面的代码行数可能和用户的不能直接对应,这里并不影响用户学习,这里主要是了解整个启动流程,以及在启动过程中,都做了哪些事情。
01 #! /bin/sh
02 PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:
03 runlevel=S
04 prevlevel=N
05 umask 022
06 export PATH runlevel prevlevel
代码分析
01 #! /bin/sh 是指此脚本使用/bin/sh 来解释执行,#!是特殊的表示符,后面是解释此脚本的 shell 的路径。
02 PATH=XX 是设置默认的有效执行路径,代表 root 根目录下的路径。
03 这里是设置用户等级,这里默认为单用户。(用户记不记得,Linux 是多用户的)
04 表示用户创建的新文件权限为 755
05 设置环境变量(和搭建编译环境时修改 Ubuntu 的环境变量类似)
12 /bin/hostname iTOP-4412
14 #/bin/mount -n -t proc none /proc
23 /sbin/mdev -s
24 /bin/hotplug
39 ln -sf /dev/ttyS2 /dev/tty2
43 amixer cset numid=5 127
50 /sbin/hwclock -s -f /dev/rtc
52 syslogd
12 设置主机名称为 iTOP-4412,在这里用户可以修改为自己的名称。
14 使用 mount 命令设置常用临时目录
23 mdev 命令自动产生驱动所需的节点文件
24 hotplug 挂载 USB 设备
39 ln 命令建立链接
43 amixer 设置音频的参数
50 hwclock 设置时钟
52 syslogd 记录系统运行的各种讯息
53 /etc/rc.d/init.d/netd start
……
81 /sbin/ifconfig lo 127.0.0.1
……
87 echo "Starting Qtopia4, please waiting..."
启动各种服务程序
ifconfig 配置网络
echo 命令向输出终端打印信息
89 #/bin/qtopia &
“#”就是注释掉这一行,“&”表示在后台运行
91 /bin/helloworld -qws &
表示运行“helloworld”的时候,QWS 功能启动,“QWS”是 QT 的窗口系统,也就是需要加上“-qws”,屏幕才能显示。

注意,脚本命令比较容易理解,通过本节的分析,相信用户已经具备了一定的阅读脚本代码的能力,在手册后面部分,脚本命令就不给大家做详细的分析了。大家只需要在遇到脚本命令的时候去学习即可,这里只是学习和理解脚本文件的一个引子。

2. qt4 文件的移植和修改(鼠标触摸以及字体)
在 7.4 小节介绍配置文件的时候,提到迅为制作的触摸库文件“/usr/local/tslib”,迅为已经将触摸功能编译到 Qt/E4.7.1 的库文件中,开发板可以支持触摸和鼠标功能。
用户在前面运行 helloworld 的时候,会发现触摸和鼠标似乎无法使用,但是在 qt4 中却能使用触摸和鼠标。

这一小节就介绍如何将 qt4 的触摸功能移植到应用程序 helloworld 中。
如下图,打开“etc/init.d/rcS”文件,将最后一行修改为“/bin/qt4_shell &”,这样在开机之后系统会运行 qt4.shell 程序。修改完成之后,保存退出。

然后使用命令“#cp -r bin/qt4 bin/qt4.shell”将“bin/qt4”文件拷贝生成“bin/qt4.shell”文件,如下图所示。
然后打开“bin/qt4.shell”文件,如下图所示。
代码“export TSLIB_ROOT=/usr/local/tslib”等调用了触摸和鼠标驱动。
代码“export QTDIR=/opt/qt-4.7.1/”调用了 QtE 的库。
如下图所示,这一段关于鼠标的驱动已经被注释掉了。

将上图中与触摸鼠标相关代码修改为下面的代码。
if [! -c /dev/input/event2 ]; then
export QWS_MOUSE_PROTO='Tslib:/dev/input/event2'
#if [ -e /etc/pointercal -a ! -s /etc/pointercal ] ; then
if [ -e /etc/pointercal ] ; then
fsize=$(/bin/ls -al /etc/pointercal | cut -d' ' -f 23)
echo $fsize
#if [ -s /etc/pointercal ]; then
if [ $fsize -ge "1" ]; then
echo "/etc/pointercal is exit"
else
echo "/etc/pointercal is empty"
rm /etc/pointercal
/usr/local/tslib/bin/ts_calibrate
fi
else
echo "/etc/pointercal not found"
/usr/local/tslib/bin/ts_calibrate
fi
else
export QWS_MOUSE_PROTO="MouseMan:/dev/input/mice"
#>/etc/pointercal
fi
#export QWS_MOUSE_PROTO="Tslib{TSLIB_TSDEVICE}"
#/usr/local/tslib/bin/ts_calibrate
上面代码第一行,有“!”则支持鼠标;触摸应该不能正常使用。
如果去掉“!”则支持触摸。需要先校准,使用上面这段代码只用校准一次即可,不用每次都校验。
另外如果用户在第一次校准的时候,没有依次点击“十字框”,则触摸文件可能有问题,那么可以参考 7.3.3 小节,删除掉“/etc/point*”文件,重启开发板再次校准。
修改这段代码之后,最好删除一下“/etc/point*”文件。例如,如果用户刚开始使用的是触摸,然后改成鼠标控制,因为已经存在“/etc/point*”文件,所以会让人感觉鼠标可以使用,触摸能够使用但是有问题,这个时候删除“/etc/point*”文件重启即可。
如下图所示,接着找到控制字体的参数。
如上图,将下面三行删除,避免字体太大导致显示不正常。
*)
export QWS_display="LinuxFb:mmWidth91:mmHeight53:1"
;;
如下图所示,进入最后一行,红色框默认会启动 QtE 自带的例程,这里修改为
“./bin/helloworld -qws”,红色框中的代码记得注释或者删除。


3.qt 挂载盘符
linux QT 系统下挂载 u 盘
如下图所示,qt 启动之后,在超级终端中使用命令“mknod /dev/sda1 b 8 1”创建 U盘的设备节点,如下图所示。

插入 U 盘之后,如下图所示插入 U 盘之后会弹出加载信息。

在超级终端中使用命令“mount /dev/sda1 /mnt/udisk/”即可挂载 U 盘。

如下图所示。使用查找命令“ls /mnt/udisk”,可以看到 U 盘中的内容。下图中绿色文件是作者在 U 盘中建的一个小文件,这里可以看到。

linux QT 系统下挂载 tf 卡
如果用户使用的是 tf 卡,如下图所示,tf 卡插入 tf 卡槽之后会弹出下面的信息。

如下图所示,先使用命令“midir /mnt/udisk1”,使用加载 tf 卡的命令“mount/dev/mmcblk1p1 /mnt/udisk1”,p1 是上面开发板识别出来的编号,要根据实际情况修改。

然后使用查找命令“ls /mnt/udisk1”,可以看到 tf 卡中的文件。



评论

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发经验
关闭

站长推荐 上一条 /9 下一条

快速回复 返回顶部 返回列表