heshen
驱动老牛
驱动老牛
  • 注册日期2002-04-19
  • 最后登录2014-01-26
  • 粉丝0
  • 关注0
  • 积分45分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
阅读:1732回复:13

help 我有关PID……

楼主#
更多 发布于:2002-05-15 16:36
USB的PID是硬件自动产生的么?
还是要自己来写?
在接受端也是自动识别还是自己写代码判断的呢?
PID不用写到BD里面吧?
不要啊!
heshen
驱动老牛
驱动老牛
  • 注册日期2002-04-19
  • 最后登录2014-01-26
  • 粉丝0
  • 关注0
  • 积分45分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-05-15 16:45
想补充问一下
帧是由硬件产生的吧?
???? :( :(
不要啊!
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-05-15 16:53
1、VID和PID都可由下位机的硬件固件产生。由固件产生的话可以通过修改FireWare修改。
2、由USBHUB判断,客户驱动程序可不管。
3、BD是什么?
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
heshen
驱动老牛
驱动老牛
  • 注册日期2002-04-19
  • 最后登录2014-01-26
  • 粉丝0
  • 关注0
  • 积分45分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-05-15 17:36
感谢大哥给我的帮助,
我所说的bd是buffer description
是缓冲区描述
我的意思是如果pid是由硬件产生的,那么在接受端就会把它丢弃掉是吗?
大哥你顺便回答我的第二个问题嘛!
就是帧的那个啦!
虽然我得分很少,但是我不会小气地!
^^
不要啊!
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-05-16 08:46
VID和PID的主要作用是USBHUB辨别设备,并根据其来选择驱动程序。之后即无多大用处,不过客户驱动程序一般会保留设备的设备描述符,自然就保存了VID和PID。
你说的帧是指ISO传输中的帧吗?应该是由设备的USB控制器产生的。客户驱动程序可控制帧包大小和帧速。
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
heshen
驱动老牛
驱动老牛
  • 注册日期2002-04-19
  • 最后登录2014-01-26
  • 粉丝0
  • 关注0
  • 积分45分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-05-16 09:13
谢谢谢谢~~
你所说的“不过客户驱动程序一般会保留设备的设备描述符,自然就保存了VID和PID。 ”
那么保存的vid和pid放在什么地方呢?难道也是放在缓冲区里面吗?
那么如何识别缓冲区里的id和数据呢?
我还以为缓冲区里存放的全都是有用的数据呢。
不要啊!
heshen
驱动老牛
驱动老牛
  • 注册日期2002-04-19
  • 最后登录2014-01-26
  • 粉丝0
  • 关注0
  • 积分45分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-05-16 15:34
没人管了?
顶一下!
不要啊!
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-05-16 16:12
一般放在设备扩展中。
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
heshen
驱动老牛
驱动老牛
  • 注册日期2002-04-19
  • 最后登录2014-01-26
  • 粉丝0
  • 关注0
  • 积分45分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-05-17 08:45
那么我所说的缓冲区里都是有用的数据是不是正确的呢?
就是从缓冲区里读取的数据就可以直接使用了,
不需要在进行判断是pid还是data了?
???
不要啊!
heshen
驱动老牛
驱动老牛
  • 注册日期2002-04-19
  • 最后登录2014-01-26
  • 粉丝0
  • 关注0
  • 积分45分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-05-17 17:12
又看不到了,在顶一下!
不要啊!
Levis75
驱动小牛
驱动小牛
  • 注册日期2001-08-06
  • 最后登录2006-06-28
  • 粉丝0
  • 关注0
  • 积分68分
  • 威望7点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-05-24 16:33
usb的pid和vid是写在device端的driver里的,just like:
unsigned char DEV_DESC[] =
{            
     0x12,       /*length of this desc.          */
0x01,          /*DEVICE descriptor             */
0x00,0x01,     /*spec rev level(BCD)(0x100)    */
0x00,         /*device class                  */
0x00,         /*device subclass               */
0x00,        /*device protocol               */  
       0x08,         /*max packet size               */  
 0x51,0x04,     /*National\'s vendor ID          */
 0xC3,0x81, /*National\'s product ID */  
 0x00,0x01, /*National\'s revision ID */  
 0x01,              /*index of manuf. string */  
 0x02,  /*index of prod.  string */  
 0,                 /*index of ser. # string */  
 0x01               /*number of configs. */
};          
由host读取
如开发host端driver就不需自己写
如开发device端driver就需自己写
    
dinolos
驱动小牛
驱动小牛
  • 注册日期2002-03-04
  • 最后登录2004-05-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-05-24 17:57
老兄,你老顶什么呀,真有意思,呵呵。
我这样理解楼上老哥的意思:heshen兄说的那些东西是作为固件程序的一部分写进mcu里的,是作为一个数组存在的,上位机有要求时,程序就把它发出去,对不对?斑竹老大说的‘客户驱动程序一般会保留设备的设备描述符’,是什么意思呢?
菜鸟不怕大虾! 菜鸟也要做大虾!
hualr9623
驱动牛犊
驱动牛犊
  • 注册日期2002-04-02
  • 最后登录2002-06-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-05-25 15:04
fireware 是什么?设备描述符是以帧的形式发送给主机,而后主机自动识别其就是设备描述符吗?固件驱程如何编写?
liuxf66
驱动中牛
驱动中牛
  • 注册日期2001-08-15
  • 最后登录2003-04-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-05-25 15:42
(1)、PID、VID都是在USB设备的firmware中(firmware就是固件,是USB芯片的程序,作USB的不应该不知道这个东东啊),主要是使系统识别设备并加载相应的驱动程序,这体现在INF文件中,你可以同时更改INF文件和firmware中的PID、VID,这不会产生不良影响。
(2)、设备的列举是有主机通过Endpoint0发送请求,然后由设备响应来完成的,这体现在firmware的setupcommand子程序中。
(3)、设备列举完成后,主要执行设备的功能部分;但是,如果主机有Get_endpoint、Get_string、Get_pipe等请求,设备还是在setupcommand中相应。
(4)、在firmware的主循环中,有两个主要的部分,第一就是判断主机是否有Get_endpoint、Get_string、Get_pipe等请求,第二就是功能部分。
liuxf66
游客

返回顶部