嵌入式学习小组
直播中

范云力

7年用户 201经验值
私信 关注

qt4文件的移植和修改

本节介绍一下用户需要了解的基础知识,包括开机启动脚本、qt4 的修改、触摸和鼠标库等。

回帖(3)

刘满贵

2020-12-30 14:55:24
  开机启动脚本
  开机启动脚本文件是“/etc/init.d/rcS”,大部分操作系统都有类似的文件。该文件中的代码属于脚本语言,比较容易理解。
  下面截取有代表性的分析一下。注意,下面的代码行数可能和用户的不能直接对应,这里并不影响用户学习,这里主要是了解整个启动流程,以及在启动过程中,都做了哪些事情。
  01 #! /bin/sh
  02 PATH=/***in:/bin:/usr/***in:/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 /***in/mdev -s
  24 /bin/hotplug
  39 ln -sf /dev/ttyS2 /dev/tty2
  43 amixer cset numid=5 127
  50 /***in/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 /***in/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”,屏幕才能显示。
  注意,脚本命令比较容易理解,通过本节的分析,相信用户已经具备了一定的阅读脚本代码的能力,在手册后面部分,脚本命令就不给大家做详细的分析了。大家只需要在遇到脚本命令的时候去学习即可,这里只是学习和理解脚本文件的一个引子。
举报

王思敏

2020-12-30 14:55:42
  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”,红色框中的代码记得注释或者删除。
  
举报

王晋

2020-12-30 14:55:53
  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 卡中的文件。
  
举报

更多回帖

发帖
×
20
完善资料,
赚取积分