QT开发环境在mini2440上移植

171 篇文章 0 订阅
54 篇文章 0 订阅

作者:micheal7500

转自:http://blog.chinaunix.net/uid-20539088-id-115752.html


开发环境
    操作系统:  Vmware7.0 + rhel-server-5.3。
    交叉编译器:arm-linux-gcc-4.3.2
    目标板:     mini2440 + 通宝3.5寸屏
前言:
    之前在自己编译的内核和buzybox里面编译好的QT运行不了,提示 Illegal instruction 错误。解决方法见另外一篇“Illegal instruction的解决”。我现在用友善的vivi和zImage内核,友善做好的qtopia根文件系统。
编译之后没有出现Illegal instruction 错误。根据网上的东西,自己做了下QT的移植工作。编译的时间太长了。
   
1、下载源码包:
    在: ftp://ftp.qtsoftware.com/qt/source/下载
    qt-embedded-linux-opensource-src-4.5.2.tar.bz2
    qt-x11-opensource-src-4.5.2.tar.bz2
    在 http://blog.chinaunix.net/u2/86708/showart_1924834.html上下载tslib1.4.tar.gz
2、配置ubuntu 8.04编译环境
    安装g++:  sudo  apt-get g++
    安装编译X11用到的库:sudo apt-get libx11-dev libxext-dev
    安装libxtst-dev: sudo aptitude install libxtst-dev 否则编译qvfb出错。
    这个步骤没有做,我的环境是rhel-server-5.3已经安装了,所以要根据大家的具体环境。
 
3、编译及安装qt-x11-opensource-src-4.5.2
    qt-x11版本可以产生Qt开发工具,如designer、qvfb,嵌入式的开发有了qvfb,就可以不需要实际的开发板,也可以开发Qt应程序。
    tar xjvf qt-x11-opensource-src-4.5.2.tar.bz2
    cd qt-x11-opensource-src-4.5.2
    ./configure
    make
    make install
    历经漫长的编译过程,默认安装在/usr/local/Trolltech/Qt-4.5.2下,编译完成后源程序不要删除,还有用。
4、编译配置QtEmbedded-4.5.2-x86版本
    A、解压
    root@hrixin-desktop:/work/qte# tar xjvf qt-embedded-linux-opensource-src-4.5.2.tar.bz2
    root@hrixin-desktop:/work/qte# mv qt-embedded-linux-opensource-src-4.5.2 qt-embedded-linux-opensource-src-4.5.2-x86
    root@hrixin-desktop:/work/qte# cd qt-embedded-linux-opensource-src-4.5.2-x86
   
    B、配置编译:
    ./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.2-x86 -embedded x86 -qvfb
    root@hrixin-desktop:/work/qte/qt-embedded-linux-opensource-src-4.5.2-x86# make
    C、安装到/usr/local/Trolltech/QtEmbedded-4.5.2-x86目录下:
    root@hrixin-desktop:/work/qte/qt-embedded-linux-opensource-src-4.5.2-x86# make install
   
    D、建立脚本文件:setenv_arm.sh,输入以下内容:
    export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.2-x86/
    export PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-x86/bin/:$PATH
    export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-x86/lib/:$LD_LIBRARY_PATH
   
    E、编译x86版QT应用程序前,先执行此脚本文件:
    root@hrixin-desktop:/usr/local/Trolltech/QtEmbedded-4.5.2-x86# source setenv-x86.sh
   
