搜档网
当前位置:搜档网 › Linux下的QT移植说明

Linux下的QT移植说明

Linux下的QT移植说明
Linux下的QT移植说明

参考

https://www.sodocs.net/doc/3a4750366.html,/supertreeman/blog/item/dda85a106b17ae2ddd54010a.htm omap3530下qte的移植过程(天漠SBC8100实验板)

qte的版本为4.7.1,qt-everywhere-opensource-src-4.7.1.tar.gz

qt sdk 内有有qt creator 和qt 4.7.0版本的库。

编译环境:ubuntu10.10

qt应用开发工具:qt creator

1、首先要添加交叉编译链路径到环境变量中,我的是:

export PATH=/home/embest/2007q3-a/bin:$PATH

跨平台编译qte最麻烦的不过config makefile的生成,目前我用的configure配置选项为:

./configure -prefix /usr/local/arm/Qt4.7.1 -opensource -shared -embedded arm -xplatform qws/linux-arm-g++ -depths 16,18,24

2、修改qte4.7.1/mkspecs/qws/linux-arm-g++/qmake.conf文件,将arm-linux 全部修改为

arm-none-linux-gnueabi-gcc -lts(后来在移植应用程序时出错,需要在此加上-lts参数)

3、然后:

gmake 花了一两个小时

gmake install 很快

4、移植到开发板根文件系统:

将编译安装好的库放到目标板的rootfs对应的路径下/usr/local/arm/Qt4.7.1/lib拷贝到/usr/local/arm/Qt4.7.1里

然后将编译好的qte的lib目录拷贝到目标板中(包括lib库和font库)。

5设置环境变量:

export QTDIR=/usr/local/arm/Qt4.7.1

####export TSLIB_ROOT=/usr/local/tslib 触摸屏时使用

export PATH=$QTDIR/bin:$PATH

export TSLIB_TSDEVICE=/dev/input/touchscreen0

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/touchscreen0

export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:$QTDIR/lib

6 在QT creator 里创建工程

Hell

建立对话框工程

7 主机上的环境变量设置中加入

export QTDIR=/usr/local/arm/Qt4.7.1

####export TSLIB_ROOT=/usr/local/tslib 触摸屏时使用

export PATH=$QTDIR/bin:$PATH

export TSLIB_TSDEVICE=/dev/input/touchscreen0

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/touchscreen0

export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:$QTDIR/lib

8 在hell目录下

qmake –project

qmake -spec $QTDIR/mkspecs/qws/linux-arm-g++ -o Makefile

make生成了相关的可执行文件hell

9 放在根文件系统里/qtexample下

使用命令生成ubi.img 下载到目标板上

10重新启动后cd 进入/qtexample下进入hell文件夹中 ./hell –qws

可以看到设计的界面

附:

关于qmake的选择:

qt creator 下如果要编译跨平台的程序,需要对应编译好的qmake。在qt creator的qmake选择框中选择事先编译好的qmake即可。

关于qvfb:

qvfb工具用来生成Virtual Frame Buffer,它可以模拟在嵌入式开发板上的显示状况,如果在qvfb 中模拟运行没有问题的话,就可以直接通过交叉编译在开发板上运行了。

关于tslib的编译:

tslib是linux中关于touchscreen的驱动,tslib作为touchscreen的虚拟驱动屏蔽了实际的驱动。我使用的tslib1.4的编译过程如下:

首先检查系统安装了autoconf automake libtool

./autogen.sh 生成configure 文件

./configure --prefix=/usr/local/tslib --host=arm-linux

ac_cv_func_malloc_0_nonnull=yes

make

make install

补充:

1、当需要qte跨平台编译arm平台运行程序时,需要在project中的系统环境变量设置的PATH中添加arm-linux-g++的位置,否则就会报

make:arm-none-linux-gnueabi-g++:命令未找到的错误。如果在虚拟机上调试时就不需要加上此环境变量。

2、如果交叉编译时报Relocations in generic ELF (EM: 3)错误,需要make clean 后重新make。

嵌入式蓝牙文件传送方案的实现

