zoukankan      html  css  js  c++  java
  • iTOP-imx6开发板之QtE必备知识介绍

    本节介绍一下用户需要了解的基础知识,包括开机启动脚本、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 卡中的文件。

  • 相关阅读:
    SQL 二进制和字符互转
    拒绝了对对象 'sp_OACreate' (数据库 'mssqlsystemresource',架构 'sys')的 EXECUTE 权限。
    SQL SERVER 正则替换
    SQL SERVER 算法执行效率
    webmin 安装
    MySQL5.6 PERFORMANCE_SCHEMA 说明
    flex 属性
    CSS 实现左侧固定,右侧自适应两栏布局的方法
    项目前端知识点
    为data中的某一个对象添加一个属性不起作用——this.$set的正确使用
  • 原文地址:https://www.cnblogs.com/liyue3/p/13644564.html
Copyright © 2011-2022 走看看