百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分析 > 正文

精品博文嵌入式6410中蓝牙的使用

liebian365 2025-03-30 18:18 18 浏览 0 评论

Bluetooth USB 适配器拥有一个 Bluetooth CSR 芯片组,并使用 USB 传输器来传输 HCI 数据分组。因此,Linux USB 层、BlueZ USB 传输器驱动程序以及 BlueZ 协议栈是使设备工作的主要内核层。现在,您将了解到三层之间如何交互以使 Linux 网络应用程序在这个设备上运行。

Linux USB 子系统类似于 PCMCIA 子系统,它们都有与移动设备交互的主机控制器设备驱动程序,并且都包含

一个向主机控制器和单个设备的设备驱动程序提供服务的核心层。USB 主机控制器遵循两个标准之一:UHCI(通用主机控制器接口)或 OHCI(开放式主机控制器接口)。由于具有 PCMCIA,单个 USB 设备的 Linux 设备驱动程序不依赖于主机控制器。经由 USB 设备传输的数据分为四种类型(或管道):

Control

Interrupt

Bulk

Isochronous

前两个通常用于小型消息而后两个则用于较大型的消息。

USB 设备插入时,主机控制器使用控制管道来枚举它并给它分配设备地址(1 到 127)。主机控制器设备驱动程

序读取的设备描述符包含关于设备的信息,例如 class、subclass 和 protocol。Linux 的 usbcore 内核模块支持

USB 主机控制器和 USB 设备。并包含 USB 设备驱动程序可以使用的函数和数据结构。USB 驱动程序利用usbcore及自己的 class/subclass/protocol 信息(请参阅内核 include/linux/usb.h 中的 struct usb_driver)注册了两个入口点:probe 和 disconnect。当相应的 USB 设备被附加时,usbcore 用枚举期间从设备配置描述符中读取的 class 信息来匹配已注册的 class 信息,并将设备与相应的驱动程序绑定。这个核心使用一种叫做 USB RequestBlock 或 URB(在 include/linux/usb.h 中定义)的数据结构,来异步地管理主机和设备之间的数据传输。设备驱动程序使用这些例程来请求各种类型的数据传输(control、interrupt、bulk 或 isochronous)。传送请求完成后,核心会使用以前注册的回调函数来通知驱动程序。

针对 Bluetooth USB 设备而言,HCI 命令使用 Control 管道传输,HCI 事件使用 Interrupt 管道,

Asynchronous (ACL) 数据使用 Bulk 管道,而 Synchronous (SCO) 音频数据使用 Isochronous 管道。Bluetooth 规范为 Bluetooth USB 设备定义了 class/subclass/protocol 代码 0xE/0x01/0x01。BlueZ USB 传输驱动程序(
drivers/bluetooth/hci_usb.c)将该 class/subclass/protocol 信息注册到 Linux USB 核心。Belkin USB 适配器插入时,主机控制器设备驱动程序会枚举它。因为在枚举期间从适配器读取的设备描述符与 hci_usb 驱动程序注册到 USB 核心的信息相匹配,所以这个驱动程序可附加到 Belkin USB 设备。由 hci_usb 驱动程序从以上描述的各个端点读取的 HCI、ACL 和 SCO 数据被透明传送到 BlueZ 协议栈。一旦做完这些,通过使用以上描述的 BlueZ服务和工具,Linux

TCP/IP 应用程序就可以运行在 BlueZ BNEP 上,而串行应用程序则可以运行在 BlueZ RFCOMM上。

5. 实验步骤

实验目录:
/UP-Magic6410/SRC/kernel/linux-2.6.21/

/UP-Magic6410/SRC/exp/wireless/03_bluetooth

在内核中添加蓝牙设备支持

1、进入宿主机中UP-Magic6410 型光盘内核目录:

[root@localhost ~]# cd /UP-Magic6410/SRC/kernel/linux-2.6.21/

2、运行 make menuconfig 命令配置内核对蓝牙的相关支持

选择Networking --->选项,如图

进入<*> Bluetooth subsystem support --->子选项,并做如下设置。如图

进入Bluetooth subsystem support --->子系统目录,配置如下:

在上图中选中“Bluetooth device drivers --->”,回车进入其子菜单,编译方式如图

选择好选项后,保存并退出。

3、重新编译内核,运行make 命令

[root@localhost linux-2.6.21]# make

scripts/kconfig/conf -s arch/arm/Kconfig

CHK include/linux/version.h

SYMLINK include/asm-arm/arch -> include/asm-arm/arch-s3c

