注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

LINUX驱动学习——USB驱动(九)之USB转串口1  

2011-02-16 16:13:46|  分类: USB系列 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

今天把原来写好的USB转串口的程序略微修改了一下,烧进了小板儿里,程序出现了书中的现象,但奇怪滴是,也出现了一个没有的现象,就是说有一个文件被不安全的文件给替代了,你应该插入SP3的安装盘进行修复,把人吓了一跳。不过反复的确定,取消后,总算没有了这个东东,好吓银。

说正经的,这里主要有以下几个问题:

一 USB转串口的方法:按OO说的有两种,一种是使用自定义的USB设备,然后开发驱动,由驱动生成串口;第二种,使用USB协议规定的CDC类中的抽象控制模型子类中的通用AT命令协议。

这里采用第二种。

二 各种描述符的配置和修改。

设备描述符中,与前面几个设备不同,这里必须在设备描述符中指定设备的类型,即设备类bDeviceClass字段必须指定为0x02(通信设备类的类代码),否则会由于在配置集合中有两个接口,而被系统认为是一个USB复合设备,导致工作无法正常。因为定义了通信设备类,所以其 子类和使用的子类协议都必须指定为0。厂商的ID不变,但产品ID要顺着原来的往下走。当然,你想设置成别的,只要不重复都成。由你。

这里再唐僧一下,注意那个厂商和产品的字符串的索引,不要和接口和端口的弄混了。

字符串描述符自己随意。

配置描述符这个由于和原来一样使用的是两个接口的所以基本不变。

CDC接口描述符这个是新增加的,与新增的功能描述符(包括Header Functional Descriptor、Call Management Functional Descriptor、Abstract Control Management Functional Descriptor、Union Functional Descriptor,其对应的编号为:0x00,0x01,0x02,0x06).具体的解释就不再这里赘述了,要去看相应的文档,网上可以搜到OO用到的所有的USB的PDF文档。大家自己费下心。

数据类接口的接口描述符,这里说明一下的是,数据类接口的编号是由前面的Union Functional Descriptor描述符中指定的。CDC协议中定义了数据接口的类代码为0x0A,接口子类代码和接口协议都为0,不过我真得没有找到文档或者说在文档中的位置。TNND。

其余的两个端口的描述符与前面一些程序类似,大家可以照着文件和使用条件进行修改就可以了。

这样,一个初步的USB转串口的驱动程序就画出了框架。可以上板一试。

所以才出现了文章开头的现象。唉,事儿真是越来越多。

  评论这张
 
阅读(1009)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017