嵌入式蓝牙文件传送方案的实现 摘要:针对蓝牙技术在无线通信中的应用需求,基于ARM9微处理器S3C2440的嵌入式系统,设计并实现了蓝牙文件传送方案。系统已经通过板级验证及实际应用测试,完全实现系统设计功能。关键词:嵌入式;蓝牙;单点传送;多点传送 蓝牙是一种低成本、短距离无线通信技术,工作频段使用全球统一开放的2.4 GHz的ISM 频段[1],并将此频段分为79个跳频点,采用跳频技术,增强了蓝牙通信的可靠性。蓝牙技术现已被广泛应用于无线通信领域中,如个人无线通信设备、无线网络通信以及各种传宣系统[2]。利用蓝牙技术实现不同类型的文件传送是蓝牙通信的重要应用,而传统的基于蓝牙1.0规范的蓝牙通信只支持单点传输,随着蓝牙技术的发展,蓝牙 2.0规范中增加了EDR(Enhance Data Rate)技术,提高了蓝牙数据传输的吞吐量,为蓝牙多点通信提供了条件。本文依据蓝牙2.0规范,结合TDD技术,在实现了单点文件传送的基础上,成功完成了嵌入式系统对远程蓝牙设备的多点文件传送方案,并应用个人区域网络技术实现了嵌入式系统与PC机之间的网络文件传送,扩展了蓝牙通信在网络领域的应用。蓝牙文件传送和网络文件传送功能为广告产业及其他信息发布相关产业提供了广阔的发展空间,具有良好的市场前景。1 方案设计概述方案设计以ARM嵌入式系统作为硬件实现平台,并基于Linux操作系统,完成蓝牙文件传送方案。文件单点传送方案依据对象交换协议OBEX(Object Exchange),利用蓝牙官方协议栈BlueZ以及openobex上层应用函数库实现对象推送功能,从而完成对远程设备的文件单点传送。文件多点传送方案将在底层应用全双工时分复用(TDD)技术以及EDR (Enhance Data Rate)技术实现蓝牙数据通道共享和宽带、高吞吐量数据发送,在上层以文件单点传送方案为基础,辅以嵌入式技术建立并管理多个文件发送进程,完成文件向多个远程设备的同时发送,加入了重发机制以保证文件多点传送的可靠性。此外,基于个人区域网络技术的网络文件传送功能,使用户可在PC机端以FTP方式访问并更新嵌入式系统中的文件。 2 方案硬件架构本方案基于ARM硬件开发平台,以SAMSUNG S3C2440作为核心处理器,并与64 MB SDRAM和64 MB Flash共同组成核心嵌入式系统,运行ARM-Linux-2.6.12内核操作系统,其中内核配置蓝牙子系统,可为USB蓝牙适配器提供驱动。蓝牙适配器作为系统的核心通信部件接至USB Device接口,并通过适配器完成文件传送功能。同时本硬件系统易于功能扩展和系统移植,开发人员可通过USB Host接口将操作系统内核以及上层应用程序下载到SDRAM或烧写至Flash中,并通过RS232串口对应用程序进程调试。硬件整体架构。 3 方案软件框架软件框架主要由蓝牙核心协议、会话层协议以及上层应用程序构成,。其中蓝牙核心协议包括:RF协议、基带(Baseband)协议、LMP、L2CAP,主要完成蓝牙数据由逻辑链路层到实际物理通道的控制和处理。 会话层协议将建立对应功能的模型描述,并定义相关操作方法,为上层应用程序提供接口。其中RFCOMM协议提供对基于L2CAP协议的串口仿真,基于ETSI07.10,可支持在两个蓝牙设备之间同时保持高达60路的通信连接。其次,本方案利用服务发现协议(SDP)获取周边蓝牙设备服务信息,并自动筛选出带有对象推送服务的远程设备作为发送目标,此协议由BlueZ 所提供的接口函数实现。而OBEX作为实现文件传送的核心协议,将为被传送文件建立对象模型,并面向对象及传送过程定义对应操作方法,以实现文件传送。PAN协议用于建立蓝牙无线网络与以太网之间的访问点,以完成与TCP/IP之间的无缝连接。上层应用程序将基于应用层协议所提供的接口函数,主要依据对象交换协议(OBEX)实现对象推送(OBEX PUSH)功能,从而完成文件的单点传送,并在此基础上,结合Linux多进程技术实现文件多点传送。此外,利用BlueZ提供的PAN工具实现嵌入式系统与PC机之间的组网,完成网络文件传送功能。4 文

qt程序在linux console模式下运行

Qt程序在linux Console模式下运行 原文链接:在x86非图形界面下运行QtEmbedded程序 众所周知,一般我们在桌面环境下可以使用qvfb这个工具作为运行QtEmbedded程序的模拟器环境,但我们今天不讲这些大家都知道的事情。 回顾一下QtEmbedded对系统以及硬件的要求,一般来说只有下面少少的几点: 1、 Linux内核+ framebuffer驱动+ socket支持 2、 /tmp可写 3、有合适的键盘和鼠标(触摸屏)驱动并做好与Qt的集成 4、合适的编译器和交叉编译工具链(toolchain) 那么聪明的同学已经想到了,为什么我们不能直接在桌面的linux系统中运行QtE程序呢?似乎QtE的要求我们的桌面系统一样可以满足亚。答案当然是肯定的。 一条一条来说的话, 1内核支持framebuffer和socket这一条大部分发行版默认的内核就可以; 2就不用说了;3在QtE的源码里自带了对普通桌面鼠标和键盘硬件的驱动;4对于X86系统,普通的gcc就可满足,一般linux发行版带的gcc版本也基本可以满足QtE编译的要求。 那么,怎么才能实现我们的想法呢?还是要一步一步按部就班来做。以笔者的Ubuntu 为例,介绍一下设置的具体步骤。 编译QtEmbedded 这一步编译和编译qvfb版本区别不大,只是不再需要configure的时候加-qvfb参 数,只用不加参数的configure足矣。 # tar -zxvf qt-em bedded-linux-opensource-src-4.5.1.tar.gz # cd qt-em bedded-linux-opensource-src-4.5.1 # ./configure -embedded x86 –qvfb // 我的编译情况是: ./confignre –prefix /work/Trolltech/QtEm bedded-4.5.1–no-o penssl # gmake # gmake install qt-em bedded 被安装在这个目录下/usr/local/Trolltech/QtEmbedded-4.5.1 设置环境变量: # vi ~/.bashrc 把下面的加上去 export QTEDIR=/usr/local/Trolltech/QtEm bedded-4.5.1 export PATH=/usr/local/Trolltech/QtEm bedded-4.5.1/bin:$PAT H export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEm bedded-4.5.1/lib:$LD_LIBRA RY_PATH

蓝牙协议栈BlueZ的移植与开发

蓝牙协议栈BlueZ的移植与开发* 欧阳鑫 于红岩 吕杨 (昆明理工大学信息工程与自动化学院,昆明,650051) 摘要:蓝牙技术是当前国内外科技界和产业界研究开发的热点技术,其应用范围包括手机、PDA、信息家电设备等领域,蓝牙技术在嵌入式系统上必将得到广泛的应用。而要在嵌入式系统上提供蓝牙开发支持,蓝牙协议栈的移植是关键。本文分析了蓝牙协议栈BlueZ体系结构,详细介绍了在S3C2410开发板上移植BlueZ的步骤,建立了嵌入式蓝牙应用开发平台,并提出了用BlueZ 开发蓝牙应用程序的思路。 关键字:蓝牙技术;蓝牙协议栈BlueZ;移植;S3C2410;Linux 中图分类号:TP368.1 文献标识码:A BlueZ Porting and Programming Ou Yangxin,Yu Hongyan,Lv Yang (College of Information Engineering and Automation,Kunming University of Science and Technology,Kunming 650051,China) Abstract: Bluetooth technology is the focused on by the domestic and overseas research institutes. This technology is widely used in mobile phone, PDA, and Information Appliance devices. In the future,bluetooth technology will be widely used in embedded system. Built some bluetooth applications on embedded system,the key technology is porting bluetooth protocol suites to platform. In this paper,we study the BlueZ architecture,describe the steps of Porting BlueZ to S3C2410 Platform in detail,and build the embedded bluetooth application programming platform. In the end, we also give the idea of bluetooth programming. Keywords: bluetooth technology,bluetooth protocol suites BlueZ,porting, S3C2410, Linux 1引言 蓝牙技术是一项低价格、低功耗的射频技术,它能使蓝牙设备实现近距离无线通信。由于蓝牙技术有广泛的应用前景,它已成为当前国内外科技界和产业界研究开发的热点技术。Linux 操作系统的开放的蓝牙协议栈主要包括IBM公司的BlueDrekar,Nokia公司的Affix, Axis公司的OpenBT和官方协议栈BlueZ[1]。BlueZ是公布在Internet上的免费蓝牙协议栈,由于它结构简单,应用方便,具有灵活、高效和模块化的特点且具有较强的兼容性,因此BlueZ已经成为Linux操作系统下的官方的蓝牙协议栈。 S3C2410x是三星公司推出的一款高性价比32位的RISC处理器,内含一个由ARM公司设计的ARM920T核,具有低功耗高性能的特点,适用于对价格及功耗敏感的场合。本文使用的S3C2410开发板主要包含以下部件:S3C2410x芯片,32MB Nor Flash,64MB SDRAM,IIC存储器接口,LCD控制器,UART接口,一个USB(Host)接口。 利用S3C2410开发板上的USB接口,可以外扩蓝牙适配器,但S3C2410开发板上没有实现蓝牙设备驱动。本文对蓝牙协议栈BlueZ进行分析,移植BlueZ到开发板上实现蓝牙设备驱动,提出了使用BlueZ开发蓝牙应用程序的基本思路。 *基金项目:云南省自然科学基金项目(2004F0024M)。

我来说linux移植过程

我对linux移植过程的整体理解 首先,要开始移植一个操作系统,我们要明白为什么要移植。因为我们要在另外一个平台上用到操作系统,为什么要用操作系统,不用行不行?这个问题的答案不是行或不行来回答。单片机,ARM7都没有操作系统,我们直接对寄存器进行操作进而实现我们需要的功能也是可以。但是,一些大型的项目设计牵涉很多到工程的创建,单纯对裸机进行操作会显得杂乱庞大这时候需要一个操作系统。 操作系统的功能能。我们用到操作系统,一方面可以控制我们的硬件和维护我们的硬件,另一方面可以为我们得应用程序提供服务。呵呵,这样说还是很抽象,具体到项目中就可以感受到操作系统的好处。 Linux操作系统的移植说白了总共三大部分:一,内核的重新编译。二,bootloader的重新编译。三,文件系统的制作。在这里要解释这些名词也很不好说的明白,首先,一个完整的操作系统是包括这三大部分的,内核、Bootloader、文件系统。我们知道Linux有很多版本,不同的版本只是文件系统不一样而内核的本质都是一样的。 那么,我们开始进行移植。首先是内核。1.我们需要下载一个内核源码,这个在网上很好下载,下载后,保存下。2.把这个压缩包复制到ubuntu(我用的版本)里,一般复制到/home/dong/SoftEmbed(我的目录,呵呵),然后呢,我们需要对这个内核进行修改重新编译,为什么要这样做,因为我们要让内核为我们的ARM服务,所以需要修改一些东西的。至于具体如何修改,我已经写在另外一个文档里了。3.修改的内容主要是 Makefile(设置体系架构为arm,设置交叉编译器)、时钟频率(我们板子的频率)、内核配置(进入内核配置主要是设置一些选项以适合我们的开发板)。具体设置步骤我会另加说明。4.设置好后我们需要重新编译内核,用的是make zImage命令。编译后就生成了我们自己编译好的内核,呵呵。 接下来,进行文件系统的移植。我们需要一个Yaffs2文件系统压缩包。1.复制这个压缩包到/home/dong/SoftEmede(我自己在ubuntu里建的目录,呵呵),2.解压,会生成一个文件夹。3.给内核打补丁,通过执行 ./patsh-ker.sh c /内核目录。呵呵4.进入 make menuconfig中配置选项,要选择对yaffs2的支持,具体怎么设置我写在另一个文档。 接下来,我们进行根文件制作,需要一个制作工具 mkyaffs2image.taz.还是复制到我自己的目录下,解压,安装。接着,我们需要对Busybox的移植、配置,具体移植、配置步骤我另写,呵呵。最后是构建我们自己的文件系统,到此我们已经完成了内核移植和文件系统的制作。准备移植,呵呵。今天先写到这里,累了。

