中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-16 09:34
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 关于DOS下的访问USB控制器的问题,请高手帮忙,谢谢 查看 4,290 回复 9
楼 主 关于DOS下的访问USB控制器的问题,请高手帮忙,谢谢 发表于 2003-07-10 00:00 ·  中国 上海 电信
初级用户
积分 111
发帖 2
注册 2003-07-10 00:00
UID 6695
性别 男
状态 离线
我是大学计算机系的大四学生,半年以后要找工作了,大家知道这个年头工作难找。

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

我加入的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
2 发表于 2003-07-12 00:00 ·  中国 上海 鹏博士宽带
初级用户
积分 111
发帖 2
注册 2003-07-10 00:00
UID 6695
性别 男
状态 离线
hehe,我今天去了东华大学计算机博士生实验室,在那里找到了答案,看来这里还是技术有限啊。
3 发表于 2003-07-12 00:00 ·  中国 北京 科技网
银牌会员
★★★
颓废青年
积分 2,265
发帖 721
注册 2003-05-12 00:00
UID 2032
性别 男
状态 离线
禅宗会不会感兴趣呢?
4 发表于 2003-07-16 00:00 ·  中国 广东 东莞 电信
元老会员
★★★
CEO
积分 1,019
发帖 300
注册 2002-10-20 00:00
UID 33
性别 男
来自 广东
状态 离线
是啊,对这方面有兴趣:)不知楼主能否贴出来?
禅宗——大道至简,知易行难!
网站: http://www.dgzens.com

QQ: 11951692 微信: dgzens
E-MAIL: warmrose@21cn.com
5 发表于 2006-09-08 05:33 ·  中国 上海 浦东新区 电信
新手上路
积分 6
发帖 5
注册 2006-09-07 01:34
UID 61997
状态 离线
楼主贴出来答案,让晚辈也来学习一下!!
6 发表于 2006-09-08 05:56 ·  中国 湖南 长沙 电信
中级用户
★★
积分 282
发帖 126
注册 2006-05-17 22:29
UID 55724
状态 离线
关注!


我现在对USB很感兴趣

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

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


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

现在正被intel网站下下来的UHCI规范弄得头晕
人类存在的目的就是试图理解人类为何存在
7 发表于 2006-09-08 22:39 ·  中国 香港
银牌会员
★★★
阿林
积分 1,410
发帖 497
注册 2004-06-28 00:00
UID 27551
性别 男
来自 九龍,香港
状态 离线

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

mailbox@georgpotthast.de
我 的 網 站 - http://optimizr.dyndns.org
8 发表于 2007-07-03 15:03 ·  中国 河北 唐山 联通
初级用户
积分 62
发帖 28
注册 2007-07-03 11:20
UID 93017
性别 男
状态 离线
路过
9 发表于 2007-07-04 21:42 ·  中国 上海 浦东新区 电信
初级用户
积分 108
发帖 49
注册 2007-03-09 06:08
UID 81161
性别 男
状态 离线
好像比较麻烦...
我倒是有很多在 DOS 可以动作的 SOURCE CODE. 不过不容易整理出来的.

我觉得,要些 DOS 的关于 USB 的东西.
需要把 OHCI, UHCI 和 EHCI 的规格的软件层面弄明白.
10 发表于 2010-12-23 14:24 ·  中国 北京 联通
新手上路
积分 2
发帖 1
注册 2010-12-16 10:23
UID 179350
性别 男
状态 离线
学习学习!
论坛跳转: