历史上的今天
返回首页

历史上的今天

今天是:2024年12月24日(星期二)

正在发生

2021年12月24日 | Qt5.7.0移植到4412

2021-12-24 来源:eefocus

搞了几天,终于把Qt5.7移植到4412上,下面是一些自己移植过程中的记录,希望能帮到其他人。


一、需要下载的文件,

下载qt5.7源码qt-everywhere-opensource-src-5.7.0.tar.xz 
http://www.download3k.com/Install-Qt.html

下载ARM交叉编译工具arm-2014.05-29-arm-none-Linux-gnueabi-i686-pc-linux-gnu.tar.bz2 
http://www.veryarm.com/arm-none-linux-gnueabi-gcc

下载tslib1.4 
http://vdisk.weibo.com/s/AcUHxOERV2k0?sudaref=www.baidu.com

桌面系统是ubuntu14.04 32位 ,开发板目前搭载的系统是来自讯为的最小Linux系统。


二、移植

1.安装arm交叉编译器arm-2014,将下载的arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2解压到自己的安装目录,这里我选的是 /usr/local/arm  

下来就是修改环境,打开etc/profile

vi /etc/profile

添加 

export PATH=$PATH:/usr/local/arm/arm-2014.05/bin
export CROSS_COMPILE=arm-none-linux-gnueabi-

保存后 更新下  source /etc/profile

控制台输入arm  按两下下table后如果出现arm-none-linux-gnueabi-gcc-4.8.3  说明可以了,也可以通过

arm-none-linux-gnueabi-gcc -v  这条命令测试,如果出现一大串字母 ,最后一行是gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29)  ,那就没问题了。

2.安装tslib1.4

将下载的tslib1.4解压到自己的目录 ,我选得是自己downloads文件夹 ,解压得到tslib1.4文件夹,在控制台进入这个文件夹,先安装一些东西,

sudo apt-get install autoconf

sudo apt-get install automake

sudo apt-get install libtool

 

安装完之后执行 

./autogen.sh

然后

./configure CC=arm-none-linux-gnueabi-gcc CXX=arm-none-linux-gnueabi-g++ --host=arm-none-linux-gnueabi  --prefix=/opt/tslib1.4 ac_cv_func_malloc_0_nonnull=yes

prefix是自己的安装目录,自己决定。

最后 

make

sudo make install

没出错的话就可以继续下一步了,出错了百度吧,估计是没安装什么东东。


3. 编译Qt5.7的源码。

在自己的downloads文件夹解压得到的源码,

进入该文件夹,打开qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf  ,修改成下面的

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#
# qmake configuration for building with arm-linux-gnueabi-g++
#
 
MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib
 
QT_QPA_DEFAULT_PLATFORM = linux #eglfs
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-none-linux-gnueabi-gcc
QMAKE_CXX               = arm-none-linux-gnueabi-g++
QMAKE_LINK              = arm-none-linux-gnueabi-g++
QMAKE_LINK_SHLIB        = arm-none-linux-gnueabi-g++
 
# modifications to linux.conf
QMAKE_AR                = arm-none-linux-gnueabi-ar cqs
QMAKE_OBJCOPY           = arm-none-linux-gnueabi-objcopy
QMAKE_NM                = arm-none-linux-gnueabi-nm -P
QMAKE_STRIP             = arm-none-linux-gnueabi-strip
load(qt_config)

  执行

1
./configure -release -opensource -tslib -xplatform linux-arm-gnueabi-g++ -prefix /opt/Qt-5.5.0/armv7-a -no-c++11 -no-opengl -I/opt/tslib1.4/include -L/opt/tslib1.4/lib

  没有错误的话 就 make && make install

到安装文件夹下就出现了安装的文件

那就成功了。


三、安装qt-crearor3.3.0  

从http://mirrors.hust.edu.cn/qtproject/archive/qt/   下载需要的版本,直接运行 ,一路 next 下去就行了。


打开安装的qtcreator ,设置开发环境,如下图

 

 

OK  用过windows版本的qt这应该没什么难度。


四 、程序测试。

将编译好的tslib1.4 和qt整个文件夹 拷贝到开发板的/opt目录,

修改开发板环境:vi /etc/profile


export TSLIB_ROOT=/opt/tslib1.4

export QT_ROOT=/opt/qt-5.7.0  

export TSLIB_TSDEVICE=/dev/input/event2

export TSLIB_TSEVENTTYPE=input        

export TSLIB_CONFFILE=/opt/tslib1.4/etc/ts.conf

export TSLIB_PLUGINDIR=/opt/tslib1.4/lib/ts   

export TSLIB_CONSOLEDEVICE=none               

export TSLIB_FBDEVICE=/dev/fb0            

export QWS_MOUSE_PROTO=tslib:/dev/input/event2

export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:$QT_ROOT/lib:$TSLIB_ROOT/lib:$TSLIB_ROOT/lib/

export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins                                             

export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0                                                     

export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts          

export QT_QPA_GENERIC_PLUGINS=tslib

然后在串口命令窗中输入 vi /opt/tslib1.4/etc/ts.conf 来配置触摸屏 

删除第二行前面的#就可以了,如果出错重新打开修改第二行,去掉空格和#

 

 

一切搞完之后就可以编写qt程序了,将编译后的程序用u盘复制到开发板,./program  就可以运行了,但十有八九会报错缺少libstdc++.so  所以要复制一个libstdc++.so到lib目录下,到此,搞定。


下面是我用的libstdc++.so。

http://pan.baidu.com/s/1nvJbRB

hb1m

 

整个过程中很感谢 刘大神、彩阳博主和一名热心网友的帮助。

参考的:

http://www.cnblogs.com/topeet/p/5711957.html

http://blog.csdn.net/u012175418/article/details/52704734?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io

http://www.cnblogs.com/emouse/archive/2013/01/29/2881311.html

推荐阅读

史海拾趣

Henkel公司的发展小趣事

HellermannTyton公司在电子行业的发展历程中,积累了丰富的经验和成就,以下是五个与其发展相关的事实性故事:

1. 创立与初期发展

HellermannTyton的起点可以追溯到其成立之初。作为一家专注于紧固、连接、布线、保护和标识解决方案的全球制造商,HellermannTyton在创立时就明确了其市场定位和技术方向。公司凭借其创新的产品和优质的服务,在电子行业迅速站稳脚跟。初期,公司通过不断研发和改进产品,满足了市场对高品质电子配件的需求,逐步建立起稳定的客户群体和市场基础。

2. 全球化布局与扩张

随着业务的不断发展,HellermannTyton开始实施全球化战略。公司在全球范围内设立办事处和生产基地,以更好地服务全球客户。这一战略不仅提升了公司的市场影响力,还促进了产品的国际化销售。目前,HellermannTyton在30多个国家设有办事处,并拥有稳定的财务状况和良好的行业前景。其全球化布局为公司的持续发展和创新提供了强有力的支持。

3. 技术创新与产品研发

HellermannTyton一直将技术创新视为企业发展的核心驱动力。公司投入大量资源进行产品研发和技术创新,不断推出符合市场需求的新产品。例如,在数据和网络技术领域,HellermannTyton开发了领先的系统,被认为是行业中的领军者。这些创新产品不仅提升了公司的市场竞争力,还为客户提供了更加高效、可靠的解决方案。

4. 中国市场的深耕与发展

在中国市场,HellermannTyton同样取得了显著的成绩。海尔曼太通(无锡)电器配件有限公司作为HellermannTyton在中国的子公司,自1997年成立以来,一直致力于为全球客户设计、生产电线装配及网络连接产品。公司位于中国无锡新加坡工业园,拥有先进的生产设备和完善的质量管理体系。在中国市场的深耕与发展过程中,HellermannTyton凭借其优质的产品和服务赢得了广泛的认可和好评。

5. 多元化业务与可持续发展

HellermannTyton的业务范围不仅限于紧固、连接、布线等传统领域,还积极拓展多元化业务。公司致力于为客户提供全方位的解决方案,以满足不同行业的需求。同时,HellermannTyton还注重可持续发展,通过采用环保材料和绿色生产方式,减少对环境的影响。这种多元化业务和可持续发展的战略为公司的长期发展奠定了坚实的基础。

以上五个故事展示了HellermannTyton在电子行业中的发展历程和成就,体现了其作为全球领先制造商的实力和影响力。

光磊(GL)公司的发展小趣事

关于晶体管水位自动控制电路,网友们可能会提出多种问题,这些问题可能涉及电路的工作原理、设计细节、实际应用中的挑战以及故障排除等方面。以下是一些可能的问题及相应的回答:

问题1: 晶体管水位自动控制电路的基本工作原理是什么?

回答: 晶体管水位自动控制电路通常利用浮子开关(或水位传感器)来检测水位的变化,当水位达到预设的上下限时,浮子开关会闭合或断开,从而改变晶体管的导通状态。晶体管作为开关元件,控制着继电器(或其他负载)的通断,进而控制水泵(或其他执行机构)的启停,以实现水位的自动调节。

问题2: 如何设计电路以确保准确性和稳定性?

回答: 设计时需要考虑多个因素,包括选择合适的晶体管类型(如NPN或PNP型)、合适的电阻值以限制电流并保护晶体管、使用稳定可靠的水位传感器、以及设计合理的防抖动电路来避免误操作。此外,还需进行充分的测试和调整,确保电路在不同水位和工况下都能准确、稳定地工作。

问题3: 在实际应用中,如何避免误报警或误动作?