linux蓝牙驱动代码阅读笔记

导读: linux蓝牙驱动代码阅读笔记 转载时请注明出处和作者联系方式 作者联系方式:李先静 昨天看了一下介绍蓝牙协议文档,今天索性对照看了看kernel里的代码(bluez),这里记点笔记,还是继承了老毛病,只关注整体流程而忽略细节,先了解个大概,等真正需要时再仔细分析。 net/hci_core.c HCI在主机端的驱动主要是为上层提供一个统一的接口,让上层协议不依赖于具体硬件的实现。HCI在硬件中的固件与HCI在主机端的驱动通信方式有多种,比如像UART、USB 和PC Card等等。hci_core.c相当于一个框架,用于把各种具体通信方式胶合起来,并提供一些公共函数的实现。 hci_cmd_task是负责发送CMD的任务,它从hdev->cmd_q队列中取CMD,然后调用hci_send_frame把CMD发送出去,hci_send_frame又会调用实际的HCI驱动的send函数发送数据。 hci_rx_task是负责接收数据的任务,它从hdev->rx_q队列中取数据,然后根据数据的类型调用上层函数处理。数据包有三种类型: HCI_EVENT_PKT:用于处理一些通信事件,比如连接建立,连接断开,认证和加密等事件,这些事件控制协议状态的改变。 HCI_ACLDATA_PKT:异步非连接的数据包,通过hci_acldata_packet提交给上层的L2CAP协议处理(hci_proto[HCI_PROTO_L2CAP])。 HCI_SCODATA_PKT:同步面向连接的数据包,通过hci_scodata_packet提供给上层的SCO协议处理(hci_proto[HCI_PROTO_SCO])。 hci_tx_task是负责发送数据的任务,发送所有connection中的ACL和SCO数据,以及hdev->raw_q中的数据包。 HCI为上层提供的接口主要有: hci_send_sco:发送SCO数据包,把要发送的数据包放入connection的发送队列中,然后调度发送任务去发送。 hci_send_acl:发送ACL数据包,把要发送的数据包放入connection的发送队列中,然后调度发送任务去发送。 hci_send_cmd:发送命令数据,把要发送的数据包放入hdev->cmd_q队列中,然后调度命令发送任务去发送。 hci_register_proto/hci_unregister_proto:注册/注销上层协议,HCI会把接收到的数据转发给这些上层协议。 hci_register_dev/hci_unregister_dev: 注册/注销设备,HCI会把要发送的数据通过这些设备发送出去。 其它一些公共函数。 net/hci_conn.c 提供了一些连接管理,论证和加密的函数。 net/hci_event.c 事件处理函数,负责状态机的维护,这些事件通常会使连接从一个状态转换另一个状态。 hci_si_event:用于发送事件。 hci_event_packet:用于处理底层上报的事件,从hci_rx_task处调用过来。 net/hci_sock.c

Linux-Ubuntu 下 Qt 4.7.1静态编译

Qt的静态编译是本文介绍的内容,相比较来说windows的Qt静态编译比较容易,相反对于linux编译网上的文章实践下来都有这样那样的错误,这里简要小结一下自己的编译成果。 一、实验环境 1Ubuntu 10.04 2qt-x11-opensource-4.7.1.tar.gz 二、前期准备 在安装好Ubuntu 10.04后默认是没有安装程序编译软件包的,所以我们首先是要配置ubuntu。 配置方法:(推荐全程root用户模式) 1、首先调整网络设置使得机器可以上网(具体做法因人而异,这边就忽略不计) 2、需要配置的安装包:输入命令: 3apt-get install build-essential libpcap0.8-dev libx11-dev libfreetype6-dev 4libavahi-gobject-dev libSM-dev libXrender-dev libfontconfig-dev libXext-dev 三、静态编译Qt 1、下载qt-x11-opensource-4.7.1.tar.gz 2、解压缩qt-x11-opensource-4.7.1.tar.gz 3、配置path 输入命令: 5export PATH="$PATH:/usr/local/Trolltech/Qt-4.7.1/bin" 4、进入qt解压目录,配置configure命令:./configure -static -nomake demos

-nomake examples -nomake tools -no-exceptions 5、分别输入“o”和“y”以后进入编译阶段 6make 7make install 慢慢等吧…… 四、静态编译Qt程序 1、建立文件夹,然后写程序文件XX.cpp 2、qmake -project 3、生成pro文件后在里面加入CONFIG += static 4、qmake 5、生成Makefile后在cxxflags的=后插入-static 6、make 小结:实现Ubuntu 下Qt4.7.1静态编译的内容介绍完了,希望本篇的静态编译读你有所帮助。 【编辑推荐】 8Qt中根据不同版本号使用不同源码 9解析Qt资源文件使用 10深度解析QT 介绍跨平台界面库 11Windows下Qt 静态编译连接 12浅谈Qt 静态编译 原文参考:https://www.sodocs.net/doc/3a4750366.html,/symbian-270510.htm

