历史上的今天
返回首页

历史上的今天

今天是:2024年12月21日(星期六)

2020年12月21日 | Qt 5.5.0-成功移植到TQ210

2020-12-21 来源:eefocus

一、需要准备的资源下载链接地址:

1、ubuntu-14.04.3-desktop-amd64+mac.iso:
http://cdimage.ubuntu.com/releases/
2、qt-everywhere-opensource-src-5.5.0.tar.gz:
http://mirrors.ustc.edu.cn/qtproject/official_releases/qt/
3、最新交叉编译器下载地址(本人使用的是天嵌提供的编译器:arm-linux-gcc:4.4.6 (for TQ210 EmbedSky Tech)): http://www.veryarm.com/arm-none-linux-gnueabi-gcc
4、Ubuntu-14.04下安装:qt-opensource-linux-x64-android-5.5.0-2.run的下载地址:
http://mirrors.ustc.edu.cn/qtproject/official_releases/qt/
5、安装tslib——下载地址:  http://sourceforge.net/projects/tslib.berlios/files/
声明——参见网友的友情链接地址:移植Qt-5.5.0到ARM Cortex-A8:
http://blog.csdn.net/clannadzy/article/details/46896425
Qt5.5.0编译移植到Linux-Arm-A9: http://www.bubuko.com/infodetail-951000.html
移植qt5.3.1到arm:
http://blog.csdn.net/zhx6044/article/details/38373687

第一个需解决的问题——安装教程编译环境后的问题:交叉编译器的问题(Ubuntu-14.04-64位)
安装天嵌交叉编译环境参见天嵌的手持
root@ubuntu:/work#arm-linux-gcc -v
bash: /opt/EmbedSky/4.4.6/bin/arm-linux-gcc: No such file or directory
解决方法:
root@ubuntu:/work#sudo apt-get install lib32z1

二、配置编译tslib
网上说的tslib1.4其实就是tslib1.0,这个工具比较小,配置一下后直接编译就行了。
root@ubuntu:/work#tar -xvjf tslib-1.0.tar.bz2
root@ubuntu:/work#cd tslib-1.0
root@ubuntu:/work/tslib-1.0#./autogen.sh —可能的问题解决方法:(1)、问题
root@ubuntu:/work/tslib-1.0#./configure --host=arm-linux ac_cv_func_malloc_0_nonnull=yes --prefix=/opt/tslib-1.0
root@ubuntu:/work/tslib-1.0#make——可能会出现的问题解决方法:(2)、问题
root@ubuntu:/work/tslib-1.0#make install
(1)、问题:——编译ts_lib-1.0是出现的问题
./autogen.sh: 4: autoreconf: not found
在不同版本Ubuntu的 tslib 下执行 autogen.sh 产生。它们产生的原因一样,是
因为没有安装automake 工具, (ubuntu 14.04)用下面的命令安装好就可以了。
root@ubuntu:/work/tslib-1.0#sudo apt-get install autoconf automake libtool
(2)、问题:——在make时出错,提示
In function ‘open’,
inlined from ‘main’ at ts_calibrate.c:229:11:
/usr/include/bits/fcntl2.h:51:24: error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments
make[2]: *** [ts_calibrate.o] Error 1
原因:这是因为open函数的语法不符合最新的gcc,
解决方法:在tslib-1.0源码包中tests/ts_calibrate.c中加入open的第三个参数:
#vim tests/ts_calibrate.c
if ((calfile = getenv("TSLIB_CALIBFILE")) != NULL) {
cal_fd = open (calfile, O_CREAT | O_RDWR, 0777);
} else {
cal_fd = open ("/etc/pointercal", O_CREAT | O_RDWR, 0777);
}
——用自己编译安装好的tslib-1.0测试触摸屏:
(1)、修改配置文件ts.conf
修改/opt/tslib-1.0/etc/ts.conf,去掉module_raw input 前面的#号即可,然后把/opt/tslib-1.0里的文件都拷入开发板,比如我放在了/usr/local里。
——拷贝的方法可以参见:三、5、中的工具使用
(2)、配置开发板的环境变量
配置开发板的环境变量,让tslib能正常工作。
修改/etc/profile文件,在添加以下内容:
#vi /etc/profile
export set TSLIB_FBDEVICE=/dev/fb0
export set TSLIB_TSDEVICE=/dev/event3—可能的问题解决方法:(A)、问题
export set TSLIB_CONFFILE=/usr/local/etc/ts.conf
export set TSLIB_CALIBFILE=/etc/pointercal
export set TSLIB_PLUGINDIR=/usr/local/lib/ts
保存退出,运行source命令使之生效
#source /etc/profile
(A)、问题:——不知道使用哪个为准确的event2、event3、event4 ?:
解决方法在板子上:cat etc/profile
见图1:



