开发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驱动的兄弟姐妹们能够给我的建议和提示的话,我非常感谢!