阅读:1156回复:3
急!询问关于PHLIP D12的几个问题
我用d12板做一个项目,我在主机端自定义一个请求
ioblock.uindex=get_status,然后调用readfile从设备读书据。 在设备端固件程序中,定义与这个请求对应的函数get_status(),并实现这个请求(就是往端点送数据)。我想问一下执行过程是不是这样:主机通过控制传输将这个请求发给设备,设备识别这个请求后,调用get_status(),将数据送到端点的缓冲区。然后主机发给端点一个in包,然后用批量传输从端点取走数据? 另外我想问一下,在固件程序中定义了一个结构,struct_control_xfer,其中有一个域是unsigned char dataBuffer[MAX_CONTROLDATA_SIZE],请问这个域是干什么用的?里面放的是什么? 谢谢! |
|
沙发#
发布于:2004-03-10 12:54
只是一个放请求包的地方
|
|
|
板凳#
发布于:2004-03-10 13:24
数据缓存区
|
|
地板#
发布于:2004-03-10 13:29
1.你的分析大体不错,控制传输本身已经包含了双向传输,所以get_status()的返回数据是放到端点0上的。并且由控制传输独立完成。(当然,也是主机发出的IN请求完成的,只是仍然在端点0上面)
2.由于控制传输是一个USB自举过程必需的传输,所以它与其它几种传输不同,它是由USB规范定义了细节的可扩展的传输方式,也是设备必须支持的。unsigned char dataBuffer[MAX_CONTROLDATA_SIZE]就是用来存储Setup packet的地方。依据不同的请求,其内容不同。但头部采用统一结构。存储起来是留给后面的处理程序使用的。可以响应Standard Request, Class Request, Vendor Request. |
|
|