天嵌 ARM开发社区

 找回密码
 注册
查看: 4379|回复: 3

usb device 中的寄存器EP0_CSR 与 IN_CSR1_REG

[复制链接]
summersunboy 发表于 2012-7-27 16:28:44 | 显示全部楼层 |阅读模式
请教一个问题:
usb device 寄存器EP0_CSR 与 IN_CSR1_REG都是映射到了0x52000184(L) 0x52000187(B)地址处,在实际用的时候如何区分哪个寄存器是in的,哪个寄存器是out的?
如何区分ep0中断是in还是out?
非常感谢。
pcwangyihui 发表于 2012-7-28 10:41:57 | 显示全部楼层
韦东山的u-boot-1.1.6_OpenJTAG中usb device配置函数里是这样写的,看来是INDEX_REG的值决定的
void ReconfigUsbd(void)
{
...
        usbdevregs->INDEX_REG=0;
        usbdevregs->EP0_CSR_IN_CSR1_REG=EP0_SERVICED_OUT_PKT_RDY|EP0_SERVICED_SETUP_END;
...                               
        usbdevregs->INDEX_REG=1;
        usbdevregs->EP0_CSR_IN_CSR1_REG=EPI_FIFO_FLUSH|EPI_CDT;
...
        usbdevregs->INDEX_REG=2;
        usbdevregs->EP0_CSR_IN_CSR1_REG=EPI_FIFO_FLUSH|EPI_CDT|EPI_BULK;
...
        usbdevregs->INDEX_REG=3;
        usbdevregs->EP0_CSR_IN_CSR1_REG=EPI_FIFO_FLUSH|EPI_CDT|EPI_BULK;
...
        usbdevregs->INDEX_REG=4;
        usbdevregs->EP0_CSR_IN_CSR1_REG=EPI_FIFO_FLUSH|EPI_CDT|EPI_BULK;
...
}

ep0中断是in还是out?
这个需要了解USB协议
看主机发送给设备的控制请求
struct usb_ctrlrequest {
        __u8 bRequestType;
        __u8 bRequest;
        __le16 wValue;
        __le16 wIndex;
        __le16 wLength;
} __attribute__ ((packed));

bRequestType成员的第7位的值表明了是in还是out
        bit7=1:要求设备发送数据给主机
        bit7=0:要求设备接收主机的数据
回复

使用道具 举报

 楼主| summersunboy 发表于 2012-7-28 16:15:34 | 显示全部楼层
pcwangyihui 发表于 2012-7-28 10:41
韦东山的u-boot-1.1.6_OpenJTAG中usb device配置函数里是这样写的,看来是INDEX_REG的值决定的
void Recon ...

噢,应该是 INDEX_REG的值决定的。
非常感谢!
回复

使用道具 举报

liyvhg 发表于 2012-9-22 09:07:50 | 显示全部楼层
一般情况下,EP0是用作控制端点
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2025-6-16 15:48 , Processed in 2.037228 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表