Android 开发之 ---- 底层驱动开发(二)

Android 设备驱动(下)

           MTD 驱动

                Flash 驱动通常使用 MTD (memory technology device ),内存技术设备。

                MTD 的字符设备:

                /dev/mtdX

                       主设备号 90.

                MTD 的块设备:

                /dev/block/mtdblockX

                        主设备号 13.

                MTD 驱动源码

                        drivers/mtd/mtdcore.c:MTD核心,定义MTD原始设备

                        drivers/mtd/mtdchar.c:MTD字符设备

                        drivers/mtd/mtdblock.c:MTD块设备

                 MTD 结构图

                



           MTD 驱动程序是 Linux 下专门为嵌入式环境开发的新一类驱动程序。Linux 下的 MTD 驱动程序接口被划分为用户模块和硬件模块:

           用户模块 提供从用户空间直接使用的接口:原始字符访问、原始块访问、FTL (Flash Transition Layer)和JFS(Journaled File System)。

            硬件模块  提供内存设备的物理访问,但不直接使用它们,二十通过上述的用户模块来访问。这些模块提供了闪存上读、写和擦除等操作的实现。

     

           蓝牙驱动    

              在 Linux 中,蓝牙设备驱动是网络设备,使用网络接口。

              Android 的蓝牙协议栈使用BlueZ实现来对GAP, SDP以及RFCOMM等应用规范的支持,并获得了SIG认证。由于Bluez使用GPL授权, 所以Android 框架通过D-BUS IPC来与bluez的用户空间代码交互以避免使用未经授权的代码。             

              蓝牙协议部分头文件:
                                                   include/net/bluetooth/hci_core.h

                                                   include/net/bluetooth/bluetooth.h

                                                   蓝牙协议源代码文件:

                                                               net/bluetooth/*

                                                   蓝牙驱动程序部分的文件:

                                                                drivers/bluetooth/*

              蓝牙的驱动程序一般都通过标准的HCI控制实现。但根据硬件接口和初始化流程的不同,又存在一些差别。这类初始化动作一般是一些晶振频率,波特率等基础设置。比如CSR的芯片一般通过BCSP协议完成最初的初始化配置,再激活标准HCI控制流程。对Linux来说,一旦bluez可以使用HCI与芯片建立起通信(一般是hciattach + hciconfig),便可以利用其上的标准协议(SCO, L2CAP等),与蓝牙通信,使其正常工作了。


          WLAN 设备驱动(Wi-Fi)(比较复杂我面会专门写个wifi分析)

            在linux中,Wlan设备属于网络设备,采用网络接口。

           Wlan在用户空间采用标准的socket接口进行控制。

                     WiFi协议部分头文件:

                               include/net/wireless.h

                    WiFi协议部分源文件:

                               net/wireless/*

                    WiFi驱动程序部分:

                               drivers/net/wireless/*

          wifi模块结构图:

        

你可能感兴趣的:(linux,内核,Android,开发)