从图一中自己发现的1、2的端倪——真正的解决方式是:
[root @EmbedSky  /]#cat tpm/env
ts=3
Pointer=
我的板子上使用的:export set TSLIB_TSDEVICE=/dev/event3

我最终测试tslib的最终环境变量的配置是:
# Ash profile 
# vim: syntax=sh
# No core files by default
#ulimit -S -c 0 > /dev/null 2>&1
source /tmp/env
export set HOME=/root
export set TSLIB_FBDEVICE=/dev/fb0
export set TSLIB_TSDEVICE=/dev/event3
export set TSLIB_CONFFILE=/usr/local/etc/ts.conf
export set TSLIB_CALIBFILE=/etc/pointercal
export set TSLIB_PLUGINDIR=/usr/local/lib/ts
export PATH=$QTDIR/bin:$PATH
USER="`id -un`"
LOGNAME=$USER
PS1='[u@h W]# '
PATH=$PATH
HOSTNAME=`/bin/hostname`
export USER LOGNAME PS1 PATH
(3)、运行检测
/usr/local/bin中的ts_calibrate进行校准,成功的话会出现界面,并让你点击十字符号,完成后会生成/etc/pointercal文件,这是触摸屏的校准配置文件。如图2、3所示
[root@EmbedSky /]#./usr/local/bin/ts_calibrate
图2:


[root@EmbedSky /]#./usr/local/bin/ts_test
图3:



三、交叉编译配置ARM版本的Qt 5.5.0库过程、与问题的解决
1、解压Qt 5.5.0,和修改qmake.config文件
root@ubuntu:/work#tar -zxvf qt-everywhere-opensource-src-5.5.0.tar.gz
修改:qmake.config文件
root@ubuntu:/work/qt-everywhere-opensource-src-5.5.0#gedit qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
结果:
#
# qmake configuration for building with arm-linux-gnueabi-g++
#
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublib

QT_QPA_DEFAULT_PLATFORM = linuxfb 
QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a 
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a 

include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)

# modifications to g++.conf ##使用什么交叉编译器就使用谁的;这里是天嵌的交叉编译器
QMAKE_CC = arm-embedsky-linux-gnueabi-gcc
QMAKE_CXX = arm-embedsky-linux-gnueabi-g++
QMAKE_LINK = arm-embedsky-linux-gnueabi-g++
QMAKE_LINK_SHLIB = arm-embedsky-linux-gnueabi-g++

# modifications to linux.conf
QMAKE_AR = arm-embedsky-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = arm-embedsky-linux-gnueabi-objcopy
QMAKE_NM = arm-embedsky-linux-gnueabi-nm -P
QMAKE_STRIP = arm-embedsky-linux-gnueabi-strip
load(qt_config)

