QtEmbeded移植到达芬奇6441平台

2024-02-17 07:18

本文主要是介绍QtEmbeded移植到达芬奇6441平台,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:

就移植Qte而言,本菜菜已经是熟练工种了,因此这次移植到达芬奇6441平台,开始并不觉得是非常难的事。但是后来发现国内移植方面资料不多,相关的也只有OMAP方面的,并且工具链及linux的不同,还是生产了很多困难,所以还是写篇文章以帮助后来者。该移植过程采用的NFS来共享根文件系统,如果没有NFS按自己的更改

正文:

先就移植的环境做个简单介绍介绍:

开发板:达芬奇6441芯片组(ARM9 + C64x+)

主机系统:redhat enterprise linux 4

主机编译器:gcc version 3.4.3 20041212 (Red Hat 3.4.3-9.EL4)

交叉编译器:arm_v5t_le-gcc(MontaVista提供)

移植过程:

移植前准备

移植Qt4图形开发库前,首先应获取Qt4对应嵌入式开发的最新源代码。Qt4最新源代码可以在它的官方网站上获得,下载地址为:http://www.qtsoftware.com/downloads。为了开发的便利,在PC上可以使用qvfb来模拟Qt4在嵌入式设备上的运行。同时,为了清楚概念,Qt4图形开发库对应PC桌面开发板命名为Qt4,对应嵌入式设备开发板命名为Qte4。

解压源码包

一般需要获取两个源码包,从官方网站下载完成后,应该有如下两个压缩包:
qt-embedded-linux-opensource-src-4.5.2.tar.gz
qt-x11-opensource-src-4.5.2.tar.gz
这两个分别对应的是linux下桌面开发的Qt4图形库和对应嵌入式linux设备开发的图形库。使用tar命令来解压这两个源码包,以便进行配置编译开发,过程如下
#tar zxvf qt-embedded-linux-opensource-src-4.5.2.tar.gz
#tar zxvf qt-x11-opensource-src-4.5.2.tar.gz

配置编译安装tslib

Tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。使用tslib可以为Qt4开发的程序提供准备的触摸屏数据,利于程序触摸的定位。
同样,首先应下载获取tslib的源代码,然后解压至指定文件夹,最后安全如下步骤配置编译安装:
#./autogen.sh
#./configure –prefix=/home/wangc/mytslib/ –host=arm-linux-linux ac_cv_func_malloc_0
_nonnull=yes
#make
#make install
安装成功后,tslib会安装在mytslib目录中,如果想指定安装目录,在prefix参数后修改安装目录即可。

配置编译Qte4

当准备工作做完以后,Qte4的配置编译就可以开始了,由于Qte4对于嵌入式设备来说,是个很庞大的图形库,因此,需要在参数里进行配置和裁剪。由于交叉工具链与一般的交叉工具链不同,需要修改针对arm平台的编译脚本才能正常进行。
在Qte4的解压目录下,进入mkspecs/qws/linux-arm-g++/目录,打开命名为qmake.conf的文件,在里面配置交叉工具链的选择,将所有的arm-linux-改为arm_v5t_le-就可以指定成达芬奇平台的交叉工具链。

配置Qte4

先根据需要选择参数,选择后,进入源代码解压目录进行配置,步骤如下:
#./configure -release -shared -fast -no-largefile -qt-sql-sqlite -no-qt3support -no-xmlpatterns -no-phonon -no-phonon-backend -no-scripttools -no-mmx -no-3dnow -no-sse -no-sse2 -nomake tools -nomake examples -nomake docs -nomake demo -xplatform qws/linux-arm-g++ -embedded arm -little-endian -qt-freetype -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-usb -no-glib -qt-mouse-tslib -I/home/wangc/mytslib/include -L/home/wangc/mytslib/lib
参数选择中,对于触摸屏应该选择tslib,并且指定tslib的头文件和库文件的目录。

编译Qte4

配置完毕后,就可以编译Qte4,按照如下步骤:
#make
编译时间长短视编译机器的性能和配置参数决定,但编译完成后,就可以得到需要的Qte4库文件。

移植Qte4

编译完成后,为了便于日后的开发,应该在PC上安装Qte4,这样就获得了Qte4的qmake工具和相
关文档。安装命令如下:
#make install
开发板上要运行Qt4的程序,就应该有相对应的库文件,移植的过程就是把已经交叉编译好的库文件移至到开发板上。开发板可以使用NFS共享根文件系统启动,因此,可以先将库文件拷贝到共享的根文件系统下进行测试。当测试完成后,再将库文件拷贝到开发板上。