回答: 误报警或误动作通常是由于水位传感器的误判或电路的干扰引起的。为了避免这种情况,可以采取以下措施:一是选用高质量、高灵敏度的水位传感器;二是增加滤波电路,减少电路中的噪声和干扰;三是设置合理的延时电路,避免由于水位短暂波动而引起的误动作;四是定期对电路进行检查和维护,确保各部件工作正常。

问题4: 如何调整电路的灵敏度以适应不同的水位控制需求?

回答: 电路的灵敏度可以通过调整电阻值、改变晶体管的型号或选择不同特性的水位传感器来实现。例如,增大电阻值可以减小电路的灵敏度,使得电路对水位变化的响应更加迟缓;反之,减小电阻值则可以提高电路的灵敏度。此外,也可以根据实际需求选择不同精度的水位传感器,以满足不同的控制精度要求。

问题5: 如果电路出现故障,应该如何进行排查和修复?

回答: 当电路出现故障时,首先应检查电源是否正常供电;然后检查水位传感器是否损坏或接触不良;接着检查晶体管、电阻等元件是否损坏或焊接不良;最后检查电路连线是否正确无误。在排查过程中,可以使用万用表等工具进行电压、电流等参数的测量和分析。一旦找到故障点,就可以根据具体情况进行修复或更换元件。

Eurofarad公司的发展小趣事

随着Eurofarad产品质量的不断提高和市场份额的逐步扩大,公司开始积极拓展国际市场。Eurofarad的产品已经广泛应用于航空航天、国防、医疗、铁路、石油勘探等领域,赢得了全球客户的信赖和好评。同时,Eurofarad还与国际知名企业建立了紧密的合作关系,共同推动电子行业的发展。

Heraeus公司的发展小趣事

Eurofarad,作为Exxelia Technologies旗下的知名品牌,自1965年成立以来,就专注于电子元件的设计和制造。在创立初期,Eurofarad凭借对电子技术的深入研究和对市场需求的敏锐洞察,迅速推出了多款高性能、高质量的电子元件产品。这些产品在市场上获得了广泛的认可,为Eurofarad的后续发展奠定了坚实的基础。

粤翔(FlyWin)公司的发展小趣事
如电压比较器(如LM393),用于实时监测系统电压。
EMC [ELAN Microelectronics Corp]公司的发展小趣事

义隆电子股份有限公司于1994年5月在台湾创立,以亚太区著名的IC设计公司为目标。公司初始阶段就明确了以研发和销售集成电路(IC)产品为核心业务的战略方向。在创立初期,义隆电子积极引进高素质的研发人才,建立了强大的研发团队,并投入大量资金用于新产品的研发。凭借卓越的技术实力和敏锐的市场洞察力,义隆电子在消费性芯片、通讯类芯片等领域迅速取得了突破。

问答坊 | AI 解惑

大家看下如何做这个网络通信的需求?

PDA端的现有程序是用C#写的基于CF2.0的程序, 目前PC端的程序是用RAPI的方式操纵PDA上的数据的. 但是这样PDA必须用线跟PC连接起来才能进行数据操作,因为PDA支持无线网络,所以这样就显的很麻烦, 设想是希望PDA与PC间通过类似于SOCKET之类的方式进 ...…

查看全部问答>

请问我在论坛里发贴能否增加积分?

请问我在论坛里发贴能否增加积分?…

查看全部问答>

怎样用vc编写程序驱动步进电机

我想用vc作为开发工具,编写程序来控制步进电机的转动,而不是用keil软件作为开发工具,不知道行不行?如果不行的话,怎么样实现呢/…

查看全部问答>

BSP的定制问题。怎么做自己需要的NK啊

我的开发板有做好的BSP包,我想屏蔽去掉一些驱动,写上自己的驱动,然后烧到板子里去,怎么做自己的镜像呢? 新手,求指教!!!! 我的驱动也写好了,屏蔽原有的驱动是不是直接删掉DRIVERS下的驱动文件就可以了呢???…

查看全部问答>

关于ndis.h头文件调用

我写一个ndis驱动,需要调用ndis.h中的EXPORT NDIS_STATUS (     IN  NDIS_HANDLE             MiniporNdisMCmRegisterAddressFamilytAdapterHandle,     IN   ...…

查看全部问答>

能不能让KEIL C变聪明点?

当我们要对一个数同时做取模和取商的操作时在 KEIL C 中这样表示 unsigned int i,j,k; i=k%15; j=k/15; 复制代码 然后察看KEIL C生成的汇编码,发现它调用了两次除法子程序,实际上应该是只需要调用一次就可以的啊。 查KEIL C 的库函数好像也没 ...…

查看全部问答>

脉冲信号参数测试仪

怎样用MSP430G22553的型号的芯片,设计制作一个脉冲信号测试仪,可以测量脉冲信号的幅值、频率、周期、占空比、上升和下降时间等参数。哪位大侠可以帮帮忙的,或者有什么思路可以帮解释下的  谢谢啦;了啊…

查看全部问答>