MAC OS X上的CDC驱动程序 - 设备始终处于忙碌状态

时间:2013-04-03 21:16:09

标签: macos driver cdc

我正在编写一个应用程序,通过Win7,WinXP,MAC OS X和Linux(命令行)上的USB虚拟COM端口控制调制解调器,我用作USB到串行转换器(又称虚拟COM端口)飞思卡尔Kinetis K40 MCU 。内部固件使用CDC Class 02声明。

我可以使用Win7 64Bit PC上的CDC Class成功运行虚拟COM端口。有一些与缓冲区有关的通信问题,但我基本上都在工作。我将TX和RX连接到MCU的内部UART,一切正常。

当我尝试在MAC OS X上使用虚拟COM端口时出现问题。当我尝试发送/接收任何字节时,设备被识别为“tty.usbmodemxxx”,ZTerm(用于测试目的)返回给我USB端口忙/不可用。我使用自己的工具,FileDescriptor总是返回-1,因此无法访问它。

然后我尝试使用“cat /dev/tty.usbmodemxxx”从终端访问设备,并且“screen /dev/tty.usbmodemxxx”都返回我的资源忙。

如果我使用FTDI USB转串口转换器,它可以正常使用ZTerm和我自己的应用程序。

同样可以识别tty.usbmodem设备,但PORT总是忙/不可用,而在我的原型板上独立运行的相同代码正在Win7上运行。

我在网上挖了更多的谷歌搜索,许多用户在MAC OS X上遇到了CDC驱动程序的问题,但他们的主要原因是声称他们的设备没有连接而我的是“资源忙”!

我尝试在7级使用来自MACOSX日志记录的USB Prober,但是一秒内就会有大量的警报,所以即使我正在过滤,也很难区分地雷。

描述符似乎是正确的,因为2个设备是创建CDC和CDC数据但是设备永久忙,并且每2/3秒就有一个来自操作系统的handleOpen,就像我的设备上的轮询一样,我有相同的行为还有FTDI芯片,所以它不可能。

我的怀疑是,MCU内部的固件可能正在向操作系统返回Busy状态,但似乎并非如此,因为在带有CDC驱动程序的Win7上一切正常。

最终有人知道如何理解设备忙的原因,就像我的设备返回虚假状态,或者是deamon控制我的设备而不释放它!?**

任何帮助都会非常感激!

问候。

0 个答案:

没有答案