打印

oo USB U盘程序疑问

[复制链接]
1804|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xuwukong|  楼主 | 2008-4-23 22:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
对于D12就两个资料,一个芯片资料,一个固件编写指导,在指导里
对端点0 OUT
endpoint0_out()
{

 if(设置包)
  设置包处理;
else if(控制写的数据阶段)
   发数据到主机
}
端点0 IN
endpoint0_in()
{
 发送数据到主机
}
对OO的endp0_in(),endp0_out()结构还比较迷糊,各位见过的牛人给说明这个结构,另外这个PORTIN的中断标志是怎么产生的.只知道PORTOUT是收到主机来的数据产生中断的

相关帖子

沙发
computer00| | 2008-4-24 02:34 | 只看该作者

呵呵,我的程序的确存在着一些理解上的问题

这主要是我早期对这个编程时的理解错误了。不过它还是可以很好的工作的。

D12的输入端点当主机请求数据时会发生中断,发送完毕后好象也会发生中断。
而有些USB芯片则只在数据传输完毕后才产生中断,这样的话就得事先填充数据。
而我的程序则不一样,是等中断端点发送请求后,再写数据到端点的。如果移植到
其他芯片,在中断处理那里要做一下修改,就是将判断是否需要处理数据那里的
中断发生标志的判断条件去掉。

端点0发送setup包之后,我的程序并未做处理,而是等主机请求数据输入后才分析数据。
如果是输入请求,则返回数据。如果是输出数据,则等待数据发送,然后再返回0长度的状态包。

使用特权

评论回复
板凳
xuwukong|  楼主 | 2008-4-27 19:20 | 只看该作者

USB Get_Descriptor一次传输不完的过程是怎样

主机要求一个描述符,设备一次传输不完,比如需16,实际一次只能传8字节,以后的过程是不是这样:
设备发8字节,回主程序继续等待中断
主机再发USB Get_Descriptor
设备再回8字节,回主程序继续等待中断
主机识别传输完毕,回ACK

使用特权

评论回复
地板
computer00| | 2008-4-28 16:08 | 只看该作者

不是这样的

主机请求获取描述符,之后主机就会发输入请求令牌包,然后设备就以最大包长度返回
描述符,直到全部返回完(最后一次可能不足最大包长)。

有一个例外就是在未设置地址之前,主机请求获取设备描述符,设备只需要返回
一次数据就行了,接下来主机就会复位USB,设置地址。

使用特权

评论回复
5
shushi007| | 2008-4-28 18:42 | 只看该作者

周立功出的书里面详细写了

周立功的pdiusbd12  USB固件变成与驱动开发一书第91页把usb和上位机之间如何传递描述的过程详细写了  你说的哪个里面就有!

使用特权

评论回复
6
xuwukong|  楼主 | 2008-4-29 22:37 | 只看该作者

终于明白了

没有这本书,看了个关于枚举的PDF
弄清楚了
所有事务由主机发起,即主机先发令牌包(SETUP,IN,OUT)
一次没收完,主机下次事务还是先发IN包,设备再送,主机发ACK确认,再重复

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

55

帖子

0

粉丝