社区
驱动开发/核心开发
帖子详情
USB驱动:hci_usb.c中为什么没有如骨架程序中的file_operations和usb_class_driver结构?
tianwaixing2007
2009-04-03 09:38:59
最近在学习USB 蓝牙适配器的驱动开发,通过比较骨架程序driver/usb/usb-skeleton.c和driver/bluetooth下面的hci_usb.c发现,hci_usb.c的实现中仅用了一个usb_driver结构,而没有file_operations和usb_class_driver结构,也没有设定minor这样的次设备号,为什么呢?
...全文
93
回复
打赏
收藏
USB驱动:hci_usb.c中为什么没有如骨架程序中的file_operations和usb_class_driver结构?
最近在学习USB 蓝牙适配器的驱动开发,通过比较骨架程序driver/usb/usb-skeleton.c和driver/bluetooth下面的hci_usb.c发现,hci_usb.c的实现中仅用了一个usb_driver结构,而没有file_operations和usb_class_driver结构,也没有设定minor这样的次设备号,为什么呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Linux 蓝牙协议栈的
USB
+设备
驱动
摘 要:基于对Linux 下蓝牙协议栈BlueZ 源代码的分析,给出BlueZ的组织
结构
和特点。分析蓝牙
USB
传输
驱动
机制和数据处理过程, 给出实现蓝牙设备
驱动
的重要数据
结构
和流程,并总结Linux 下开发蓝牙
USB
设备
驱动
的一般方法和关键技术。 关键词:Linux 系统;蓝牙协议栈;设备
驱动
USB
Device
Driver
for Linux Bluetooth Stack LIANG Jun-xue, YU Bin (Institute of Electronic Technology, PLA Information Engineering University, Zhengzhou 450004) 【Abstract】This paper depicts the structure and characteristics of BlueZ based on analyzing the source code of Linux bluetooth stack BlueZ. It analyzes the implementation of bluetooth
USB
transport
driver
scheme and data processing procedure in detail, and gives the key data structure and implementation of bluetooth device
driver
. It summarizes the approach of developing Linux bluetooth
USB
device
driver
and the key technology. 【Key words】Linux system; bluetooth stack; device
driver
计 算 机 工 程 Computer Engineering 第 34 卷 第 9 期 Vol.34 No.9 2008 年 5 月 May 2008 ·开发研究与设计技术· 文章编号:1000—3428(2008)09—0273—03 文献标识码:A
中
图分类号:TP391 1 概述 蓝牙技术是开放式通信规范,而 Linux 是开放源码的操 作系统。廉价设备与免费软件的结合,促进了蓝牙技术和 Linux 的发展与融合。 Linux最早的蓝牙协议栈是由Axis Communication Inc在 1999 年发布的 OpenBT 协议栈。 随后, IBM 发布了 BlueDrekar 协议栈,但
没有
公开其源码。Qualcomm Incorporated 在 2001 年发布的 BlueZ 协议栈被接纳为 2.4.6 内核的一部分。此外, Rappore Technology 及 Nokia 的 Affix Bluetooth Stack 都是 Linux 系统下的蓝牙协议栈,应用在不同的设备和领域
中
。 BlueZ 是 Linux 的官方蓝牙协议栈,也是目前应用最广 泛的协议栈,几乎支持所有已通过认证的蓝牙设备。对于基 于主机的蓝牙应用,目前常见的硬件接口有 UART,
USB
和 PC 卡等,
USB
作为 PC 的标准外设接口,具有连接方便、兼 容性好和支持高速设备等特点,已广泛应用于蓝牙设备。 目前对 Linux 下
USB
设备
驱动
的研究已较为广泛而深 入[1-4] ,但对 Linux 下的蓝牙设备
驱动
还
没有
专门的研究。本 文在分析
USB
设备
驱动
和蓝牙协议栈的基础上,总结了 Linux 下开发蓝牙
USB
驱动
程序
的一般方法,并深入剖析了 其关键技术。 2 Linux 蓝牙协议栈 BlueZ 简介 BlueZ 目前已成为一个开放性的源码工程。它可以很好 地在 Linux 支持的各种体系的硬件平台下运行,包括各种单 处理器平台、多处理器平台及超线程系统。 BlueZ 由多个独立的模块组成,内核空间主要包括设备
驱动
层、蓝牙核心及
HCI
层、L2CAP 与 SCO 音频层、 RFCOMM, BNEP, CMTP 与 HIDP 层、通用蓝牙 SDP 库和后 台服务及面向所有层的标准套接字接口;在用户空间提供了 蓝牙配置、测试及协议分析等工具。其组织
结构
如图 1 所示, BlueZ
没有
实现专门的 SDP 层,而是将其实现为运行在后台 的蓝牙服务库例程(图 1
没有
描述该后台服务)。 RFOMM 层支 持标准的套接口,并提供了串行仿真 TTY 接口,这使串行端 口应用
程序
和协议可以不加更改地运行在蓝牙设备上,例如 通过点对点协议 PPP 可实现基于 TCP/IP 协议簇的所有网络 应用。BNEP 层实现了蓝牙的以太网仿真,TCP/IP 可以直接 运行于其上。
USB
设备
驱动
(
hci
_
usb
.o) L2CAP层(l2cap.o) RFCOMM层 (rfcomm.o) BNEP层 (bnep.o) CMTP层 (cmtp.o) 串口设备
驱动
(
hci
_uart.o) 虚拟串口设备
驱动
(
hci
_v
hci
.o) 音频 socket RFCOMM socket BNEP socket CMTP socket L2CAP socket
HCI
socket 内核 空间 用户 空间 串口设备 CAPI设备 输入设备 网络设备 HDIP socket 音频设备 AF_BLUETOOTH socket 音频层(sco.o) PPP TCP/IP AF_INET socket BNEP层 (bnep.o) 其他设备
驱动
(bluecard_cs.o等) BlueZ工具和实用
程序
HDIP层 (hdip.o) BlueZ核心 及
HCI
层(bluez.o/bluetooth.o) 图 1 BlueZ 组织
结构
3 蓝牙
USB
设备
驱动
设备
驱动
程序
在 Linux 内核
中
起着重要作用,它使某个 硬件能响应一个定义良好的内部编程接口。这些接口隐藏了 设备的工作细节,用户通过一组独立于特定
驱动
程序
的标准 调用来操作设备。而将这些调用映射到作用于实际硬件设备 的特有操作上,则是
驱动
程序
的任务。
2023-09-05 Linux 蓝牙
驱动
匹配
USB
蓝牙的过程简单分析,方法一通过接口描述:
USB
_INTERFACE_INFO 进行匹配;方法二:通过厂家ID 和device ID匹配。
3.2 方法二:通过厂家ID 和device ID:
USB
_DEVICE(厂家ID ,device ID) 完成device匹配。bInterfaceSun
Class
: 子类型代码(由
USB
组织分配)。3.1 方法一:通过接口描述:
USB
_INTERFACE_INFO(类,子类,协议) 完成device匹配。主机控制接口(Host Controller Interface)
HCI
,即主机控制接口,属于。实际测试发现,如果上面两个
驱动
都打开,有个
驱动
无法匹配,不能进入probe函数,原因不明。
深入理解《Linux系统蓝牙Bluez协议栈》
本人作为开发人员,用朴实无华的语言,结合实际操作,毫无保留的分享Bluez协议栈的运行原理和框架,Bluez协议栈并不难,但是他的代码
结构
很复杂,如果自己摸索的话,很有可能会形成从入门到放弃的结局,另外理解...
keil编译提示Note: source
file
‘..\xx\cxx\xx.c‘ -object
file
renamed from “xx.o“ to “xx_1.o“
keil编译提示Note: source
file
‘..\xx\cxx\xx.c‘ -object
file
renamed from “xx.o“ to “xx_1.o“
insmod: can't insert '
hci
_uart.ko': invalid parameter
[root@Linux sbin]#insmod
hci
_uart.ko insmod: can't insert '
hci
_uart.ko': invalid parameter 先用dmesg查看信息,有可能已经装好了。 [root@Linux sbin]#dmesg OnAction_back OnAction_back, action=0 issue_acti
驱动开发/核心开发
21,604
社区成员
21,707
社区内容
发帖
与我相关
我的任务
驱动开发/核心开发
硬件/嵌入开发 驱动开发/核心开发
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章