新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > DSP系统PDIUSBD12的USB设计应用

DSP系统PDIUSBD12的USB设计应用

作者:时间:2011-05-31来源:网络收藏

  3 驱动程序开发

  由于现代操作对内存、端口等资源均采取了保护措施。一般的程序不能够直接访问硬件,必须通过设备的驱动程序。设备驱动程序直接和硬件打交道的,并且运行于操作核心态,它像操作内核一样具有最高的运行权限,所以它可以直接访问硬件。

  设备必须使用WDM(Win32 Driver Model)驱动程序模型,它是Microsoft公司定义的WIN32驱动程序模型。WDM是操作系统发展到现在的一种新型驱动程序模型,现在已经成为Windows操作系统驱动程序的主流。

  在Windows系统下,和程序打交道主要有五层模型:硬件层、硬件抽象层、驱动程序、IO管理层和用户运用程序。从用户程序发出的请求一层一层地往下发送。的驱动程序还分为客户驱动程序、根集线器驱动程序和总线驱动程序。用户主要开发客户驱动程序即可,蓁其余更底层的操作系统已经为用户准备好。客户驱动程序由一系列的例程(也即一般程序的函数)组成,它没有main()函数入口点。因此,设备和驱动程序打交道必须由操作系统的IO管理层参与,它使用了一种全局量叫作IO请求包即IRP。主要工作原理如下:

  (1)开始时用户应用程序向驱动程序发出请求(Windows API函数),并将相关的数据打包成IRP,IO管理器捕获这个IRP包并进行相应的处理。

  (2)IO管理器向客户驱动程序发送IRP请求包,请求客户驱动程序进行相应的处理。

  (3)客户驱动程序处理完接收到的IRP,设好相关环境后将之传给更底层的驱动程序,最后由总线驱动程序完成对硬件的操作,并将结果返回。

  用户要做的事就是开发客户驱动程序。本课题用的是基于WIN2000 DDK的DriverWorks驱动程序开发工具,同时还要VC++6.0编译环境。这种工具可生成驱动程序框架,用户进行修改并加入自己要实现的功能即可,大大缩短了开发的时间。

  4 用户应用程序

  应用程序是实现硬件功能的全部体现。但应用程序不能直接访问USB设备,它必须先与驱动程序通信,通过驱动程序来访问USB设备。它的工作是向硬件发送数据或命令,这些数据和命令由驱动程序经过层层处理,最后发送到硬件实现相关的动作。应用程序与驱动程序打交道主要是通过操作系统的API函数。

  其工作原理如下:

  (1)应用程序通过调用CreateFile API函数取得USB设备的句柄。该符号链接包含一个全域惟一标识符(globally unique identifier,GUID)。GUID是一个128位的号码,Windows用来惟一识别一个设备对象。

  (2)通过这个句柄,应用程序通过调用ReadFile和WriteFile API函数来读写USB设备,将数据返回到用户缓冲区。

  (3)通过这个句柄,应用程序通过调用DeviceIoControl API函数来向USB设备发出控制命令,以实现特定的要求,这个函数还可能有相应的数据传输。

  (4)应用程序处理从USB设备接收到的数据,如果出错,将给出相应的警告,如果成功,处理完后关闭设备的句柄。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