蓝牙驱动浅析

bluetooth driver in Android2.3

使用高通芯片,linux2.6.35.7

board-vital2.c初始化蓝牙GPIO,bt_gpio_table中配置GPIO。设置了UART1的RTS,CTS,TX,RX引脚和蓝牙模块的RESET,SHUTDOWN,WAKE,HOST_WAKE引脚,bcm_bt_lpm_device变量将被注册到platform_device,设置WAKE,HOST_WAKE两个引脚的触发函数。
bcm_bt_lpm.c动态设置GPIO,实现broadcom
android/external/bluetooth/bluez/tools目录实现了bluez上下层通讯的模块
bccmd----Utility for the CSR BCCMD interface。bccmd.c中有很多command,一部分命令式对PSKEY的管理。transport_write通过串口发送命令给蓝牙模
    块。transport_read通过串口读取蓝牙模块参数。transport_open/transport_close函数控制设备的开关/dev/ttyS*
hciattach.c---HCI UART driver initialization utility。初始化UART1,然后不断poll。初始化uart1时,调用TIOCSETD,设置N_HCI的line discipline    到hci_ldisc。之后调用HCIUARTSETFLAGS,设置Uart的流控方式。之后调用HCIUARTSETPROTO,进入hci_uart_set_proto(),设置HCI的ldisc到hci_uart。>    最后注册hci_uart到hci的devices,hci_dev_list,向tasklit中注册hci_cmd_task,hci_rx_task,hci_tx_task。最后向rfkill注册RFKILL_TYPE_BLUETOO    TH。
hci_ldisc.c向tty注册hci_uart设备。初始化h4和ibs。

hci_h4.c向hci_uart注册hci_h4。


ttydriver->uart->msm_serial->hci_ldisc->hci_h4->hci_core->l2cap

数据的接收流程:
1,uart口取得蓝牙模块的数据。代码中使用msm_serial.c/msm_serial_hs.c(DMA)/msm_serial_hs_lite.c。通过msm_startup()注册了msm_irq中断获取数据。然后通过handle_rx()向tty写数据。之后调>    用tty_flip_buffer_push()-->flush_to_ldisc()中的disc->ops->receive_buf()将数据发给ldisc。
2,uart口通过ldisc传数据给hci_uart。在hci_ldisc.c中调用hci_uart_tty_receive()函数。
3,hci_uart传给其上的hci_h4。hci_uart.c中通过hu->proto->recv()向hci_h4层发送数据。
4,hci_h4传给hci层。h4_recv()-->hci_recv_frame()调用tasklet_schedule(&hdev->rx_task),该rx_task对应hci_rx_task(),其中会分成socket,even    t,acl,sco四类数据分发。
5,hci层对四类数据进行处理,acl会传给l2cap层。
6,l2cap层再通过socket传给rfcomm层。


可参见http://blog.chinaunix.net/uid-741742-id-359310.html


  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SDIO是一种用于连接多种设备的接口标准,包括Wi-Fi等无线网络设备。SDIO接口Wi-Fi驱动程序是用来管理和控制SDIO模块连接Wi-Fi设备的程序。Wi-Fi驱动程序通常是由设备制造商或操作系统供应商提供的,它们可以针对特定的SDIO模块和Wi-Fi设备进行定制。驱动程序管理SDIO接口与Wi-Fi设备的通信,控制数据流和网络连接以及提供对Wi-Fi设备的配置和监视功能。 在SDIO接口中,Wi-Fi设备一般作为一个SDIO卡出现,并通过SDIO总线与主处理器通信。因此,SDIO接口Wi-Fi驱动程序需要充分考虑SDIO总线和Wi-Fi设备之间的交互,并提供相应的操作和处理流程。常见的SDIO接口Wi-Fi驱动程序包括驱动层和协议层两部分。驱动层主要负责设备驱动程序的加载和卸载,以及控制SDIO总线与Wi-Fi设备之间的基本交互。协议层则实现与Wi-Fi设备之间的高级通信协议和数据传输,如TCP/IP协议栈、接入控制和传输协议等。 SDIO接口Wi-Fi驱动程序的设计和实现需要考虑多方面的因素,如SDIO总线的带宽和时序控制、Wi-Fi设备的固件和驱动程序兼容性、网络连接和性能要求等。通常需要经过严格的测试和优化才能实现良好的性能和稳定性。 总之,SDIO接口Wi-Fi驱动程序是一项关键技术,它的实现对Wi-Fi设备的性能和可靠性都有着重要的影响。需要专业的技术团队和优秀的开发工具支持,才能实现高品质的SDIO接口Wi-Fi驱动程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值