我是大学计算机系的大四学生,半年以后要找工作了,大家知道这个年头工作难找。
最后的暑假在一家公司找了个没有钱的实习,当然想留下来的,这次接触特别底层的东西,特别是这次遇到了一个非常困难的技术难题,让我很担忧这件事情是否能做好,下面就让我把这个问题简单描述一下,如果描述里面有什么低级问题,请指出,因为第一次做那么底层的程序。
我加入的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
最后的暑假在一家公司找了个没有钱的实习,当然想留下来的,这次接触特别底层的东西,特别是这次遇到了一个非常困难的技术难题,让我很担忧这件事情是否能做好,下面就让我把这个问题简单描述一下,如果描述里面有什么低级问题,请指出,因为第一次做那么底层的程序。
我加入的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

