QT4.5.3 + Mplayer + tslib 移植到…

QT4.5.3 + Mplayer + tslib 移植到ARM S3C2440  


现在市场上很多嵌入市播放器都是基于Linux 平台 + Mplayer + QT GUI 的组合,开发者可以很方便的开发出界面美观的播放器。本文就以自己写的一个GUI界面+Linux 平台 + QT4.5.3 作为内容分析具体的的移植过程:

在移植之前你必须保证你的开发板子能征程工作,并且是基本与NFS 的文件系统引导。关于怎么利用NFS 来启动ARM板子,请见其他博文:

 

1.安装交叉编译环境:    arm-linux-gcc-4.3.2.tar.bz2

            A:  下载地址:          

            B:   将gcc解压到系统根目录
                      tar xvjf arm-linux-gcc-4.3.2.tar.bz2 -C /         
                     -C / 表示解压在根目录下

                      成功后将会安装在/usr/local/arm/4.3.2目录下
          C:    将gcc的所在路径加入用户的环境路径
          D:     修改用户目录下的 .bash_profile文件,将交叉编译工具的路径加到该文件中

 

              PATH=/usr/local/arm/4.3.2/bin:$PATH:$HOME/bin

         E:  保存.bash_profile 后执行ldconfig 命令让其同步

 

           执行:    which arm-linux-gcc  如果看到下面的提示表示你安装好了

 

              /usr/local/arm/4.3.2/bin/arm-linux-gcc

 

            或者执行: arm-linux-gcc -v  后能看到一下内容表示安装成功

 

               Using built-in specs. Target: arm-none-linux-gnueabi
Configured with: /scratch/julian/lite-respin/linux/src/gcc-4.3/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --enable-shared --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion='Sourcery G++ Lite 2008q3..........................................

gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72) 
  

   

2.安装QT-x11和QT-Embedded

      A : 从Nokia的官方网站上下载 QT-Creator2.0 集成开发环境和QT-Embedded包:

                      a:  qt-sdk-linux-x86-opensource-2009.05.bin

                      b:  qt-embedded-linux-opensource-src-4.5.3.tar.gz

     B: 安装QT-x11

                进入到你下载的目录在控制台下输入:  ./qt-sdk-linux-x86-opensource-2009.05.bin  回车后,就执行安装了,后面的安装和Windows安装一样只要用鼠标点击下一步就可以了。安装完成后在桌面上生成一个QT 图标。双击就打开程序了。 程序在安装的时候建议安装在/opt 目录下。

        第一使用的时候需要配置编译环境, 将下面内容添加到 .bash_profile 文件中,具体方法为:

      开一个控制台后输入:  vim ~/.bash_profile 回车。 按 i 后输入以下内同

             PATH=/opt/QtEmbedded-4.5.3/bin:/usr/qt/qt/bin:$PATH
             QTDIR=/opt/QtEmbedded
             QTDIR=/usr/qt/qt

             export QTDIR
    

    c:  安装QT-Embedded

           由于我们下载的是源码,所以需要自己编译和手动安装,具体步骤为:

              a: 接包QT-Embedded

                      tar -xzvf qt-embedded-linux-opensource-src-4.5.3.tar.gz -C /opt

                           cd   qt-embedded-linux-opensource-src-4.5.3

                 b: 编写脚本文件配置Makefile

                          vim  run.sh

                          添加如下内容:                                   

           (echo o ; echo yes ) |  ./configure -prefix /opt/QtEmbedded-4.5.3  -shared -xplatform qws/linux-arm-g++  -embedded arm -little-endian -qt-gfx-linuxfb -qt-kbd-usb -qt-mouse-tslib  -qt-zlib -qt-freetype -qt-libtiff -qt-libpng -qt-libmng

                     

                  保存退出后修改脚本权限:  chmod 755 run.sh

 

                   c: 运行配置脚本:       ./run.sh

 

                   d: 编译:              gmake

                   e: 安装:              make install

 

     程序会被安装到我们制定的位置: /opt/QtEmbedded-4.5.3

 

  3 添加编译路径到QT-Creator

       tools->options      


   Mplayer tslib  移植到ARM S3C2440" style="WIDTH: 646px; HEIGHT: 383px" height=346 alt="QT4.5.3 Mplayer tslib  移植到ARM S3C2440" src="http://s10.sinaimg.cn/middle/66c86427g849305e14dd9&690" width=690 name=image_operate_16511271666950796 >

  

  以后当你要开ARM 版本的GUI程序的时候你就选QT-Embedded- Linux 编译程序。

 

    QT-Embedded 移植

           A : 在开发板子上发布QT-Embedded 

                在/nsfroot 目录下建立QT-Embedded 库文件目录

                   mkdir  /nsfroot/qte-4.5.3

            B 拷贝我们之前编译的QT-Embedded 库到 该目录

                  cp -r /opt/QtEmbedded-4.5.3/lib  /nsfroot/qte-4.5.3/

            c: 在/nfsroot/opt 目录下建立 QtEmbedded-4.5.3/lib 目录

                  mkdir -p /nfsroot/opt/QtEmbedded-4.5.3/lib

               cp -r /nfsroot/qte-4.5.3/lib/fonts  /nfsroot/opt/QtEmbedded-4.5.3/lib/

          

      5  tslib 库的移植

              下在tslib库(tslib 库是一个开源的触摸屏驱动程序,现在一般都利用这个程序)

      下面我们一起来研究一下具体的移植过程:

          

              A : 下载tslib 库 : tslib-1.4.tar.gz源码包

                    下载地址: http://blog.chinaunix.net/u2/75270/showart_1793535.html

           B:  解压缩包:

                      tar -xzvf tslib-1.4.tar.gz

                      cd   tslib-1.4

            C: 配置Makefile

             ./configure --host=arm-linux -prefix=$PWD/../Arm-output/tslib

