2010-07-22 68 views
0

inHi,这个问题很快,但从我的角度来看它很难。我一直在搞实施由MCU构建的USB设备。所以我找到了一个名为V-USB的项目,它是爱特梅尔MCU的软件仿真USB接口。但这并不重要。在USB通信中的Windows X Unix

问题是,在他们的网站上,他们说使用自定义的USB类,你可以简单地在Unix上编写主机软件,但你需要驱动程序DLL的Windows。问题是,他们没有解释为什么。

那么,请问,为什么?我不知道基于Unix的系统,但我认为不同操作系统的基础知识是相同的,因为它们来自相同的硬件,甚至Unix也不能在用户模式下执行HW IO操作。

我知道像LibUSB等USB通信库,但我想知道为什么说它在Unix上很容易的原因。谢谢。

编辑: 感谢您的回答,但我可以有进一步的问题吗?这一切都是一个文件如何工作?我的意思是,我在Windows上的驱动程序是一个运行在内核模式下的程序,因此可以访问CPU IO端口,这些端口可以通过某些标准提供给OS,从而允许Windows使用它(例如,HDD驱动程序必须可以从文件系统驱动程序通过标准化的功能集,以使任何硬盘工作相同)。

所有你需要做的就是通过WinAPI函数调用驱动程序或直接调用它的函数。但USB实现了不同类别的新功能。所以有主要的USB根驱动程序来处理USB并为正确的设备调用正确的次要驱动程序。除了有相同的程序,你只需调用你的USB驱动程序。

但是如果在Unix中一切都是文件,怎么处理不同的类?我无法想象它如何在Windows方式下类推。该文件是否代表与USB根驱动程序通信的方式?

回答

1

Everything in UNIX is a file,它支持简单的操作。无论您是通过终端还是通过USB设备进行通信,所有内容都是文件流的字节流。

* read 
* write 
* lseek 
* close 
+0

好的,但是还是必须有一些在内核中运行的主USB驱动程序,并且将Unix标准USB行为转换为Unix文件方式,对吗? – 2010-07-22 22:49:59