5725|5

1

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

开发USB驱动,基于pl2303还是CDC/ACM ? [复制链接]

请教各位大虾:
    我想在MAC OS 上写一个驱动,将实际的USB设备虚拟出两个串口(Serial Com port),然后用应用软件可以向这两个虚拟的串口读写数据,与通过USB Cable相连的目标设备(如手机,3G卡)进行通讯。Linux上已有开源的驱动USBSerial直接拿来用,但是在MAC OS上对应的驱动好像没有(本人没有找到)。最近两天我找到一个GPL的开源项目pl2303, 它是基于IOKit类开发的一个驱动。我想基于该项目来开发,但是由于刚开始写驱动,遇到很多困难,故来此取经,先谢谢了。

    我想驱动的是USB composite device的两个interfaces, 而pl2303驱动的是一个USB device。由于这种差别引起实现上的不同是让我棘手的一个地方。我不知道SetConfigure 和DeviceRequest等这些函数的使用怎么去做相应的变化,很多的函数的具体意义不是很清楚,所有不能够做灵活的使用。

    我看了MAC OS 上开发驱动的一些相关资料,如IOKit fundamental, Write Device Driver等。但由于时间太短,理解还不够透,我觉得在我写这个驱动时,还是有些困难。

    1.我的这个驱动可以基于PL2303来写吗??
    2.如果可以,应该注意什么?熟悉PL2303这个驱动源码的兄弟姐妹可否指点一二??
    3.有什么资料或者信息可以对我有帮助呢?
//////////////////////////////////////////////////////////
8月14日晚更新

    大家好,我今天在网上碰到一篇帖子,上面建议“写苹果的USB驱动从苹果开源的驱动CDC/ACM开始比较好”,我把CDC/ACM下载下来一看,框架跟pl2303很相似。以它为参考,我写了一个驱动,结果和参考pl2303写出来的差不多,在USB Prober的IORegistery下可以看到设备的相关信息,然后在/dev下看到了设备文件tty.*,但是用minicom打开以后,不能下AT Command.然后看IOLog打印出的消息,有看到输入的字符,但是没看到任何输出信息。还有其他的一些信息。
    由于对USB虚拟出serial com设备接口的机制和代码框架不太熟悉,目前调试起来进度有点慢。如果有开发过USB驱动的兄弟姐妹们能够给我的建议和提示的话,我非常感谢!

最新回复

接上贴,关于open函数打开设备文件无限期不返回,不知道是驱动的问题还是QT库函数的问题。  详情 回复 发表于 2009-9-13 11:18
点赞 关注

回复
举报

1

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
理论上如果你的设备是正常的话,只要修改plist文件,匹配上你的驱动就可以正常工作,MAC OS自带的CDC/ACM我们验证过,功能是正常的。不存在严重问题。

另外,操作系统不需要你自己写composite的驱动,系统给到IOSerialFamily会自己处理。
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
有没有人帮忙啊?
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

4
 
不懂 帮顶
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

5
 
谢谢你们的回答。

我想补充一下,我不是要写composite驱动,而是要写一个驱动去驱动一个composite设备底下的某几个interface(通过plist来指定那几个interface使用我们自己的驱动来驱动).

但是开源驱动项目pl2303,驱动的对象是一个设备(即provider是IOUSBDevice),我们驱动接口(既provider是IOUSBInterface),因此基于pl2303来写我们的驱动,需要修改一些地方的。

现在我的驱动已经让我可以通过minicom向设备下AT command了。但是用QT的QFile类的open函数去打开对应的设备文件,三个里只有一个能被打开,两个一直就在停open函数里没反应了。请大家帮忙分析并给点意见,谢谢。
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

6
 
接上贴,关于open函数打开设备文件无限期不返回,不知道是驱动的问题还是QT库函数的问题。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表