USB OTG及ADB功能

本文介绍如何在Android平台上通过OTG USB线访问NAND和SATA存储空间,包括ADB调试设置、内核及文件系统配置等步骤。
AI助手已提取文章相关产品:
 

插上OTG USB线,提示打开USB存储设备,PC就可以访问Android平台的flash或者sata空间了。

前提:Android平台本机已经是可以操作flash(开机mount过的)和sata分区了。

 

ADB功能,setting->applications->debugging->USB debug选择

先装驱动,在pc端dos窗口\platform-tools下:

Adb devices(看到device打印就是连接上)

adb shell

 

ADB root权限更改:

Main.mk中更改:

ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=0

 

实例设置:USB OTG访问Nand和sata分区

Rootfs和kernel部分(cat /proc/mtd 可以查看分区表信息,如:mtd6: 06860000 00020000 "NFTL_Part")
1.kernel中config的CONFIG_AML_NFTL=y

   在kernel下的bsp文件Board-8726m-refxxx.c中,增加.unremovableflag那一行
   static struct usb_mass_storage_platform_data mass_storage_pdata = {
       .nluns = 1,
       .vendor = "AMLOGIC",
       .product = "Android MID",
       .release = 0x0100,
       .unremovableflag=0,    // 1支持sata , 0 关闭sata,支持nand.         
};


2.device\amlogic\c03ref\vold.fstab中添加:dev_mount flash /mnt/flash auto /devices/virtual/mtd/mtd6/avnftl6

3.device\amlogic\c03ref\system.prop中添加:
 vold.gadget_only_sata= 0 Nand;1 sata
 hw.nomediapartition=false

4.device\amlogic\c03ref\init.rc中添加:
 mkdir /mnt 0777 root system
 mkdir /flash 0777 system system
 mkdir /mnt/flash 0777 system system

Recovery部分
5.device\amlogic\c03ref\recovery\Recovery.mk中
 TARGET_RECOVERY_HAS_MEDIA := true

6.device\amlogic\c03ref\recovery\recovery.fstab中
 /media          vfat          /dev/block/avnftl6

7.bootable\recovery\etc\init.rc中
 mkdir /flash
 mkdir /mnt/flash
 insmod /system/lib/avnftl.ko

8.bootable\recovery\recovery.c
     int wipe_media = 1; (1,每次运行recovery模式时都会自动格式化;0,需要手动在recovery界面执行wipe media)


您可能感兴趣的与本文相关内容