移植库文件

按照步骤,首先把Qte4的库文件拷贝到NFS启动的根文件系统,其步骤如下:
#cp –f lib/ rootfs/usr/local/Trolltech/QtEmbedded-4.5.0-arm
之所以放入该目录中,是因为这是Qte的默认安装目录,这样可以避免因为路径的不同而产生不必要的问题。

设置环境变量

将根文件拷贝到指定位置后,为了使系统能在运行时获取Qte4库文件位置,应该设置系统的环境变量,配置的环境变量如下:
export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.0-arm
export PATH=/usr/local/Trolltech/QtEmbedded-4.5.0-arm/bin:$PATH
export QWS_DISPLAY=LinuxFb:/dev/fb/0
export QWS_DISPLAY=”LinuxFb:mmWidth720:mmHeight272:0″
export QWS_SIZE=720×272
export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.0-arm/lib:$LD_LIBRARY_PATH
第一个参数指定了Qte所在的目录,第二个参数是将Qte所在目录导入环境变量,第三个及第四个参数指定了Qte的绘制设备,第五个参数是将Qte的库文件目录导入环境变量。

可能出现的错误:

移植过程中,由于硬件体系,系统环境的差异,可能会出现错误,因此,要对这些错误逐一分析检查,并解决。
问题一:Root-NFS: Unable to get nfsd port number from server, using default
问题原因:这种情况通常是nfs配置问题,或者是网线
解决方案:看看网线接好没,配置是否正确
问题二:tslib测试程序不可执行
问题原因:查看连接关系后,发现目标平台式为x86
解决办法:原因是交叉编译工具命名规范与普通的不一样,在编译前导入至编译终端即可。
问题三:./findfiles: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
问题原因:开发板上库文件与PC上交叉编译开发环境库文件不一致
解决方案:该文件在/opt/mv_pro_4.0/montavista/pro/devkit/arm/v5t_le/target/usr/lib/目录下,拷贝到开发板/usr/lib目录下即可。
问题四:QScreenLinuxFb::connect: No such file or directory
Error opening framebuffer device /dev/fb0
: driver cannot connect
Aborted
问题原因:程序默认的帧缓存设备为/dev/fb0,而实际上设备为/dev/fb/0,所以出错显示打不开该设备
解决方案:ln -s /dev/fb/0 /dev/fb0,建立链接,使fb0指向/dev/fb/0后,程序即可顺利运行
具体的问题还是需要根据自己的开发环境来分析解决。

该文章转自: http://www.cuteqt.com/blog/?p=898

这篇关于QtEmbeded移植到达芬奇6441平台的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/717056

相关文章

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

如何解决线上平台抽佣高 线下门店客流少的痛点!

目前,许多传统零售店铺正遭遇客源下降的难题。尽管广告推广能带来一定的客流,但其费用昂贵。鉴于此,众多零售商纷纷选择加入像美团、饿了么和抖音这样的大型在线平台,但这些平台的高佣金率导致了利润的大幅缩水。在这样的市场环境下,商家之间的合作网络逐渐成为一种有效的解决方案,通过资源和客户基础的共享,实现共同的利益增长。 以最近在上海兴起的一个跨行业合作平台为例,该平台融合了环保消费积分系统,在短

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

衡石分析平台使用手册-单机安装及启动

单机安装及启动​ 本文讲述如何在单机环境下进行 HENGSHI SENSE 安装的操作过程。 在安装前请确认网络环境,如果是隔离环境,无法连接互联网时,请先按照 离线环境安装依赖的指导进行依赖包的安装,然后按照本文的指导继续操作。如果网络环境可以连接互联网,请直接按照本文的指导进行安装。 准备工作​ 请参考安装环境文档准备安装环境。 配置用户与安装目录。 在操作前请检查您是否有 sud

业务协同平台--简介

一、使用场景         1.多个系统统一在业务协同平台定义协同策略,由业务协同平台代替人工完成一系列的单据录入         2.同时业务协同平台将执行任务推送给pda、pad等执行终端,通知各人员、设备进行作业执行         3.作业过程中,可设置完成时间预警、作业节点通知,时刻了解作业进程         4.做完再给你做过程分析,给出优化建议         就问你这一套下

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle