当前位置: 首页 > 工业控制产品 > 自动化控制 > 模块电源

类型分类:
科普知识
数据分类:
模块电源

基于BlueZ协议栈的嵌入式系统无线通信实现

发布日期:2022-04-17 点击率:57

        摘要蓝牙技术作为全球统一的无线通信标准,在多种智能设备无线互连,多媒体终端通信和家庭网络等方面的应用也越来越广泛。本文在对官方的蓝牙协议栈 BlueZ进行分析研究的基础上,在基于 S3C2410a的实验开发平台上实现了基于蓝牙协议栈 BlueZ的移植和文件传输功能,达到了预期的效果。

  1、引言

  随着科学技术发展和社会进步,嵌入式系统越来越多的应用到我们的实际生活中,极大的改变着我们的生活。开发低成本、高性能、高可靠性的嵌入式产品正在成为研究的热点。尤其是随着信息化网络化的发展,越来越需要与外部世界进行信息交换,当前主流的数据交换方式都是有线的,但有线通信存在着诸多不足,而无线通信以其无法比拟的灵活性,可移动性和极强的可扩容性正得到越来越广泛的应用。蓝牙技术作为全球统一的无线通信标准,其目的在于建立通用的低功耗、低成本无线电空中接口及其控制软件的公开标准,使通信和计算机进一步结合,使不同厂家生产的便携式设备在没有电线或电缆互相连接的情况下,能在近距离范围内具有互用、互操作的性能。而蓝牙技术在多种智能设备无线互连,多媒体终端通信和家庭网络等方面的应用也越来越广泛,本文在对蓝牙的官方协议栈 BlueZ进行深入研究的基础上,在实验开发平台上实现了协议栈的移植和文件的传输功能。

  2、BlueZ 的体系结构

  BlueZ由主机控制接口(Host ConTROL Inteace,HCI)、Bluetooth协议核心、逻辑链路控制和适配协议(Logical link ConTROL and Adaptaon Protocol,L2CAP)、SCO音频层、其它 Bluetooth服务、用户空间后台进程以及配置工具组成。它的完整结构如图 1所示(其中除应用程序和硬件外为 BlueZ提供的部分)。

BlueZ 的体系结构

  3、BlueZ协议的移植 [2]

  本文涉及到的硬件平台是三星公司的S3C2410a 开发板,软件平台是内核版本为 2.4.20的Linux操作系统, 为实现蓝牙协议栈BlueZ的移植, 可进行以下步骤进行移植:

  (1) 生成交叉编译器,创建交叉编译环境

  (2) 编译、配置实验开发平台上的 Linux内核

  (3) 安装 BlueZ 软件包

  (4) 编译实验开发平台上的Linux内核

  (5) 向s3c2410a实验平台移植 通过上述步骤完成了蓝牙协议栈 BlueZ的移植后,一个嵌入式蓝牙应用开发平台就搭建好了,下面利用该平台提供的蓝牙函数库,来进行文件传输功能的开发。

  4、文件传输功能的实现

  如上步骤成功移植蓝牙协议栈BlueZ后,一个完整的嵌入式蓝牙应用开发平台就已经搭建好了,本文将利用BlueZ提供的API函数在 RFCOMM层上实现蓝牙文件传输的功能,所采用的协议路径为:射频(RF)—基带与链路控制(BB&LC)—主机控制接口(HCI)—逻辑链路与适配协议(L2CAP)—串口仿真(RFCOMM)—对象交换协议(OBEX)。它的实现分为客户端程序和服务器端程序,流程图如图2所示。

流程图

  2反映了通过蓝牙实现文件从客户端传输一个文件到服务器的过程,其中用到的协议栈中的API函数以及针对蓝牙通信的设置如下 : (1)int socket(int domain, int type,int protocol) 通过这个函数建立一个套接字,其中参数 domain说明网络程序所用的通讯协议族,本实验中我们用的是蓝牙官方协议栈BlueZ,所以我们的 domain取值AF_BLUETOOTH,type

下一篇: PLC、DCS、FCS三大控

上一篇: 索尔维全系列Solef?PV

推荐产品

更多