主题 : 关于S3c6410的USB 2.0 HS OTG。 复制链接 | 浏览器收藏 | 打印
疯狂的嵌入式爱好者
级别: 论坛版主
UID: 40543
精华: 1
发帖: 169
金钱: 920 两
威望: 184 点
贡献值: 1 点
综合积分: 358 分
注册时间: 2011-03-19
最后登录: 2013-05-10
楼主  发表于: 2011-10-13 12:47

 关于S3c6410的USB 2.0 HS OTG。

          今天在6410上接U盘做临时服务器,实在受不了6410上的USB 1.1 HOST那个几百K的读写速度,想想我那个几十块的路由都支持USB 2,0,而这么好性能的ARM11处理器却只有USB 1.1的速度,决定动手开始解决USB OTG。
          大家都知道,S3C6410集成了一个USB OTG PHY,这样可以很方便地进行USB 数据传输。USB OTG标准在完全兼容USB2.0,至于USB 2.0 Full speed跟USB 2.0 High speed的差别,请自己阅读USB EHCI 2.0的白皮书。
           USB OTG标准在完全兼容USB2.0标准的基础上,增添了电源管理(节省功耗)功能,它允许设备既可作为主机,也可作为外设操作(两用OTG)。OTG两用设备完全符合USB2.0标准,并可提供一定的主机检测能力,支持主机通令协议(HNP)和对话请求协议(SRP)。
           简单地说,USB OTG既可以做DEVICE也可以做HOST。三星在datasheet里面明确说明,该USB OTG是符合USB 2.0 HS标准的。但是,友善之臂设计却么有把OTG作为HOST,而是作为的Device,这点有点遗憾,相对来说,我比较喜欢通过网络下载数据。
1.2.9.1 USB OTG 2.0 High Speed
• Complies with the On-The-Go Supplement to the USB 2.0 Specification (Revision 1.0a)
• Supports high speed (480Mbps), full speed (12Mbps, Device only), low speed (1.5Mbps, Host only)
• Configures as USB 1.1 full/low speed DRD(Dual-Role Device), Host-only or Device only controller

           最近在做的一个无线网关项目上,使用了Ralink RT3052F SOC,同样地使用USB OTG,并使用Synopsys的DWC_OTG驱动,我搜索了一下,很多USB OTG都使用了该驱动,便有了把该驱动移植到6410上的想法。

百度百科上关于USB OTG平台的资料:http://baike.baidu.com/view/1604356.htm
octeon平台(ARM926EJS)
https://dev.openwrt.org/browser/trunk/target/linux/octeon/patches-2.6.30/018-dwc_otg.patch

Ralink Soc(MIPS24Kc)
https://dev.openwrt.org/browser/trunk/target/linux/ramips/files/drivers/usb

另外,已经有人做了S5PV6440上的移植,可以供我们参考。
http://patchwork.ozlabs.org/patch/89560/
http://www.spinics.net/lists/arm-kernel/msg129285.html

下面是DWC_OTG在RT2052F上的效果
dwc_otg: version 2.72a 24-JUN-2008 (Patched by Lintel 2011)
dwc_otg dwc_otg.0: dwc_otg_driver_probe(80204130)
dwc_otg dwc_otg.0: mapped base=0xb01c0000
dwc_otg: Core Release: 2.66a
dwc_otg dwc_otg.0: dwc_otg_device=0x8321ac00
dwc_otg: Periodic Transfer Interrupt Enhancement - disabled
dwc_otg: Multiprocessor Interrupt Enhancement - disabled
dwc_otg: Using DMA mode
dwc_otg: Device using Buffer DMA mode
dwc_otg dwc_otg.0: DWC OTG Controller
dwc_otg dwc_otg.0: new USB bus registered, assigned bus number 1
dwc_otg dwc_otg.0: irq 26, io mem 0x101c0000
dwc_otg: Init: Port Power? op_state=1
dwc_otg: Init: Power Port (0)
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected

usb 1-1: new high speed USB device using dwc_otg and address 2
usb 1-1: configuration #1 chosen from 1 choice
scsi0 : SCSI emulation for USB Mass Storage devices
scsi 0:0:0:0: Direct-Access     Lintel   ToolBox          8.20 PQ: 0 ANSI: 2
sd 0:0:0:0: [sda] 31539200 512-byte logical blocks: (16.1 GB/15.0 GiB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Assuming drive cache: write through
sd 0:0:0:0: [sda] Assuming drive cache: write through
sda: sda1
sd 0:0:0:0: [sda] Assuming drive cache: write through
sd 0:0:0:0: [sda] Attached SCSI disk

6410 OTG的定义:
USB OTG
Signal I/O IO Power Description
XusbDP IO VDDOTG USB Data pin DATA(+)
XusbDM IO VDDOTG USB Data pin DATA(−)
XusbXTI I VDDOTG Crystal Oscillator XI signal
XusbXTO I VDDOTG Crystal Oscillator XO signal
XusbREXT IO VDDOTG External 44.2-ohm (+/- 1%) resistor connection
XusbVBUS IO VDDOTG USB Mini-Receptacle Vbus
XusbID I VDDOTG USB Mini-Receptacle Identifier
XusbDRVVBUS O VDDOTG Drive Vbus for Off-Chip Charge Pump

内存地址:
0x7C00_0000 0x7C0F_FFFF USB OTG
0x7C10_0000 0x7C1F_ FFFF USB OTG SFR

HCLK_GATE寄存器的20位控制USB OTG的状态:
HCLK_USB [20] Gating HCLK for USB OTG (0: mask, 1: pass) 1

USB OTG使用的58号中断:
58             INT_OTG USB OTG       interrupt VIC1


欢迎做过OTG驱动的同学在下面跟贴扔砖。
别人转角遇见爱,我转角遇见猫T _T .
级别: 新手上路
UID: 66649
精华: 0
发帖: 23
金钱: 120 两
威望: 24 点
贡献值: 0 点
综合积分: 46 分
注册时间: 2012-04-01
最后登录: 2017-09-13
1楼  发表于: 2012-04-24 15:31
选择千锋 选择卓越  千锋嵌入式 最专业的嵌入式培训机构

ios论坛
ios开发论坛
ios技术论坛