bluez how to

Linux BlueZ Howto Bluetooth protocol stack for Linux Jan Beutel j.beutel@https://www.sodocs.net/doc/3a4750366.html,,Maksim Krasnyanskiy maxk@https://www.sodocs.net/doc/3a4750366.html, 14th November2001 1Introduction BlueZ is the of?cial Linux Bluetooth stack.It provides support for core Bluetooth layers and protocols. Bluez has many interesting features: Flexible,ef?cient and modular architecture Support for multiple Bluetooth devices Multithreaded data processing Hardware abstraction Standard socket interface to all layers Currently BlueZ consists of(see also?gure1): HCI Core HCI UART,USB and Virtual HCI device drivers L2CAP protocol module Con?guration and testing utilities 2Setting up BlueZ 2.1Obtaining BlueZ Y ou can download the BlueZ source from https://www.sodocs.net/doc/3a4750366.html,.There is also an up to date CVS tree available there.

【IT专家】Qt程序发行Linux版,软件打包知识(patchelf 工具修改依赖库,确认 qmake

本文由我司收集整编,推荐下载,如有疑问,请与我司联系Qt程序发行Linux版,软件打包知识(patchelf 工具修改依赖库,确 认qmake 2017/06/02 449 patchelf 工具可以修改已编译运行程序的依赖库位置和指定库链接器 ?patchelf --set-rpath ?patchelf --set-interpreter ?通过这个工具https://github/probonopd/linuxdeployqt如果自己编译不了,也可以下载现成的 ?https://github/probonopd/linuxdeployqt/releases ?运行./linuxdeployqt-2-x86_64.AppImage ShanbayDict 并为成功,生成的lib目录下的so文件很少。 ?运行./linuxdeployqt-2-x86_64.AppImage ShanbayDict -appimage 也未成功,但lib 生成了很多so文件 ?使用patchelf --set-rpath /opt/Qt-5.7-static/lib/:./lib ShanbayDict 修改rpath后,ShanbayDict可以独立运行了,连同lib一起拷贝到新安装的Ubuntu 16.04系统中,也能运行了。 ?ldd ShanbayDict 显示,rpath已经指向./lib目录 ?patchelf可以通过sudo apt installpatchelf 安装 ?2017年2月24日 ?Qt 5.8编译的Qt程序 ?设置环境变量,确认qmake -v 是自己使用的Qt版本,如果不是,解决办法是: ?export PATH=/home/lieefu/Qt5.8.0/5.8/gcc_64/bin:$PATH ?创建qml目录,把/home/lieefu/Qt5.8.0/5.8/gcc_64/qml 目录下用到的模块复制过来,我的app用到了三个QtQuick、QtQuick.2、QtMultimedia。 ?增加plugin中platforminputcontexts 包括libfcitxplatforminputcontextplugin.so文

Linux蓝牙协议栈OpenBT及其应用程序开发

2003.10 电子设计应用  www.eaw.com.cn52 引言 Linux蓝牙协议栈主要有三个:OpenBT、BlueDrekar、BlueZ,其中OpenBT被认为在性价比上超过BlueDrekar和BlueZ,可运行于X86、ARM、MIPS、PowerPC等硬件平台,与任何2.x版本的Linux内核兼容,支持JAVA。本文介绍了OpenBT的 体系结构及其对互操作性的影响,并以客户机/服务器(C/S)实例说明如何在OpenBT上开发蓝牙应用程序。 OpenBT的体系结构 使用不同蓝牙协议栈的设备在通信时往往会遇到互操作性问题。开发者需要了解各种协议栈的体系 结构并考虑其差异。通过分析源 码,本文给出了如图1所示的OpenBT的体系结构。OpenBT包括HCI、L2CAP、SDP、SP、Networking、OpenBT Utility、后台 程序、内核接口8个模块,分别解释如下: * HCI模块由Driver、Transport子模块构成。Driver负责HCI命令、HCI事件和HCI数据接口;Transport提供USB、RS-232、UART的驱动。 * L2CAP模块由State Handle、Security子模块构成。State Handle负责运行L2CAP的状态机和数据的分段组装;Security负责L2CAP级别安全管理。 * SP模块由RFCOMM、串口仿真子模块组成。RFCOMM负责完成蓝牙RFCOMM协议中所描述的内容,核心是一个RFCOMM状态机;串口仿真负责提供接口。 * SDP模块负责完成蓝牙SDP协议中所描述的内容,在功能上分为XML文件管理、SDP查询处理和SDP响应处理三部分。 * Networking模块由PPP、Modem Emulation、TCS子模块构 Linux蓝牙协议栈OpenBT 及其应用程序开发 ■ 西安交通大学电信学院 马毅华 冯恩信 摘 要:本文分析了OpenBT软件体系结构,根据客户机/服务器模型的实例,介绍了OpenBT应用程 序的开发,并提出了一种实用的开发模式。 关键词:蓝牙技术;Linux;OpenBT

【IT专家】《Linux与Qt程序设计》知识框架

本文由我司收集整编,推荐下载,如有疑问,请与我司联系 《Linux与Qt程序设计》知识框架 本文主要是通过一本书来大致了解Qt开发的框架,不对具体内容做详细分析。?1.首先弄清楚概念:定义- 以自己的话理解是什么- 实现的是什么功能- 用在哪些地方 ?2.前面认识到的知识点的特点- 代码实现- 工程代码分析 ?第一部分Linux基础知识第二部分Qt程序基础第5章OtCreator下载与安装5.1 QtCreator下载5.1.1 使用软件中心下载QtCreator5.1.2 访问Qt网站下载相关资源5.2 第一个Qt程序5.3 QtCreator介绍5.3.1 QtCreator界面介绍5.3.2 编译、调试、发布设置5.4 QtDesigner介绍第6章Qt基础6.1 Qt概述与特性6.1.1 Qt简介6.1.2 Qt特性 ?Qt SDK包括:Qt库、Qt Creator IDE、Qt工具:Qt Designer、Qt Linguist(消除国际化流程障碍)、Qt Assistant. ?6.2 Qt与Xll的关系6.2.1 什么是X116.2.2 Qt与Xl16.3 Qt与KDE的关系6.3.1 KDE简介6.3.2 Qt与KDE6.4 Qt库和组件 ?Qt SDK中主要包括类库、开发工具、平台相关支持、授权许可等。 ?其中类库包含了Qt的所有对外发布的功能组件: ?1)Core: Qt4的基本模块,定义了其他模块使用的Qt核心的非GUI类,所有其他模块都依赖于该模块。 ?2)GUI: 定义了图形用户界面类 ?3)WebKit:提供了一个在Qt中使用Web Browser的渲染与解析引擎。 ?4)Graphic View:提供的是一种Qt Model-View编程模式,既可以管理大数量的定制2D graphical items,又可以与它们交互,由于一个视图窗口可以把这些项绘制出来,并支持旋转与缩放。 ?5)Scripting:提供了对脚本(如:Java、Python、Perl、Ruby)的支持。 ?6)OpenGL ?7)XML: 定义了处理XML(eXtensible Markup Language)语言的类。

bluez 交叉编译--测试通过(参考了网上的教程,并做了修改)

bluez 交叉编译--测试通过(参考了网上的教程,并做了修改) arm-linux-gcc 4.3.3 ========================================== 我用到的几个库: bluez-lib-3.36.tar.gz expat-2.0.1.tar.gz dbus-1.2.16.tar.gz glib-2.22.4.tar.bz2 libusb-0.1.12.tar.gz bluez-utils-3.36.tar.gz ==================================================== /opt/libs 和/opt/utils是我自己编译时用的路径,你可以随便的选取。 1,编译安装bluez-lib-3.36.tar.gz 这个库不需要什么依赖,直接解压,配置,编译然后安装即可。 #tar zxvf bluez-lib-3.36.tar.gz #./configure --prefix=/opt/libs --host=arm-linux --target=arm-linux CC=arm-linux-gcc #make #make install 2,编译安装expat-2.0.1.tar.gz 这个库是后面的dbus依赖的,你也可以用libxml2来代替expat,官方网站上说dbus必须依赖于他们中的一个,我这里用的是expat-2.0.1.tar.gz。 #tar zxvf expat-2.0.1.tar.gz #./configure --prefix=/opt/libs --host=arm-linux --target=arm-linux CC=arm-linux-gcc #make #make install 3,编译安装dbus-1.2.16.tar.gz #tar zxvf dbus-1.2.16.tar.gz #echo ac_cv_have_abstract_sockets=yes>arm-linux.cache #./configure --prefix=/opt/libs --host=arm-linux --target=arm-linux CC="arm-linux-gcc -I/opt/libs/include -L/opt/libs/lib" --cache-file=arm-linux.cache --with-x=no #make #make install ======================================================= 4,编译安装glib-2.22.4.tar.bz2 #tar -zxjf glib-2.22.4.tar.bz2 #echo ac_cv_type_long_long=yes>arm-linux.cache #echo glib_cv_stack_grows=no>>arm-linux.cache #echo glib_cv_uscore=no>>arm-linux.cache #echo c_cv_func_posix_getpwuid_r=yes>>arm-linux.cache #echo ac_cv_func_posix_getgrgid_r=yes>>

QT程序,如何在ARM板上运行