5、编译安装tslib1.4
    A、安装编译过程需用到的程序
        root@hrixin-desktop:/home/hrixin# apt-get install autoconf(或autoconf2.13)
        root@hrixin-desktop:/home/hrixin# apt-get install automake
        root@hrixin-desktop:/home/hrixin# apt-get install libtool
   
    B、配置编译
        root@hrixin-desktop:/work/qt# tar xzvf tslib-1.4.tar.gz
        root@hrixin-desktop:/work/qt# cd tslib
        生成./configure
        root@hrixin-desktop:/work/qt/tslib# source autogen.sh
        root@hrixin-desktop:/work/qt/tslib# ./configure --prefix=/usr/local/tslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes
        root@hrixin-desktop:/work/qt/tslib# make
    C、安装
        root@hrixin-desktop:/work/qt/tslib# make install-strip //生成瘦身应用程序和库
        打包
        root@hrixin-desktop:/usr/local# tar czvf tslib.tar.gz tslib
    D、复制到NFS文件系统/usr/local目录下解压
        root@hrixin-desktop:/work/root_qtopia/usr/local# tar xzvf tslib.tar.gz
       
    E、设置环境变量,校准触摸屏。
        在天开板终端建立脚本文件,并执行:
        export TSLIB_ROOT=/usr/local/tslib
        export TSLIB_TSDEVICE=/dev/input/event0
        export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
        export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
        export TSLIB_CALIBFILE=/etc/pointercal
        export TSLIB_FBDEVICE=/dev/fb0
        export QWS_MOUSE_PROTO=Tslib:/dev/input/event0
        注意:触摸屏的前提是你的触摸屏驱动已经写好,并加载进了内核.
        你可以测试有没有加载触摸屏驱动,cat /dev/input/event0(这只是我的板子上的触摸屏) ,
        点击触摸屏,看终端有无显示,若有则表明正确。
       
        在开发板/usr/local/tslib/bin目录下执行校准触摸屏程序:
        [root@FriendlyARM bin]# ./ts_calibrate
        可以运行此目录下的其他程序进行测试。
       
    至此,触摸屏程序能顺利运行,接下来移植QtEmbedded-4.5.2,设置好环境变量。
6、编译安装QtEmbedded-4.5.2-arm版本
    A、解压
    root@hrixin-desktop:/work/qte# tar xjvf qt-embedded-linux-opensource-src-4.5.2.tar.bz2
    root@hrixin-desktop:/work/qte# mv qt-embedded-linux-opensource-src-4.5.2 qt-embedded-linux-opensource-src-4.5.2-arm
    root@hrixin-desktop:/work/qte# cd qt-embedded-linux-opensource-src-4.5.2-arm
    B、配置编译:
    ./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.2-arm -embedded arm \
    -release -shared -fast -no-largefile -qt-sql-sqlite -no-qt3support -no-xmlpatterns -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg -no-webkit -qt-zlib -qt-gif \
    -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -make libs -nomake tools -nomake examples -nomake docs -nomake demo -no-nis -no-cups -no-iconv -no-dbus \
    -no-openssl -xplatform qws/linux-arm-g++ -little-endian -qt-freetype -depths 16,18 -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-multiscreen \
    -no-gfx-vnc -no-gfx-qvfb -qt-kbd-usb -no-glib -qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib
    注意这个目录要跟你的tslib安装目录相同!!!
    root@hrixin-desktop:/work/qte/qt-embedded-linux-opensource-src-4.5.2-arm# make
   
    C、安装到/usr/local/Trolltech/QtEmbedded-4.5.2-arm目录下:
    root@hrixin-desktop:/work/qte/qt-embedded-linux-opensource-src-4.5.2-arm# make install
    D、打包编译安装好的QtEmbedded库文件:
    root@hrixin-desktop:/usr/local/Trolltech# tar czvf QtEmbedded-4.5.2-arm.tar.gz QtEmbedded-4.5.2-arm
    E、建立脚本文件:setenv_arm.sh,输入以下内容:
    export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.2-arm/
    export PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-arm/bin/:$PATH
    export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-arm/lib/:$LD_LIBRARY_PATH
   
    F、编译ARM版QT应用程序前,先执行此脚本文件:
    root@hrixin-desktop:/usr/local/Trolltech/QtEmbedded-4.5.2-arm# source setenv-arm.sh