make[1]: `include/asm-arm/mach-types.h' is up to date.

CHK include/linux/utsrelease.h

……

……

最终在内核源码目录的 arch/arm/boot 目录下生成新的ARM-LINUX 内核镜像文件zImage

[root@localhost linux-2.6.21]# ls arch/arm/boot/zImage

arch/arm/boot/zImage

[root@localhost linux-2.6.21]#

4、按照 UP-Magic6410 型光盘配套烧写文档将新生成的内核镜像文件zImage 烧写到UP-Magic6410 型设备中

相关推荐

精品博文嵌入式6410中蓝牙的使用

BluetoothUSB适配器拥有一个BluetoothCSR芯片组,并使用USB传输器来传输HCI数据分组。因此,LinuxUSB层、BlueZUSB传输器驱动程序以及B...

win10跟这台计算机连接的前一个usb设备工作不正常怎么办?

前几天小编闲来无事就跑到网站底下查看粉丝朋友给小编我留言询问的问题,还真的就给小编看到一个问题,那就是win10跟这台计算机连接的一个usb设备运行不正常怎么办,其实这个问题的解决方法时十分简单的,接...

制作成本上千元的键盘,厉害在哪?

这是稚晖君亲自写的开源资料!下方超长超详细教程预警!!全文导航:项目简介、项目原理说明、硬件说明、软件说明项目简介瀚文智能键盘是一把我为自己设计的——多功能、模块化机械键盘。键盘使用模块化设计。左侧的...

E-Marker芯片,USB数据线的“性能中枢”?

根据线缆行业的研究数据,在2019年搭载Type-C接口的设备出货量已达到20亿台,其中80%的笔记本电脑和台式电脑采用Type-C接口,50%的智能手机和平板电脑也使用Type-C接口。我们都知道,...

ZQWL-USBCANFD二次开发通讯协议V1.04

修订历史:1.功能介绍1.1型号说明本文档适用以下型号:  ZQWL-CAN(FD)系列产品,USB通讯采用CDC类实现,可以在PC机上虚拟出一个串口,串口参数N,8,1格式,波特率可以根据需要设置(...

win10系统无法识别usb设备怎么办(win10不能识别usb)

从驱动入手,那么win10系统无法识别usb设备怎么办呢?今天就为大家分享win10系统无法识别usb设备的解决方法。1、右键选择设备管理器,如图:  2、点击更新驱动程序,如图:  3、选择浏览...

微软七月Win8.1可选补丁有内涵,含大量修复

IT之家(www.ithome.com):微软七月Win8.1可选补丁有内涵,含大量修复昨日,微软如期为Win7、Win8.1发布7月份安全更新,累计为6枚安全补丁,分别修复总计29枚安全漏洞,其中2...

如何从零开始做一个 USB 键盘?(怎么制作usb)

分两种情况:1、做一个真正的USB键盘,这种设计基本上不涉及大量的软件编码。2、做一个模拟的USB键盘,实际上可以没有按键功能,这种的需要考虑大量的软件编码,实际上是一个单片机。第一种设计:买现成的U...

电脑识别U盘失败?5个实用小技巧,让你轻松搞定USB识别难题

电脑识别U盘失败?5个实用小技巧,让你轻松搞定USB识别难题注意:有些方法会清除USB设备里的数据,请谨慎操作,如果不想丢失数据,可以先连接到其他电脑,看能否将数据复制出来,或者用一些数据恢复软件去扫...

未知usb设备设备描述符请求失败怎么解决

出现未知daousb设备设备描述符请求失du败解决办zhi法如下:1、按下Windows+R打开【运行】;2、在版本运行的权限输入框中输入:services.msc按下回车键打开【服务】;2、在服务...

读《飘》47章20(飘每章概括)

AndAhwouldn'tleaveMissEllen'sgrandchildrenfornotrashystep-patobringup,never.Here,Ah...

英翻中 消失的过去 37(消失的英文怎么说?)

翻译(三十七):消失的过去/茱迪o皮考特VanishingActs/JodiPicoult”我能做什么?“直到听到了狄利亚轻柔的声音,我才意识到她已经在厨房里站了好一会儿了。当她说话的时候,...

RabbitMQ 延迟消息实战(rabbitmq如何保证消息不被重复消费)

现实生活中有一些场景需要延迟或在特定时间发送消息,例如智能热水器需要30分钟后打开,未支付的订单或发送短信、电子邮件和推送通知下午2:00开始的促销活动。RabbitMQ本身没有直接支持延迟...

Java对象拷贝原理剖析及最佳实践(java对象拷贝方法)

作者:宁海翔1前言对象拷贝,是我们在开发过程中,绕不开的过程,既存在于Po、Dto、Do、Vo各个表现层数据的转换,也存在于系统交互如序列化、反序列化。Java对象拷贝分为深拷贝和浅拷贝,目前常用的...

如何将 Qt 3D 渲染与 Qt Quick 2D 元素结合创建太阳系行星元素?

Qt组件推荐:QtitanRibbon:遵循MicrosoftRibbonUIParadigmforQt技术的RibbonUI组件,致力于为Windows、Linux和MacOSX提...

取消回复欢迎 发表评论: