官术网_书友最值得收藏!

4.3.6 ADB Garget驅動程序

ADB Garget驅動程序是一種USB Garget驅動程序。如果選定此Garget驅動,Android設備作為一個USB設備的時候,提供ADB的接口。

在Linux中,USB Garget的功能是在設備端使用的功能,每一個硬件只能選定一個。這個ADB Garget是其中的一個,它實際包含了adb調試功能和大容量存儲器(Mass Storage)的功能。

ADB Garget驅動程序是在drivers/usb/gadget目錄中,其Makefile的相關內容如下所示:

    obj-$(CONFIG_USB_ANDROID)  += g_android.o
    g_android-objs                := android.o f_adb.o f_mass_storage.o

其中,android.c為實現USB Garget功能主要的文件,f_adb.c是adb功能的文件, f_mass_storage.c是標準的文件,需要包含它的目的是為了同時實現大容量存儲器的功能。

實現的主要結構體為usb_composite_driver,這表示的就是一種USBGarget驅動的描述,內容如下所示:

    static struct usb_composite_driver android_usb_driver = {
        .name     = "android_usb",
        .dev      = &device_desc,
        .strings = dev_strings,
        .bind     = android_bind,
    };

android.c中同時注冊了一個MISC設備:/dev/android_adb_enable,當打開這個設備的時候,表示使能ADB Garget的功能。

這里實現的具體內容是根據Android的ADB的協議來完成的。具體的實現在f_adb.c中完成,這個文件實現了一個USB的功能,調用如下函數增加功能。

    ret = usb_add_function(c, &dev->function);

f_adb.c中也注冊了一個MISC設備:/dev/android_adb,這個設備可以讀/寫。

在Android系統的用戶空間中,/system/core/adb目錄中的內容和ADB相關。這里生成了主機使用的adb工具和目標機器使用的adbd守護進程的可執行程序。

主站蜘蛛池模板: 繁昌县| 中宁县| 德令哈市| 波密县| 贵溪市| 辛集市| 中宁县| 三门县| 弥勒县| 长治市| 兴山县| 铜川市| 延寿县| 隆昌县| 新宾| 二手房| 南昌县| 苍溪县| 赤水市| 云安县| 中方县| 德州市| 新兴县| 三门峡市| 剑阁县| 晋宁县| 绥化市| 闵行区| 灌南县| 磐石市| 南开区| 酒泉市| 呈贡县| 湖州市| 齐齐哈尔市| 宣化县| 台北市| 姚安县| 建阳市| 吴旗县| 长沙市|