7、在主机上建立NFS启动根文件系统,把编译好的库文件复制到相关目录下。
    A、文件系统目录为:/work/root_qtopia/,修改rcS
    [root@FriendlyARM /]# vi /etc/init.d/rcS
    #/bin/qtopia &
   
    建立Trolltech目录:
    root@hrixin-desktop:/work/root_qtopia/usr/local# mdkir Trolltech
   
    B、把打包好的库文件:QtEmbedded-4.5.2-arm.tar.gz复制到/work/root_qtopia/usr/local/Trolltech目录下
    root@hrixin-desktop:/work/root_qtopia/usr/local/Trolltech# tar xzvf QtEmbedded-4.5.2-arm.tar.gz
    root@hrixin-desktop:/work/root_qtopia/usr/local/Trolltech# cd QtEmbedded-4.5.2-arm/
   
    C、复制5-F中编译好的calculator可执行文件到此目录下:
    root@hrixin-desktop:/work/root_qtopia/usr/local/Trolltech/QtEmbedded-4.5.2-arm# cp /work/qt/qt-embedded-linux-opensource-src-4.5.2-arm/examples/widgets/calculator/calculator ./
    D、建立脚本文件
    root@hrixin-desktop:/work/root_qtopia/usr/local/Trolltech/QtEmbedded-4.5.2-arm# gedit setenv.sh
    输入以下内容:(把设置tslib环境变量的脚本文件内容,也添加进来)
        #!/bin/sh
        export TSLIB_ROOT=/usr/local/tslib
        export TSLIB_TSDEVICE=/dev/input/event0
        export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
        export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
        export TSLIB_CALIBFILE=/etc/pointercal
        export TSLIB_FBDEVICE=/dev/fb0
        export QWS_MOUSE_PROTO=Tslib:/dev/input/event0
        export QTDIR=/usr/local/Trolltech/QtEmbedded-4.5.2-arm
        export QPEDIR=/usr/local/Trolltech/QtEmbedded-4.5.2-arm
        export LD_LIBRARY_PATH=$QTDIR/lib:$TSLIB_ROOT/lib:/usr/local/lib:$LD_LIBRARY_PATH
   
    E、至此,主机上的文件系统已经配置好,开板通过NFS挂载到此文件系统启动。
    启动后,开发板串口终端执行刚才的脚本文件(通过NFS启动,执行脚本文件未成功),设置好环境变量。
    检查环境变量是否成功:
    [root@FriendlyARM QtEmbedded-4.5.2-arm]# echo $QTDIR
    /usr/local/Trolltech/QtEmbedded-4.5.2-arm
    成功!
    如果没有输出,则失败。同样的方法检查其他两个环境变量。
   
    F、运行calculator
    [root@FriendlyARM QtEmbedded-4.5.2-arm]# ./calculator -qws &

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Qt上实现mini2440的IIC,你需要进行以下步骤: 1. 安装Qt开发环境和交叉编译工具链,以便能够将程序编译成可在mini2440上运行的二进制文件。 2. 在Qt中创建一个新的项目,并将其配置为使用交叉编译工具链。 3. 编写代码来初始化mini2440的IIC控制器,并设置从机地址、传输速率等参数。 4. 在代码中使用Qt的串口通信库来进行IIC数据传输,并将读取到的数据显示在Qt的界面上。 下面是一个简单的示例程序,演示如何在Qt中实现mini2440的IIC: ```cpp #include <QCoreApplication> #include <QSerialPort> #include <QDebug> #define IIC_BUS "/dev/i2c-0" #define IIC_ADDRESS 0x50 int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 初始化串口 QSerialPort serialPort; serialPort.setPortName(IIC_BUS); serialPort.setBaudRate(QSerialPort::Baud115200); serialPort.setDataBits(QSerialPort::Data8); serialPort.setParity(QSerialPort::NoParity); serialPort.setStopBits(QSerialPort::OneStop); serialPort.setFlowControl(QSerialPort::NoFlowControl); // 打开串口 if (!serialPort.open(QIODevice::ReadWrite)) { qDebug() << "Failed to open serial port"; return 1; } // 初始化IIC控制器 char initCmd[] = {0x00, 0x01, 0x02, 0x03}; if (serialPort.write(initCmd, sizeof(initCmd)) < 0) { qDebug() << "Failed to initialize IIC controller"; return 1; } // 设置从机地址 char setAddrCmd[] = {0x10, IIC_ADDRESS}; if (serialPort.write(setAddrCmd, sizeof(setAddrCmd)) < 0) { qDebug() << "Failed to set IIC address"; return 1; } // 读取数据 char readCmd[] = {0x20, 0x00, 0x00}; if (serialPort.write(readCmd, sizeof(readCmd)) < 0) { qDebug() << "Failed to send read command"; return 1; } char buffer[256]; if (serialPort.read(buffer, sizeof(buffer)) < 0) { qDebug() << "Failed to read data"; return 1; } // 显示读取到的数据 qDebug() << "Read data:" << buffer; // 关闭串口 serialPort.close(); return a.exec(); } ``` 注意,这只是一个简单的示例程序,并且假设你已经正确地配置了Qt的交叉编译环境和mini2440的硬件环境。在实际使用中,你需要根据实际情况进行更多的调试和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值