天天看點

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 結構圖

Android 開發之 ---- 底層驅動開發(二)

           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子產品結構圖:

Android 開發之 ---- 底層驅動開發(二)