主题 : Fedora12下搭建Qt Creator的ARM开发环境 并 移植Qt4.6.2到Micro2440(三) 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 13658
精华: 2
发帖: 59
金钱: 400 两
威望: 80 点
贡献值: 2 点
综合积分: 158 分
注册时间: 2010-01-27
最后登录: 2022-01-21
楼主  发表于: 2010-12-16 23:04

 Fedora12下搭建Qt Creator的ARM开发环境 并 移植Qt4.6.2到Micro2440(三)

半年多没有碰嵌入式了,最近有点时间玩玩……解决了几个留下的问题。

首先要说明一下,这次用的是Qt4.6.3。本来打算移植一下Qt4.7来着,发现移植后有段错误,上网查说是Qt的问题,也就没有搞了,再者友善提供的4.4.3工具说是解决了段错误的问题但我移植时还是有,不知是哪里的问题,没再研究,所以还用arm920t-eabi.tgz(即arm-linux-gcc-4.1.2)。

移植Qt4.6.3用的配置是
./configure -prefix /usr/local/Qt-4.6.3-arm -opensource -confirm-license -debug-and-release -shared -embedded arm -xplatform qws/linux-arm-g++ -depths 16,18,24 -qt-gfx-transformed -fast -optimized-qmake -pch -qt-sql-sqlite -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -little-endian -host-little-endian -no-qt3support -no-libtiff -no-libmng -no-opengl -no-mmx -no-sse -no-sse2 -no-3dnow -no-openssl -no-webkit -no-phonon -no-nis -no-opengl -no-cups -no-glib -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-separate-debug-info -nomake examples -nomake demos -nomake tools -nomake docs -qt-kbd-tty -qt-kbd-linuxinput -qt-mouse-pc -qt-mouse-linuxtp -qt-mouse-linuxinput -qt-mouse-qvfb -qt-mouse-tslib

这里纠正一下,在前面的文章里面说过,将/usr/local/tslib 中的库复制到/opt/FriendlyARM/mini2440/root_qtopia/usr/local中。其实这里是把tslib这个文件夹复制过去,当然里面一些没有用的东东可以裁减的,可以参考友善根文件。

这里用的还是友善的root_qtopia-20100108.tar.gz这个根文件系统。将其减压放到了/root/tmp/rootfs_qtopia_qt4目录,这与前面的文章有所不同。

8、配置触摸屏,解决字体小的问题
8.1、修改rcS文件,屏蔽qtopia的启动。
用gedit打开/root/tmp/rootfs_qtopia_qt4/etc/init.d目录下rcS文件
找到/bin/qtopia &
将其改成#/bin/qtopia &
8.2、修改profile文件,配置系统。
用gedit打开/root/tmp/rootfs_qtopia_qt4/etc目录下profile文件
将其改为
# Ash profile
# vim: syntax=sh

# No core files by default
ulimit -S -c 0 > /dev/null 2>&1

USER="`id -un`"
LOGNAME=$USER
PS1='[\u@\h \W]\# '
PATH=$PATH

HOSTNAME=`/bin/hostname`

export USER LOGNAME PS1 PATH

export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CONFFILE=/usr/local/tslib/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/local/tslib/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export QTDIR=/usr/local/Qt-4.6.3-arm
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH
export QWS_MOUSE_PROTO="Tslib:/dev/input/event0 IntelliMouse:/dev/input/mice"

export QWS_DISPLAY="LinuxFb:mmwidth128:mmHeight128:0"

export QWS_KEYBOARD=TTY:/dev/tty1

export HOME=/root
其中
export QWS_MOUSE_PROTO="Tslib:/dev/input/event0 IntelliMouse:/dev/input/mice"配置触摸屏和USB鼠标同时使用。
export QWS_DISPLAY="LinuxFb:mmwidth128:mmHeight128:0"解决屏幕字体小的问题。可以查看Qt文档,了解这个参数的意义和用法。

OK至此,触摸屏、USB鼠标配置完毕,屏幕字体小的问题也解决了。

9、显示中文的问题
9.1、增加中文字体。从windows系统下复制几个你喜欢的中文字体到/root/tmp/rootfs_qtopia_qt4/usr/local/Qt-4.6.3-arm/lib/fonts目录下,如我复制的是windows7下的宋体和黑体字,当然也可以参考网上的文章自己制作字体文件,体积会小很多。
9.2、编写程序是增加中文支持。
在程序原文件main.cpp文件中QApplication a( argc, argv );代码前增加下面三行代码。

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF8"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF8"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF8"));

别忘了#include <QTextCodec>支持。
在程序中含有字符串的地方使用tr()进行翻译即可,如不会请参考帮助文档或google吧。
现在编译一个含有中文的程序试试,因该可以正常显示中文了吧。再编译textedit,打开一份中文文档看,显示也全部正常了。

整个移植先到这里,等啥时搞完内核、文件系统的移植在一起总结一下。对于高手和专注软件开发的人来说我们这些菜菜的移植可能是浪费时间,但我发现通过这些重复的过程使我对很多东西的认识更加深刻了,毕竟,我还很菜……

下一次奉上基于Qt Creator和gdb的远程调试,直接在开发板上运行程序,在电脑上调试,基于现实环境的调试好处多多……
级别: 新手上路
UID: 39462
精华: 0
发帖: 12
金钱: 60 两
威望: 12 点
贡献值: 0 点
综合积分: 24 分
注册时间: 2011-03-09
最后登录: 2011-06-17
1楼  发表于: 2011-04-12 17:08
   帖子很好。。。谢谢。、、
级别: 侠客
UID: 36853
精华: 0
发帖: 73
金钱: 375 两
威望: 75 点
贡献值: 0 点
综合积分: 146 分
注册时间: 2011-01-22
最后登录: 2015-10-15
2楼  发表于: 2012-04-15 19:36
这个帖子居然没有顶上去。。。。。。。。
级别: 新手上路
UID: 93197
精华: 0
发帖: 20
金钱: 100 两
威望: 20 点
贡献值: 0 点
综合积分: 40 分
注册时间: 2013-06-17
最后登录: 2016-03-21
3楼  发表于: 2013-07-01 16:32
好东西,mark一记
级别: 新手上路
UID: 94737
精华: 0
发帖: 5
金钱: 35 两
威望: 7 点
贡献值: 0 点
综合积分: 10 分
注册时间: 2013-07-23
最后登录: 2014-01-22
4楼  发表于: 2014-01-22 10:47
谢谢,见识过啦。