Android 設(shè)備驅(qū)動(dòng)(下)
MTD 驅(qū)動(dòng) Flash 驅(qū)動(dòng)通常使用 MTD (memory technology device ),,內(nèi)存技術(shù)設(shè)備。 MTD 的字符設(shè)備: /dev/mtdX 主設(shè)備號(hào) 90. MTD 的塊設(shè)備: /dev/block/mtdblockX 主設(shè)備號(hào) 13. MTD 驅(qū)動(dòng)源碼 drivers/mtd/mtdcore.c:MTD核心,,定義MTD原始設(shè)備 drivers/mtd/mtdchar.c:MTD字符設(shè)備 drivers/mtd/mtdblock.c:MTD塊設(shè)備 MTD 結(jié)構(gòu)圖 MTD 驅(qū)動(dòng)程序是 Linux 下專門(mén)為嵌入式環(huán)境開(kāi)發(fā)的新一類(lèi)驅(qū)動(dòng)程序,。Linux 下的 MTD 驅(qū)動(dòng)程序接口被劃分為用戶模塊和硬件模塊: 用戶模塊 提供從用戶空間直接使用的接口:原始字符訪問(wèn)、原始?jí)K訪問(wèn),、FTL (Flash Transition Layer)和JFS(Journaled File System)。 硬件模塊 提供內(nèi)存設(shè)備的物理訪問(wèn),,但不直接使用它們,,二十通過(guò)上述的用戶模塊來(lái)訪問(wèn)。這些模塊提供了閃存上讀,、寫(xiě)和擦除等操作的實(shí)現(xiàn),。 藍(lán)牙驅(qū)動(dòng) 在 Linux 中,藍(lán)牙設(shè)備驅(qū)動(dòng)是網(wǎng)絡(luò)設(shè)備,,使用網(wǎng)絡(luò)接口,。 Android 的藍(lán)牙協(xié)議棧使用BlueZ實(shí)現(xiàn)來(lái)對(duì)GAP, SDP以及RFCOMM等應(yīng)用規(guī)范的支持,并獲得了SIG認(rèn)證。由于Bluez使用GPL授權(quán), 所以Android 框架通過(guò)D-BUS IPC來(lái)與bluez的用戶空間代碼交互以避免使用未經(jīng)授權(quán)的代碼,。 藍(lán)牙協(xié)議部分頭文件: include/net/bluetooth/bluetooth.h 藍(lán)牙協(xié)議源代碼文件: net/bluetooth/* 藍(lán)牙驅(qū)動(dòng)程序部分的文件: drivers/bluetooth/* 藍(lán)牙的驅(qū)動(dòng)程序一般都通過(guò)標(biāo)準(zhǔn)的HCI控制實(shí)現(xiàn),。但根據(jù)硬件接口和初始化流程的不同,又存在一些差別,。這類(lèi)初始化動(dòng)作一般是一些晶振頻率,,波特率等基礎(chǔ)設(shè)置。比如CSR的芯片一般通過(guò)BCSP協(xié)議完成最初的初始化配置,,再激活標(biāo)準(zhǔn)HCI控制流程,。對(duì)Linux來(lái)說(shuō),一旦bluez可以使用HCI與芯片建立起通信(一般是hciattach + hciconfig),,便可以利用其上的標(biāo)準(zhǔn)協(xié)議(SCO, L2CAP等),,與藍(lán)牙通信,使其正常工作了,。 WLAN 設(shè)備驅(qū)動(dòng)(Wi-Fi)(比較復(fù)雜我面會(huì)專門(mén)寫(xiě)個(gè)wifi分析) 在linux中,,Wlan設(shè)備屬于網(wǎng)絡(luò)設(shè)備,,采用網(wǎng)絡(luò)接口。 Wlan在用戶空間采用標(biāo)準(zhǔn)的socket接口進(jìn)行控制,。 WiFi協(xié)議部分頭文件: include/net/wireless.h WiFi協(xié)議部分源文件: net/wireless/* WiFi驅(qū)動(dòng)程序部分: drivers/net/wireless/* wifi模塊結(jié)構(gòu)圖: |
|