2、修改:qt.pro文件
root@ubuntu:/work/qt-everywhere-opensource-src-5.5.0# gedit qt.pro 
结果:去屏蔽掉下面两行
#addModule(qt3d, qtdeclarative qtimageformats)
#addModule(qtcanvas3d, qtdeclarative)
原因:
qt3d和qtcanvas3d在编译的时候会报错,说是未识别模块,而且嵌入式的没有opengl,识别了也会报错,导致编译失败,而且编译配置参数里面也没有这两个模块的配置。方法是在配置时参数加-no-opengl,然后打开qt-everywhere-opensource-src-5.5.0/qt.pro文件,找到:
addModule(qt3d, qtdeclarative qtimageformats)
addModule(qtcanvas3d, qtdeclarative)
这两行注释掉(#号注释),或者直接删掉。如果不注释掉,即使加了-no-opengl也会报错,编译失败。

3、配置工程:执行./configure文件
root@ubuntu:/work/qt-everywhere-opensource-src-5.5.0#./configure -release -opensource -confirm-license -plugin-sql-sqlite -no-opengl -no-dbus -no-c++11 -no-tslib -qt-libjpeg -qt-libpng -qt-zlib -xplatform linux-arm-gnueabi-g++ -no-openssl -alsa -no-iconv -prefix /opt/Qt-5.5.0-arm/

4、编译安装:make && make install
root@ubuntu:/work/qt-everywhere-opensource-src-5.5.0#make && make install
大约两个多小时时间
我的编译安装目录是:(./configure 时:-prefix /后面的目录) /opt/Qt-5.5.0-arm/
然后将/opt/Qt-5.5.0-arm/文件夹下的lib,plugin和include拷贝到你想放置的地方,我放置在TQ210板子的opt/目录下。

5 、Ubuntu和Windows之间的文件拷贝方法
(1)、使用工具使用SCP登录Ubuntu 14.04拒绝访问的话
解决方法:sudo apt-get install openssh-server
可以使用工具是:winscp570setup.exe
——使用这个工具的SCP可以直接登录Ubuntu方便文件拷贝:拷贝文件是先将要拷贝的文件夹使用:chmod 777 /work/tslib 1.0 -R 设置最高权限
(2)、使用Samba实现文件共享也是很好的方法

6、配置自己编译的最新Qt 5.5.0环境变量的结果是:
# Ash profile 
# vim: syntax=sh
# No core files by default
#ulimit -S -c 0 > /dev/null 2>&1
source /tmp/env
export set HOME=/root
export set TSLIB_FBDEVICE=/dev/fb0
export set TSLIB_TSDEVICE=/dev/event3
export set TSLIB_CONFFILE=/usr/local/etc/ts.conf
export set TSLIB_CALIBFILE=/etc/pointercal
export set TSLIB_PLUGINDIR=/usr/local/lib/ts

export set QTDIR=/opt/Qt-5.5.0-arm
export set QPEDIR=/opt/Qt-5.5.0-arm
export set TSLIB_ROOT=/usr
export set LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib
export set QWS_MOUSE_PROTO=tslib:/dev/touchscreen
export set LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:$QTDIR/lib:$LD_LIBARAY_PATH
#export set QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins
export set QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export set QT_QPA_FONTDIR=$QTDIR/lib/fonts
#export set QT_QPA_GENERIC_PLUGINS=tslib ——可能的问题:(1)、问题
export set QT_QPA_GENERIC_PLUGINS=evdevtouch:/dev/event3 —同tslib:event3
export PATH=$QTDIR/bin:$PATH
USER="`id -un`"
LOGNAME=$USER
PS1='[u@h W]# '
PATH=$PATH
HOSTNAME=`/bin/hostname`
export USER LOGNAME PS1 PATH
(1)、问题
-no-tslib,表示不把tslib作为input库,此时触摸屏默认以evdev作为input库,所以移植完过后在开发板的/etc/profile文件中添加:
export QT_QPA_GENERIC_PLUGINS=evdevtouch:/dev/event0
如果还用tslib,那么就该写成:
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/event0

四、Ubuntu 14.04下安装Linux版的:qt-opensource-linux-x64-android-5.5.0-2.run
1、问题:—Ubuntu 10.04-64位下安装
root@ubuntu:/work# ./qt-opensource-linux-x64-android-5.5.0-2.run 
./qt-opensource-linux-x64-android-5.5.0-2.run: error while loading shared libraries: libX11-xcb.so.1: cannot open shared object file: No such file or directory
解决方法是:
root@ubuntu:/work#sudo apt-get install "^libxcb.*" libx11-xcb-dev libglu1-mesa-dev libxrender-dev
安装完成后:
root@ubuntu:/work# ./qt-opensource-linux-x64-android-5.5.0-2.run 
即可进行安装Qt 5.5.0的安装向导了

2、交叉编译器的问题(Ubuntu-14.04-64位)
声明——参见链接: http://blog.csdn.net/sno_guo/article/details/17059381
root@ubuntu:/work# arm-linux-gcc -v
bash: /opt/EmbedSky/4.4.6/bin/arm-linux-gcc: No such file or directory
解决方法:sudo apt-get install lib32z1

3、Ubuntu-14.04-64位:安装opengl支持(mesa3d),
root@ubuntu:/work#sudo apt-get install mesa-common-dev 

4、(解决)Qt5 Ubuntu找不到-lGL之下
使用Ubuntu 14.04中使用Qt 5.5.0编译时出现:/usr/bin/ld: cannot find -lGL 
友情解决方法链接: http://forum.qt.io/topic/23310/solved-qt5-under-ubuntu-cannot-find-lgl/3
root@ubuntu:/work#sudo apt-get install libglu1-mesa-dev

5、在Ubuntu 14.04下使用Qt Creator 交叉编译测试TQ210上跑Qt 应用程序
如图4、5、6、7、8、9、10、11所示
图4:


图5:


图6:


图7:


图8:


图9:


图10:


图11:


(1)、可能出现的问题是TQ210板子上中文字体显示不出来的问题:接下面友情链接
声明——参见网友的友情链接地址:
Qt5.3.0的安装与测试(交叉编译,用于arm,支持tslib触摸屏)
: http://blog.csdn.net/woshidahuaidan2011/article/details/43604059

6、问题:Ubuntu 14.04中Qt Creator交叉编译ARM程序的时候: arm-embedsky-linux-gnueabi-g++: Command not found
解决方式:
root@ubuntu:/# gedit /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/opt/EmbedSky/4.4.6/bin:/opt/EmbedSky/4.4.6/arm-embedsky-linux-gnueabi/bin"
然后重启系统即可编译ARM版本的软件

五、天嵌的内核问题无法使用触摸屏的解决方法:
(1)、问题:安装了Linux系统后出现无法校准触摸屏;并且退出后也无法使用触摸屏
天嵌官问题链接集合:
http://www.armbbs.net/forum.php?mod=viewthread&tid=19021&extra=page%3D1
Q:2014年3月24号的E8 linux内核不支持电容触摸屏?
A:请查看附件 ,将该附件解压之后会有2个文件——ft5x06_ts.module和zImage.bin;其中zImage.bin是测试镜像,ft5x06_ts.module放到内核源码目录下的/drivers/input/touchscreen目录下(把之前的替换掉),然后把/drivers/input/touchscreen/built-in.o删掉,重新编译一下系统就可以了。

推荐阅读

史海拾趣

华润微(CRMICRO)公司的发展小趣事

华润微一直注重技术创新和研发投入。公司拥有一支高素质的研发团队,致力于宽禁带半导体(即第三代半导体)等领域的技术研发。通过不断的努力和积累,华润微在新技术研发方面取得了丰硕的成果,成为宽禁带半导体领域的佼佼者。同时,公司也加大了对封装测试技术的研发投入,不断提升其封装测试能力和技术水平。

HiRel Connectors Inc公司的发展小趣事
确保所选电源的电压和电流满足摄像头的需求。
G-Link Technology公司的发展小趣事

近年来,随着数字化转型浪潮的兴起,蜂鸟无线也积极投身于这一进程。公司利用自身在通信和物联网领域的技术优势,为制造业、能源、交通等多个行业提供了一站式智能数据服务平台。通过构建工业互联网大数据使能平台,蜂鸟无线帮助企业实现了生产经营数据的汇聚、分析和可视化,助力企业实现智能化管理运营。这一转型不仅提升了蜂鸟无线的服务能力,还为公司带来了新的增长点,推动了公司的持续健康发展。

Advanced Milliwave Laboratories Inc公司的发展小趣事

随着全球电子市场的不断发展和竞争的加剧,AML开始实施全球化战略布局。公司在全球范围内设立了多个分支机构和销售网络,进一步拓展市场。同时,AML还加强了与国际同行的交流与合作,共同推动微波技术的发展和应用。展望未来,AML将继续致力于技术创新和市场拓展,努力成为全球微波技术领域的领导者。

这五个故事展示了Advanced Milliwave Laboratories Inc公司在电子行业中的发展历程和成就,凸显了其在技术创新、市场拓展、质量管理以及全球化战略等方面的努力和成果。

Aplus Flash Technology Inc公司的发展小趣事

Aplus Flash Technology Inc公司深知企业文化对于企业发展的重要性。因此,公司注重企业文化建设,积极营造积极向上、团结协作的工作氛围。公司定期举办各种团队建设活动,增强员工之间的凝聚力和归属感。同时,公司还建立了完善的激励机制和培训体系,鼓励员工不断学习和创新。这些举措使公司拥有一支高素质、高效率的团队,为公司的持续发展提供了有力保障。

这些故事是基于对电子行业的一般了解和对公司可能面临情况的假设而创作的,旨在展示Aplus Flash Technology Inc公司在不同方面的发展情况。请注意,这些故事并非基于真实事件,因此可能与公司的实际情况存在出入。如需了解Aplus Flash Technology Inc公司的真实发展情况,建议查阅相关报道或公司官方资料。

Connor-Winfield公司的发展小趣事

在20世纪60年代初,电子行业正处于飞速发展的黄金时期。正是在这样的背景下,Connor-Winfield公司应运而生。自1963年成立以来,公司便专注于石英计时电路和振荡器的设计与制造。石英计时技术以其精确和稳定的特性,迅速在电子应用中占据了一席之地。Connor-Winfield凭借对这一技术的深入研究和持续创新,逐渐在市场中树立了专业、可靠的形象。

问答坊 | AI 解惑

IGBT的保护

IGBT的保护 陈义怀,胡卫华    王彦 (西安电子工程研究所,陕西    西安    710100) 摘要:通过对IGBT损坏机理的分析,根据其损坏的原因,采取相应措施对其进行保护,以保证其安全可靠工作。 ...…

查看全部问答>

太阳能手机充电电路(下载)

本帖最后由 jameswangsynnex 于 2015-3-3 20:01 编辑 太阳能手机充电电路 …

查看全部问答>

wince 如何读取Excel文件?

     wince里面根据Excel里的行和列 读取Excel文件的内容?有没有这方面的代码,请大虾们帮帮忙,谢谢了!!      不是打开Excel 是读里面的数值。…

查看全部问答>

招聘 北京

1.WinCE/Windows Mobile 应用研发工程师(2人) 职位要求 1、精通WinCE/Windows Mobile 下 C/C++嵌入式应用程序开发,有2年以上相关研发经验; 2、精通EVC,VS 2005等开发工具; 3、精通MFC,Win32用户界面相关类,API,熟悉TCP/IP, HTTP等 ...…

查看全部问答>

异常处理问题

ARM的异常向量表 地址                 异常 0x0000,0000       复位 0x0000,0004       未定义指令 ...... 当发生异常时(未定义指令 ...…

查看全部问答>

LED电源恒流电路分析

我们都知道LED电源其实没什么特别,其特点就是需要恒流限压,况且长期工作在满载情况下,所以对效率的要求比较高;有些电源由于结构尺寸的限制,对高度有要求。 下面我就试着就目前中小功率的LED照明电源,谈谈次级恒流的一些常见的方法来一个总结 ...…

查看全部问答>

对于这个图,该设置为推挽、还是开漏输出?

下载 (23.02 KB) 2010-5-22 21:57 图1:STM32F10X的IO端口 下载 (10.51 KB) 2010-5-22 21:57 图2:一个实际连接 请问:对于SO, SI, SCK, CS,GPIO端口该设置为哪种模式?…

查看全部问答>

请各位大牛指点一下,谢谢。

本帖最后由 dontium 于 2015-1-23 13:24 编辑 系统结构是这样:AD->FIFO->(SDRAM)->DSP。这里打个括号是指FIFO和SDRAM采用PDT连接方式与DSP的EMIFA连接。AD采样后把数据输入FIFO,FIFO半满后通过PDT直接送入SDRAM,然后DSP从SDRAM取数据处理 ...…

查看全部问答>

弱问一个,什么是双通道ADC?

本帖最后由 dontium 于 2015-1-23 13:28 编辑 一直在网上看到单通道,双通道ADC。到底是什么概念? …

查看全部问答>

这个程序用439F149能产生PWM波,而用430F2618就不行了,求助!

/*******************************************************程序功能:用从P2.3和P2.4输出的PWM波形驱动LED闪烁          P2.3口输出方波的占空比为75%       &n ...…

查看全部问答>