开发USB驱动,基于pl2303还是CDC/ACM ?

Jerry0916 2009-08-13 12:29:23
请教各位大虾:
我想在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驱动的兄弟姐妹们能够给我的建议和提示的话,我非常感谢!

...全文
1570 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jerry0916 2009-09-13
  • 打赏
  • 举报
回复
接上贴,关于open函数打开设备文件无限期不返回,不知道是驱动的问题还是QT库函数的问题。
Jerry0916 2009-09-13
  • 打赏
  • 举报
回复
谢谢你们的回答。

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

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

现在我的驱动已经让我可以通过minicom向设备下AT command了。但是用QT的QFile类的open函数去打开对应的设备文件,三个里只有一个能被打开,两个一直就在停open函数里没反应了。请大家帮忙分析并给点意见,谢谢。
sk_sky007 2009-08-27
  • 打赏
  • 举报
回复
不懂 帮顶
zihan 2009-08-26
  • 打赏
  • 举报
回复
理论上如果你的设备是正常的话,只要修改plist文件,匹配上你的驱动就可以正常工作,MAC OS自带的CDC/ACM我们验证过,功能是正常的。不存在严重问题。

另外,操作系统不需要你自己写composite的驱动,系统给到IOSerialFamily会自己处理。
Jerry0916 2009-08-22
  • 打赏
  • 举报
回复
有没有人帮忙啊?

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