Kernel中bluetooth相关的config选项
http://blog.csdn.net/tommy_wxie/article/details/17716675
有了前几篇对bluetooth的初步了解,今天晓东就和大家正式开始bluetooth的代码阅读了。在开写这篇文章之前,晓东也很纠结,究竟该从哪里开始着手写相关的内容。最初的打算是准备从蓝牙的开关开始着手的,这是一条大家很好理解也很容易上手的路线。但后来好好想想,还是放弃了这样的想法,因为,我们的这次的系列文章准备稍微讲得深入一点,协议层是肯定要涉及的,而不是简单的浮在JNI之上去分析。所以,今天我们首先从kernel中的config选项着手,先来分析一下若想使用蓝牙,在kernel中需要选上哪些选项。
我们在《Android4.0中Bluetooth的代码结构》一文中提到,kernel中的代码包含两个部分,一个部分是stack的,一个部分是driver的。stack的位于kernel/net/bluetooth目录下,那么我们就去这个目录下的Makefile和Kconfig来看一下吧:
- menuconfig BT
- tristate "Bluetooth subsystem support"
- ……
- Say Y here to compile Bluetooth support into the kernel or say M to
- compile it as module (bluetooth).
毫无疑问,这里我们要把bluetooth编译进kernel,这个是必不可少的了,选择Y,基本上我们是不会把stack相关的内容编译成module模式的。
- config BT_L2CAP
- bool "L2CAP protocol support"
- select CRC16
- select CRYPTO
- select CRYPTO_BLKCIPHER
- select CRYPTO_AES
- select CRYPTO_ECB
- help
- L2CAP (Logical Link Control and Adaptation Protocol) provides
- connection oriented and connection-less data transport. L2CAP
- support is required for most Bluetooth applications.
从注释上可以清楚地看到,L2CAP对大多数的蓝牙应用是不可缺少的。事实上也是如此,无论我们是听音乐,传文件,我们都需要在L2CAP链路上建立相应的profile,所以,这里没有什么异议地选上吧。
- config BT_SCO
- bool "SCO links support"
- help
- SCO link provides voice transport over Bluetooth. SCO support is
- required for voice applications like Headset and Audio.
SCO链路是用来打电话的,所以一般对手机而言,这里是要选上的,我们这里也同样选上。
source "net/bluetooth/rfcomm/Kconfig"
下面就到了rfcomm的Kconfig选项,
- config BT_RFCOMM
- tristate "RFCOMM protocol support"
- depends on BT && BT_L2CAP
- help
- RFCOMM provides connection oriented stream transport. RFCOMM
- support is required for Dialup Networking, OBEX and other Bluetooth
- applications.
很明显可以看到他是OBEX层的支撑,OBEX是我们文件传输OPP的支撑,所以,要想能够传输文件,rfcomm是不可缺少的,选上吧。
- config BT_RFCOMM_TTY
- bool "RFCOMM TTY support"
- depends on BT_RFCOMM
- help
- This option enables TTY emulation support for RFCOMM channels.
这个是rfcomm的模拟串口的功能,可以使能,若是实在不想使能应该也没有关系吧。不选应该问题也不大,不过晓东是选上的,多选也没有关系啦。
继续回到上一层的Kconfig文件,source "net/bluetooth/bnep/Kconfig",到了bnep的目录
- config BT_BNEP
- tristate "BNEP protocol support"
- depends on BT && BT_L2CAP
- select CRC32
- help
- BNEP (Bluetooth Network Encapsulation Protocol) is Ethernet
- emulation layer on top of Bluetooth. BNEP is required for
- Bluetooth PAN (Personal Area Network).
这里可以看到,这个选项是用来支持PAN的,就是通过蓝牙共享上网,有点类似wifi的soft ap(共享热点),Android在4.0之后是支持的,所以我们也选上吧。
- config BT_BNEP_MC_FILTER
- bool "Multicast filter support"
- depends on BT_BNEP
- help
- This option enables the multicast filter support for BNEP.
- config BT_BNEP_PROTO_FILTER
- bool "Protocol filter support"
- depends on BT_BNEP
- help
- This option enables the protocol filter support for BNEP.
这两个是多路filter和protocol filter的支持,这里也选上吧。
继续看bluetooth下的Kconfig文件,source "net/bluetooth/cmtp/Kconfig",这次进入了cmtp目录,我们也去看一下
- config BT_CMTP
- tristate "CMTP protocol support"
- depends on BT && BT_L2CAP && ISDN_CAPI
- help
- CMTP (CAPI Message Transport Protocol) is a transport layer
- for CAPI messages. CMTP is required for the Bluetooth Common
- ISDN Access Profile.
这个是用来支持CAPI的,我们好像用不到,可以不选。
继续看source "net/bluetooth/hidp/Kconfig"如下:
- config BT_HIDP
- tristate "HIDP protocol support"
- depends on BT && BT_L2CAP && INPUT && HID_SUPPORT
- select HID
- help
- HIDP (Human Interface Device Protocol) is a transport layer
- for HID reports. HIDP is required for the Bluetooth Human
- Interface Device Profile.
这个是用来支持HID设备的,比如蓝牙鼠标,蓝牙键盘,毫无疑问若是在平板上,这个是非常重要的,在手机平台的话选不选意义就不大了,晓东会把这里选上的。
最后就是source "drivers/bluetooth/Kconfig",一下子就到drvier下面的Kconfig了,去看看吧:
- config BT_HCIBTUSB
- tristate "HCI USB driver"
- depends on USB
- ……
- config BT_HCIBTSDIO
- tristate "HCI SDIO driver"
- depends on MMC
- ……
- config BT_HCIUART
- tristate "HCI UART driver"
- ……
这3个就放到一起来看了,是用来表示接口的,有USB,SDIO,UART。晓东这里选择的是UART的接口,一般而言,在手机方案上,uart会多一点,在平板方案上,usb则会多一点。
选择了这个之后,就是各家方案的具体协议的driver了:
- config BT_HCIUART_BCSP
- bool "BCSP protocol support"
- depends on BT_HCIUART
比较多,有H4,BCSP什么的,这里就写成一个csr的drvier的选项为例,别的就不写了。一般而言,这里都是厂商自己开发加入的。
- config BT_SINGLE_LINK
- tristate "Bluetooth single link"
- help
- This enables the Bluetooth driver for single link.
最后再提一下,single link的选项,好坑啊,晓东当时有一次不小心把这个选上了,发现只能连一个链路,就是比如配对了一个手机,就不能连耳机了。呵呵,所以,这个就不要选了吧。
至此,Kernel中的config选项就介绍完毕了。选上他们,编译内核吧。
Kernel中bluetooth相关的config选项相关推荐
- Xcode中指令集相关选项
Xcode中指令集相关选项(Build Setting中) (1)Architectures Space-separated list of identifiers. Specifies the ar ...
- Linux中mod相关的命令 内核模块化 mod相关命令都是用来动态加载内核模块/驱动程序模块...
Linux中mod相关的命令 内核模块化 mod相关命令都是用来动态加载内核模块/驱动程序模块 http://baike.baidu.com/link?url=lxiKxFvYm-UfJIxMjz ...
- vue-cli中的webpack的config配置详细说明
vue-cli中的webpack的config配置详细说明 打开我们的vue项目文件夹我们可以清楚的看到文件夹下的三个文件, "dev.env.js","index.js ...
- makefile中的CPPFLAGS LDFLAGS CFLAGS选项详解
让我们先看看 Makefile 规则中的编译命令通常是怎么写的. 大多数软件包遵守如下约定俗成的规范: #1,首先从源代码生成目标文件(预处理,编译,汇编),"-c"选项表示不执行 ...
- linux内核多队列,Linux Kernel 中 Workqueue 使用系统默认队列和创建队列的方法
关于workqueue,我们还是有很多话要说. 想必大家对workqueue相关的函数(schedule_work .queue_work.INIT_WORK.create_singlethread_ ...
- 密码学专题 OpenSSL中SSL相关指令
再谈SSL和OpenSSL 由于SSL协议已经是密码学和PKI技术中非常具体的一个应用协议,为了实现它,OpenSSL在密码学基础应用和PKI技术的基础实现上做了大量的工作,才逐渐形成和奠定了Open ...
- Linux kernel中常见的宏整理
0x00 宏的基本知识 // object-like #define 宏名 替换列表 换行符 //function-like #define 宏名 ([标识符列表]) 替换列表 换行符 替换列表和标识 ...
- [RK3399][Android7.1] 调试笔记 --- DDR中clock相关配置
OS: Android 7.1 Board: Firefly-RK3399 Kernel: v4.4.55 把这个拎出来说是因为在调试ddr default rate的时候对这部分有些误区. dmc中 ...
- 广告屏蔽案件的中美相关司法实践初探
现代人于生活中已经离不开各种类型的多媒体,而提供多媒体内容的平台会于使用者浏览过程中安插各种广告,这样的模式已经成为此类型平台主要收入来源之一.然而由于这样的广告中断行为会降低使用者的浏览体验,因此近 ...
- body中的相关标签
body中的相关标签,主要展现在页面的内容区域. 学习<hx>标签,为你的网页添加标题 比如打开一个百度新闻的网站,https://baijiahao.baidu.com/s?id=170 ...
最新文章
- 适用于AMD ROC GPU的Numba概述
- 减法变加法------补码----同余理论
- zuul 路由不生效_springBoot集成zuul路由forward,设置setSendZuulResponse无效
- Centos6.9安装部署nginx服务器
- java token_Java实现基于token认证的方法示例
- 如何在ubuntu中编写python_在ubuntu下编写python(python入门)
- activity流程变量使用
- SAP License:实施ERP之后库存反而增加
- Facebook账户 “ 解封、防封、养号 ” 知识要点
- koa 接口返回数据_node和koa实现数据mock接口
- Abseil之New Join API
- 车联网相关知识点整理
- SoapUI WebService 接口测试
- java实训文献_java实训论文参考文献写作指导
- 【SENCHA TOUCH】Sencha Touch ExtJs 给 Button 添加图片(二)
- 极限精简服务器系统,极限精简斐讯T1/N1 极客开发者强迫症福音6.25
- 质性数据分析软件NVivo教程:自动编码情感
- 互联网后台的奥秘 - 腾讯一大牛的分享
- 校招经历-java开发面试题
- javascript文字特效
热门文章
- [Unity] material was not upgraded. There‘s no upgrader to convert {1} shader to selected pipeline报错
- 好用的影子系统软件,系统辅助工具
- 消息中间件----ActiveMQ
- 解决阿里云轻量应用服务器不能安装应用
- 手淘双11最新实践:PopLayer弹层领域研发模式升级
- scikit-learn:回归分析—一元非线性回归
- 曾经的荣誉,偶然被唤醒
- python中关于requests里的timeout()
- 如何查看端口是否开启
- 终于得空,写两句了......