<think>嗯,用户问的是USB OTG功能是干嘛的。首先,我需要确定用户对USB OTG的了解程度。可能用户是个刚接触硬件或嵌入式开发的开发者,或者是个普通用户遇到了设备连接的问题。不管怎样,我需要用简单明了的语言解释清楚。 USB OTG全称是USB On-The-Go,这个功能允许设备既可以作为主机(Host)也可以作为外设(Peripheral)。比如,普通的USB接口,手机通常只能作为外设连接到电脑,但有了OTG,手机就可以作为主机连接U盘、键盘等设备。这点需要先解释清楚。 接下来,用户可能想知道具体应用场景,比如手机读取U盘,或者平板连接打印机。这时候需要举一些例子,让用户更容易理解。然后可能需要提到技术实现,比如ID引脚检测,角色切换协议,这些技术细节虽然用户可能不需要深入,但简要说明可以增加回答的权威性。 还要考虑用户可能的深层需求,比如他们是否在开发驱动时需要支持OTG功能,或者在使用中遇到了连接问题。这时候需要注意回答的结构,从原理到应用再到注意事项,覆盖用户可能的问题。 另外,用户之前的问题是关于Linux驱动注册多种设备,所以可能有一定的技术背景,因此可以在回答中适当加入技术术语,但也要保持易懂。需要区分OTG和普通USB的区别,强调双向控制能力。 最后,注意事项部分要提醒用户兼容性、供电问题以及系统支持情况,这些都是实际使用中常见的问题。可能用户在使用OTG时遇到过无法识别设备的情况,这时候解释这些注意事项可以帮助他们解决问题。 总结一下,回答需要涵盖定义、工作原理、应用场景、技术实现、与普通USB的区别,以及使用注意事项,结构清晰,逐步深入,既满足技术人员的需求,也帮助普通用户理解。</think>--- ### 一、USB OTG 的核心功能 **USB On-The-Go(OTG)** 是一种扩展的USB协议,允许设备**动态切换角色**,既可作为**主机(Host)**(如电脑)控制其他USB设备,也可作为**外设(Peripheral)**(如U盘)被其他主机控制。这种双向能力打破了传统USB单向主从架构的限制。 --- ### 二、核心工作原理 1. **ID引脚检测** - OTG设备通过USB接口的**ID引脚电平**判断初始角色: - ID接地(0V):设备作为**主机**(例如连接U盘时) - ID悬空(高电平):设备作为**外设**(例如连接电脑时) 2. **角色切换协议(HNP)** 通过**主机协商协议(Host Negotiation Protocol)**,设备可在运行时动态切换角色,例如: - 手机先作为外设连接电脑传输数据 - 断开后作为主机连接打印机直接输出文档 3. **供电管理** OTG主机需提供至少 **5V/8mA** 的电源(标准要求),支持外接设备供电。 --- ### 三、典型应用场景 | 场景 | 传统USB | OTG实现方案 | |---------------------|-------------------------|---------------------------------| | 手机读取U盘 | 需要PC中转 | 手机直接作为Host连接U盘 | | 平板外接键盘/鼠标 | 依赖蓝牙或专用接口 | 通过OTG转接USB外设 | | 数码相机直连打印机 | 必须通过计算机 | 设备间直接通信 | | 嵌入式设备调试 | 需专用调试工具 | 通过OTG实现USB串口/网络共享 | --- ### 四、关键技术实现(以Linux驱动为例) 1. **OTG控制器驱动** 内核通过`drivers/usb/otg/`目录下的模块(如`dwc3`、`musb`)管理角色切换: ```c // 角色切换示例(drivers/usb/dwc3/core.c) if (dwc->dr_mode == USB_DR_MODE_OTG) { dwc3_otg_init(dwc); // 初始化OTG状态机 } ``` 2. **Gadget框架与Host控制器** - 当作为外设时:通过`gadget`框架(如`g_serial`实现USB串口) - 当作为主机时:调用`EHCI`/`XHCI`控制器驱动 3. **sysfs接口** 用户可通过`/sys/class/udc/`和`/sys/bus/usb/devices/`动态查看OTG状态。 --- ### 五、与普通USB的核心区别 | 特性 | 普通USB | USB OTG | |---------------------|-------------------------|-------------------------------| | 角色固定 | 主机/外设固定 | 动态切换 | | 连接方式 | 需要标准Host设备 | 允许设备间直连 | | 供电能力 | Host必须供电 | 可协商供电(SRP协议) | | 协议复杂度 | 简单主从架构 | 需要实现HNP/SRP协议 | --- ### 六、开发注意事项 1. **硬件兼容性** - 必须使用**Micro-AB型接口**(兼容Micro-A/Micro-B插头) - 确认芯片支持OTG协议(如STM32的USB OTG FS/HS模块) 2. **软件协议栈支持** - 内核需启用`CONFIG_USB_OTG`和`CONFIG_USB_OTG_WHITELIST` - 用户空间可能需要`usbutils`工具集 3. **供电限制** OTG主机供电能力有限,连接大功率设备(如移动硬盘)需外接电源。 --- ### 七、实际案例:Android手机OTG 1. **功能触发** 插入OTG线缆后,系统通过`android_usb`驱动切换模式: ```shell # 查看当前USB模式 cat /sys/class/android_usb/android0/functions # 输出可能为:mtp,adb,rndis,accessory... ``` 2. **权限管理** Android需要`android.permission.USB_PERMISSION`权限才能访问外接设备。 --- ### 八、未来演进:USB Type-C与OTG **USB Type-C接口** 通过**CC(Configuration Channel)引脚**实现了更强大的OTG功能: - 支持**Alternate Mode**(如DisplayPort视频输出) - 供电能力提升至**100W(USB PD协议)** - 正反插自动识别 --- ### 总结 USB OTG 的核心价值在于**打破设备间的主从界限**,使移动设备获得更灵活的外设扩展能力。在嵌入式开发中,合理利用OTG可以显著简化系统设计(如通过USB实现设备调试+数据通信)。使用时需特别注意供电能力和协议兼容性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值