QT程序,如何在ARM板上运行写这篇文章,主要是为了说明怎么让PC机下编译好的QT程序移植到板子上运行。在说明之前,我们要了解一个事情,就是QT。QT是一个跨平台的开发工具,具有很好的移植性,它所依赖的库文件在PC机上和在ARM上是不一样的,那么我要怎么做呢? 很简单,就是重新编译已经写好的QT程序。为什么需要重新编译,第一,ARM的CPU的指令集和PC的CPU指令集肯定是不一样的,也就是需要交叉编译。第二:由于QT所依赖的库文件不一样,在不同的指令集得CPU里,库是需要移植的。我这里假设ARM板的文件系统里已经移植好了QT相关的库文件(具体怎么移植,我会再写一篇文章),移植好后,在开发板上就可以移植QT程序了。 那么,具体我要怎么编译呢?我们都知道,编译好的QT的程序,一般会有几个.CPP\.h文件,这么多的文件我们要怎么样编译。首先,我们需要安装QT版本的库,一定要注意,这个库文件一定和开发板上的是同一个库。我们假设这个库名字叫qtembed450-arm。以下步骤一定要注意: 1.安装目录一定要在“/usr/local/”下; 2.安装成功后,这步非常关键,一定要设置环境变量,而且,我们要设置三个环境变量,这样做有三个目的:①可以在任何路径下用库里的命令②编译时候可以指定编译规则为 arm-linux-g++③编译时候可以指定到所需要的库文件。那么安装后,输入一下命令:gedit /root/.bashrc.这个命令执行后就进入到设置环境变量的地方,我们要加入以下三个环境变量的设置: export PATH=$PATH:/usr/local/qtembed450-arm/bin export LD_LIBRARY_PATH=$LD_LTBRARY_PATH:/usr/local/qtembed450-arm/lib export QMAKESPEC=/usr/local/qtembed450-arm/mkspecs/default 以上设置非常的重要,非常的关键。呵呵,先照着设置,具体原因我会细谈。注意,我编译用的很重要的qmake-arm 命令,就在/usr/local/qtembed450-arm/bin下,可以打开看看哦!环境变量设置好后,用which qmake-arm 命令来确认下是否成功,呵呵。 3.准备工作做到这里,算是进行一半了,哎,真累啊!还要接着写呢。接下来我们要把我们的编译好的QT程序的文件夹打开,把里面的 .CPP/.h文件拷贝出来,新建立一个文件夹; 4.把以上的文件里的.cpp .h文件复制后新建立一个文件夹。 5.新文件夹建立后,在linux终端中进入到该文件夹所在目录下,执行这个命令:qmake-arm -project命令,千万注意,-project 和arm之间一定要有空格啊!该命令执行后,会生成一个.pro文件,紧接着呢,执行qmake-arm命令,该命令执行后呢,会生成一个Makefile文件,这步很关键哦,没有这步就不会有Makefile文件,一般在这步会出现很多错误,就是库没有发现之类,这个时候,一定要检查前面的步骤,仔细检查看是否是错误。我们这个时候打开Makefile文件看一下,会发现,里面的编译已经变成 arm-linux-g++。这个时候,就踏实,接下来怎么办?还用问吗,直接make下就好了,哈哈,简单吧!看到上面的qtmyjpg文件了吗?这个是可以在开发板上运行的哦!接下来

linux 蓝牙编程 bluez

linux蓝牙编程bluez 收藏 从别的地方转了一篇蓝牙编程的,感觉比较详细,接下来自己慢慢验证一下。 实战Linux Bluetooth编程 实战Linux Bluetooth编程(一)协议栈概述 前言:随着嵌入式系统的飞速发展,很多嵌入式平台上需要Bluetooth设备和应用。但在Linux 下如何对 Bluetooth编程,一直没有一份很好的中文文档。Sam结合自己的工作,一步一步将一些有用的东西记录下来 ,希望对其它Linux下Bluetooth编程的朋友有点帮助。 一:Bluetooth基本概念: Bluetooth是爱立信、诺基亚、东芝、IBM和Intel 5家公司在1998年联合推出的一项无线网络技术。其宗旨 是提供一种短距离、低成本的无线传输应用技术。在行业协会筹备阶段,需要一个极具有表现力的名字来命 名这项高新技术。行业组织人员,在经过一夜关于欧洲历史和未来无限技术发展的讨论后,有些人认为用 Blatand国王的名字命名再合适不过了。Blatand国王将现在的挪威,瑞典和丹麦统一起来;就如同这项即将 面世的技术,将标准不一的短距离无线传输技术统一起来。 Intel负责半导体芯片和传输软件的开发,爱立信负责无线射频和移动电话软件的开发,IBM 和东芝负责笔记 本电脑接口规格的开发。 蓝牙是无线数据和语音传输的开放式标准,它将各种通信设备、计算机及其终端设备、各种数字数据系统、 甚至家用电器采用无线方式联接起来。它的传输距离为10cm~10m,如果增加功率或是加上某些外设便可达 到100m的传输距离。它采用2.4GHz ISM频段和调频、跳频技术,使用权向纠错编码、ARQ、TDD和基带协议。

01.linux下搭建opencv并在qt中使用

linux下搭建opencv并在qt中使用 作者:vmezr 由于最近要着手做pcduino上的视频聊天的项目,从未接触过pcduino,经过讨论决定使用qt来实现。其实qt和opencv 我都没有接触过,也打算趁机学习一下。言归正传,首先得搭建好需要的环境,第一步是安装配置opencv,然后在qt中使用opencv的库。 (opencv的安装方法部分参考雷雨同鞋哒~) 首先,在官网https://www.sodocs.net/doc/3a4750366.html,/中下载opencv原码,选择linux版本进行下载。 以opencv2.4.8为例:(我用的是opencv2.4.13) 1.将压缩包解压到/usr/local/ 2.直接使用sudo apt-get install cmake下载并安装cmake 3.为了方便后续摄像头捕捉等功能还需要下载opencv依赖的一些包: apt-cache search opencv 使用此命令可以直接查到需要下载的依赖包 leo@leo-virtual-machine:/usr/local/opencv/release$ apt-cache search opencv libcv-dev - Translation package for libcv-dev libcv2.3 - computer vision library - libcv* translation package libcvaux-dev - Translation package for libcvaux-dev libcvaux2.3 - computer vision library - libcvaux translation package libhighgui-dev - Translation package for libhighgui-dev libhighgui2.3 - computer vision library - libhighgui translation package libopencv-calib3d-dev - development files for libopencv-calib3d libopencv-calib3d2.3 - computer vision Camera Calibration library

