Board logo

标题: 关于DOS下的访问USB控制器的问题,请高手帮忙,谢谢 [打印本页]

作者: dellweiwei     时间: 2003-7-10 00:00    标题: 关于DOS下的访问USB控制器的问题,请高手帮忙,谢谢

我是大学计算机系的大四学生,半年以后要找工作了,大家知道这个年头工作难找。

最后的暑假在一家公司找了个没有钱的实习,当然想留下来的,这次接触特别底层的东西,特别是这次遇到了一个非常困难的技术难题,让我很担忧这件事情是否能做好,下面就让我把这个问题简单描述一下,如果描述里面有什么低级问题,请指出,因为第一次做那么底层的程序。

我加入的TEAM是做一个解决方案的,里面主要的程序都是在计算机刚刚引导还没有进操作系统的情况下运行的(有点类似硬盘保护卡的开机程序),这个几乎在裸机上运行的程序中有一个功能就是要访问一个公司自己研制开发的USB外设硬件。
我做的模块就围绕这个了,这个USB硬件在WINDOWS下的驱动早就完成了,但是在裸机汇编环境下形式就完全不一样了,让我非常没有头绪。

后来我在贵站上看到这样的程序URL http://newdos.yginfo.net/dosware/usbdrv.zip
这个程序能让DOS支持USB的设备,程序不大。

后来我看了点关于USB的资料,加上对程序的理解,得出了以下的结论:
1,汇编或DOS如果要访问USB接口是要通过I/0地址寻址对USB控制器芯片进行操作的,比如初始化,发送数据,其实都是对USB控制器的I/0操作。
2,如果要我的汇编应用程序对这个硬件达到一定目的的操作,首先要有一个USB控制器驱动,它包装了对控制器底层的操作。然后在控制器驱动的基础上,我再针对我的USB设备开发一个调用控制器驱动的设备驱动。
如下图所示

汇编应用程序《---》我的USB设备的驱动模块《---》USB控制器驱动《--》USB控制器《-》USB外设


再看看那个贵站下载的DUSE程序,虽然它是FOR DOS,但是它的功能和我要做的那个模块差不多的,特别是USB控制器驱动,我发现它是DUSE程序的底层核心,各种不同设备的驱动程序只是在调用它,但我对它一无所知;如果在它的基础上能对USB接口直接发送接收数据了,怎么跟我的USB外设对话我是很熟悉指令的。

不知道我表达的是否清楚,我的最终目的就是用汇编在裸机下访问USB接口并发送数据控制一个特定的公司开发的USB设备(这个设备的控制指令我清楚)。
请高手指点怎样做通用的USB控制器驱动模块(我看那个DUSE就是在各种机器上都能用的),最好有相关的代码可以直接参考,工作不等人啊,为了我的工作。谢谢高手了,我在上海,如果这件事情作好了,我一定请吃饭。

我的EMAIL:dellweiwei@hotmail.com
作者: dellweiwei     时间: 2003-7-12 00:00
hehe,我今天去了东华大学计算机博士生实验室,在那里找到了答案,看来这里还是技术有限啊。
作者: hunome     时间: 2003-7-12 00:00
禅宗会不会感兴趣呢?
作者: 禅宗     时间: 2003-7-16 00:00
是啊,对这方面有兴趣:)不知楼主能否贴出来?
作者: libaoli     时间: 2006-9-8 05:33
楼主贴出来答案,让晚辈也来学习一下!!
作者: zyl910     时间: 2006-9-8 05:56
关注!


我现在对USB很感兴趣

USB的驱动分为三层:
主机控制器驱动
设备类驱动
应用驱动

Windows已经带了常见的设备类驱动
主机控制器驱动由主板驱动提供
写驱动时只需根据该设备特点编写应用驱动


而在DOS下,这三层驱动都得自己写

现在正被intel网站下下来的UHCI规范弄得头晕
作者: johnsonlam     时间: 2006-9-8 22:39

在 网 上 早 有 USB 驱 动 范 例 , 如 Georg Phtthast 的 DOSUHCI , 不 过 是 用 PowerBASIC 编 写 , 很 多 人 都 看 不 懂 , 又 要 收 费 , 所 以 比 较 乏 人 问 津 。

mailbox@georgpotthast.de
作者: kinglin     时间: 2007-7-3 15:03
路过
作者: CrispH     时间: 2007-7-4 21:42
好像比较麻烦...
我倒是有很多在 DOS 可以动作的 SOURCE CODE. 不过不容易整理出来的.

我觉得,要些 DOS 的关于 USB 的东西.
需要把 OHCI, UHCI 和 EHCI 的规格的软件层面弄明白.
作者: p8031     时间: 2010-12-23 14:24
学习学习!