阅读:1657回复:7
IN.OUT令牌包相关的问题(我等到花儿已谢了)
主机要输出数据前,先要发送OUT令牌包,但是设备怎么来知道主机发送了OUT令牌包,同样,IN令牌包,设备如何来识别呢?
也就是USB设备里面的程序怎么来知道主机要求设备是要输入还是输出数据?? |
|
|
沙发#
发布于:2004-04-28 09:30
其实,这个你只要好好看看批量传输的输入和输出的具体过程,就可以知道啦,EZ-USB的相关资料讲的很清楚的
|
|
板凳#
发布于:2004-04-27 22:43
看了再问好
|
|
|
地板#
发布于:2004-04-27 21:32
那就是需要你软件里面响应SCSI指令呀。。。。比如主机给你发
READ10指令,你根据指令给出得地址读取数据然后发过去呀。。。 你需要认真了解SCSI指令资料。。。。 |
|
地下室#
发布于:2004-04-27 21:06
你的意思是说,当设备要上传数据给主机的时候,只要把数据写到USB接口芯片的缓冲区里面就可以了?
然后接口芯片收到主机要读取数据的命令的时候,接口芯片自动到缓冲区里面把数据打包发送出去? 那么有一点就是:我设备总得依据一个条件,我什么时候把数据写到接口芯片的缓冲区里面去呢(也就是我怎么知道主机要我送数据上去呢)? 同样:发送的时候,接口芯片是不是自动把主机送过来的数据放到接口芯片的缓冲区里面,然后接口芯片这时会设置标志,或产生中断,通知有数据写到缓冲区里面了,然后对应的程序就去读缓冲区的数据? |
|
|
5楼#
发布于:2004-04-27 20:46
再说得通俗点:PC要通过USB接口发命令或者数据,他先按照USB协议要求把命令或数据封装在数据包里面。数据包 包括令牌,校验等等。而设备端得USB接口芯片自动解开数据包。它能自动识别令牌和校验,并把数据包得相关信息记录在内部寄存器里供用户读取。
同时芯片会把数据包里面得数据保存在内部得缓冲区里供用户读取,而这些数据得具体含义(到底是纯粹得数据或者是SCSI指令则需要由用户判断)。同样,如果用户需要发送数据到PC,也只需要把数据写入接口芯片,而数据包得封装工作则由接口芯片完成。 如何?够明白了吧。 |
|
6楼#
发布于:2004-04-27 20:40
答:识别令牌不需要设备程序做。D12自动识别。但是具体的SCSI指令或者枚举指令就必须设备程序识别
D12能自动完成的工作就是: 1。发送ACK, 2。校验 3。识别令牌。 4。通知HOST有数据,或者向HOST返回忙,闲状态。 也就是说D12把数据祯解开。DEVICE只能读到数据祯的数据区的数据 但是这些数据到底是“命令”还是“数据”要靠DEVICE识别。 请您弄清楚引号里面的数据和不带引号的数据的区别。 问: 那我怎么知道主机什么时候要我送数据,什么时候叫设备接收数据呢? 说得通俗一点,当应用程序上面有一个按钮\"读入\",当点击按钮的时候,设备应该要接收到一个命令,然后才送数据到主机,请问,你在设备的程序里面是不是要根据主机发来的命令送出数据,当然,象建立包这种的,很容易就知道,但是,在枚举完之后,主机要读设备的数据,你如何来识别主机是否叫你送数据呢? 答:晕。。。。哥们呀,我明白你得意思呀。那些命令就是SCSI指令呀。 你翻翻相关得资料就知道了呀。 至于什么令牌,接口芯片已经处理了。你就不用管得。 问:文章标题 请问SCSI,CBW是什么呀? 答:就是PC机管理储存体得指令。可以翻阅相关资料。要做U盘就得了解 |
|
7楼#
发布于:2004-04-27 19:40
检查一下受到的PID码就知道了
|
|