--enable-inputapi=no  ac_cv_func_malloc_0_nonnull=yes

 

      其中ac_cv_func_malloc_0_nonnull=yes 是为解决如下编译错误设置的
         ts_test.o: In function `main':
         ts_test.c:(.text+0x1d8): undefined reference to `rpl_malloc'
         fbutils.o: In function `open_framebuffer':
         fbutils.c:(.text+0xa20): undefined reference to `rpl_malloc'
         collect2: ld returned 1 exit status
         --enable-inputapi=no. 是为了解决运行中提示 ts_open:Inappropriate ioctol for devic 它表示即不使用ioctl来控制触摸屏。

    

     D: 编译安装

            make

            make install -strip

     tslib只是应用级的一个程序库,只是用来封装底层的触摸屏驱动的操作,以一个统一接口来给其它应用程序使用.因此tslib正常工作的前提是开发板上的触摸屏驱动能正常工作.另外触摸屏的效果往往需要在LCD上显示,因此tslib也需要开发板上的FrameBuffer驱动正常工作.

              ARM开发板常见的触摸屏驱动分为两大类,一类是模拟HP 3600的调用接口.这类驱动一般使用/dev/h3600_tsraw 的设备结点文件.早期开发板一般都是这一类,    另外一类是采用Linux 2.6 输入设备接口的驱动。这类驱动会将触摸屏驱动设计成一个标准输入事件设备(linux input layer event interface),所有事件输入设备结点命名为/dev/input/eventN (N>=0).  一般都是/dev/input/event0.而且驱动向应用程序发送标准的struct event 结构。  ARM板使用哪种驱动接口.要参考产商的文档或直接查看已经成功的程序使用哪一个    F: 修改触摸屏配置文件      tslib程序在运行的时候是通过打开/关闭ts.conf 配置文件来配置相应的文件,根据我们板子的实际需求我们修改如下:          vim /nfsroot/tslib/etc/ts.conf         

      #ts.conf template

       module_raw input
      #module_raw h3600

      module pthres pmin=1      // Pthres:   为Tslib提供的触摸屏灵敏度门槛插件
      module variance delta=30  // Variance: 为Tslib提供的触摸屏滤波算法插件
      module dejitter delta=100 // Dejitter: 为Tslib提供的触摸屏去噪算法插件
      module linear            // Linear:   为Tslib提供的触摸屏坐标变换插件

              tslib 环境变量的配置                关于环境变量的配置你可以写一个脚本,也可以添加到开机启动文件/nfsroot/etc/profile中.我们这里和QT-Embedded 的环境变量写成一个脚本文件 run.sh (你可以分两个阶段来配置)      AA: 

      #export TSLIB_ROOT=/usr/local/tslib
      export TSLIB_ROOT=/tslib
       #取决具体的设备驱动了,事件驱动用
      export TSLIB_TSDEVICE=/dev/input/event0
      #h3600用如下配置
      #export TSLIB_TSDEVICE=/dev/h3600_tsraw
      #触摸屏定位文件保存位置
     export TSLIB_CALIBFILE=/etc/pointercal
      #tslib配置文件内容
     export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
      #tslib 插件目录 
      export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
     export TSLIB_CONSOLEDEVICE=none
      #LCD设备结点 
     export TSLIB_FBDEVICE=/dev/fb0
      #把libts.so加入动态搜索路径

    

     QT库的支持

     export QTDIR=/qte-4.5.3
     export LD_LIBRARY_PATH=$QTDIR/lib:$TSLIB_ROOT/lib

                exit      // 上面是第一段,你可以测试能不能运行,要是配置成功在开发板上会出现坐标矫正的程序。    以下是第2阶段,你可以单独创建一个脚本放到你要运行的程序目录中    BB:                export TSLIB_ROOT=/tslib              #取决具体的设备驱动了,事件驱动用
              export TSLIB_TSDEVICE=/dev/input/event0
              #h3600 用如下配置
              #export TSLIB_TSDEVICE=/dev/h3600_tsraw
              #触摸屏定位文件保存位置
              export TSLIB_CALIBFILE=/etc/pointercal
              #tslib配置文件内容
              export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
              #tslib 插件目录
              export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
              export TSLIB_CONSOLEDEVICE=none
              #LCD 设备结点
              export TSLIB_FBDEVICE=/dev/fb0
              #把libts.so加入动态搜索路径
              export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib
              #export QWS_KEYBOARD=USB:/dev/input/event1
              export QWS_MOUSE_PROTO=Tslib:/dev/input/event0
              #export QWS_DISPLAY=LinuxFb:mmWidth45:mmHeight60:0
              #export QWS_SIZE=640x480  // 要运行的程序。    ./QPlayer -qws
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值