实时操作系统到Linux系统的应用移植

实时操作系统到Linux系统的应用移植 ■MontaVistaJimReady 北京麦克泰软件技术有限公司译 从一个操作系统到另一个操作系统的应用程序移植,即使在最好的情况下也经常是一个艰巨的任务。把一个实时的嵌入式应用程序移植到一个新的操作系统上,可以说是一项最困难的任务。为了帮助开发人员在不久的将来转移到嵌入式Linux上,或者将现有的应用程序运行在嵌入式Linux上这种投资的必要性,Jim解释了这一转换的过程,评估了涉及到的困难和挑战,并且阐述了认识这种转换的益处。 越来越多的公司正在转向嵌入式Linux,把它作为其下一代产品的操作系统。事实上,VDC的报告显示了嵌入式I。inux占到32位和64位领域设计的三分之一,是其他所有嵌入式系统的2倍。 一个典型的基于RToS的应用程序依赖于很多因素,其中最重要的是编程/内存模型、API、性能,特别是实时响应的能力。另外一个重要的因素是软件开发环境。 编程模型 几乎所有使用的RToS有一个简单的编程模型,它由多线程的执行(通常称为“任务”)构成,包含在单一的地址空问中。举例来说,一个C语言的程序有一个单一的主函数,它创建所有其他的线程。每一个线程依次被定义为总程序中的一个C函数。不管是RTOS还是非保护内存中的应用程序,它们的物理地址和逻辑地址都是一样的。可能会有一些超级用户模式下的操作使用限制了在用户模式下的应用程序发出一些指令。基本上,所有的内存对应用程序来说都是虚拟的。 在过去,大多数嵌入式处理器没有内存管理单元,因此RTOS单地址空间模式是必需的。然而今天大多数的中高端处理器配备了MMU,由MMU来管理内存。 该体系结构的描述提出了一个移植RTOS代码到Linux上的简单架构: ◆RTOS的全部应用代码移植到一个Linux单进程; ◆RToS的任务转换成“nux线程; ◆RTOS的物理地址空间映射到Linux的虚拟地址 空间。 诸如VME机架的多板或多处理器架构,移植到一个多进程的Linux应用,如图1所示。 图1 构架上的考虑:进程和线程的创建 是否使用遵循API的Vxworks和PSOS等RTOS仿真软件包,开发人员最终必须决定是否将线程或是进程作为执行RTOS的任务。在这点上,Linux内核对待线程和进程是同等的,都是以调度为目的的。然而不同的API创建和管理每个实体的类型、性能、资源的成本和益处都是关联的。 通常来说,进程比线程大一点,因为它们传送更多的上下文信息。一个I。inux线程的上下文如同RTOS的一个任务,主要由CPU寄存器、堆栈、当前的程序指针以及一些内核数据结构的入口组成。一个进程加上一个完整的虚拟地址空间。这样,至少内核必须创建和跟踪进程的页转换、所有代码的类型、上下文、数据等。对于重量级进程,上下文的主要影响有两点:创建的时间和相互的上下文切换时间。 RTOS的代码会尽可能地争取要轻量级的执行。同样,当很多RTOS提供了动态的任务创建API时,其他以静态任务定义页表为特色,所有RTOS的商家不鼓励使用频繁的任务创建以节省时间和空间。Linux进程是重 84《平旁机乌嵌入式糸诧应冈》 adv@mesnet.com.cn(广告专用)  万方数据

bluez编译移植

Dbus移植步骤 1.进入dbus的目录运行./configure --host=arm-linux --prefix=/bluetooth/dbus 2.出现错误can not run test program while cross compiling [mystic@moolenaar]$ . checking for getpeereid... no checking abstract socket namespace... configure: error: cannot run test program while cross compiling See `config.log' for more details. 执行./configure时要在宿主系统中运行一些测试程序,因为是交叉编译所以这个测试是一定通不过的。不过没问题,我们可以在configure 时指定cache-file文件来屏障掉测试程序,在下面编译glib包时会遇到同样的问题。 处理方法: 在源码包根目录下执行 [mystic@moolenaar]$ echo ac_cv_have_abstract_sockets=yes > arm-linux.cache 或者自己新建一个文件,vim arm-linux.cache 在里面输入:ac_cv_have_abstract_sockets=yes

[mystic@moolenaar]$ ./configure --host=arm-linux --prefix=/bluetooth/dbus --cache-file=arm-linux.cache 参数解释:--prefix指定编译好的文件存放的路径,默认会放到/usr/bin 下 --host 指定编译器的类型,这里指定为arm-linux交叉编 译,默认是本机的gcc编译 --cache 指定测试的信息写的地方,这里是写到了 arm-linux.cache里面 一会会提示缺少xml库,下载libxlm2,解压后: ./configure –-prefix=/bluetooth/libxml –-host=arm-linux make ->make install 编译完成后一定要检查libxml/lib下的库文件的格式是否是ARM的,否则不能用。查看的方式是file libxml.so.2.6.so(库名),出现ARM 表示是交叉编译的,出现i686等信息表示是本机编译的。 2. 编译dbus,cannot find -lX11 [mystic@moolenaar]$ make arm-linux/bin/ld: cannot find -lX11 collect2: ld returned 1 exit status make[2]: *** [dbus-launch] error 1 make[2]: Leaving directory `/3.3.2/dbus-1.0.2/tools'

相关主题