新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于ISP1581的USB数据采集系统的实现

基于ISP1581的USB数据采集系统的实现

作者:时间:2013-09-11来源:网络收藏

  2.2 驱动程序开发

  Windows环境下驱动程序有3种模型:VxD模型、KMD模型、WDM模型。WDM模型是微软力推的全新驱动程序模型,现在主流的操作系统都是采用基于WDM模型的驱动程序,因此本采集系统也采用WDM驱动程序模型来开发设备的驱动程序。

  对于设备,其WDM驱动程序分为底层(总线)驱动程序和USB功能(设备)驱动程序。USB底层驱动程序由操作系统提供,负责与实际的硬件打交道,实现底层通信。USB功能驱动程序由设备开发者编写,不对实际的硬件进行操作,而是通过向USB底层驱动程序发送包含请求块URB(USB Request Block)的IRP,以实现对USB设备信息的发送和接收。

  目前,WDM驱动程序开发工具有3种:Microsoft公司的DDK、Numega公司的DriverStudio和Jungo公司的WinDriver。其中,DDK的开发难度较大,开发者需要对整个体系结构和WDM规范有很好的理解和把握,还要熟悉上千个DDK函数的功能和使用场合,且测试流程繁琐;DriverStudio的开发难度低一些,它将DDK函数按照逻辑功能进行组织,把很多常用功能封装成类,建立了一个基于C++语言的面向对象的编程环境,开发者面对的不再是上千个复杂凌乱的DDK函数,而是逻辑清晰的类库;WinDriver的开发几乎没有难度,开发者所编写的只是定制和调用它提供的通用驱动,开发周期较短,特别适合于驱动程序初学者使用。

  利用WinDriver开发设备驱动程序,有2种方法:(1)用Wizard自动生成驱动程序的框架代码,根据实际要求修改代码,加入定制的功能,再在用户态执行和调试代码,并将性能要求苛刻的部分插入到核心态,从而完成整个驱动程序的编写。在使用这种方法时,WinDriver已经完成了驱动程序编写的大部分工作,减少了工作量,使编写驱动成为相对较简单。但此方法生成的设备驱动程序,其通用性和可移植性较差;(2)完全用WinDriver提供的API函数来写驱动程序。这样要比修改由Wizard生成的框架代码灵活得多,并且编写的程序更简短。但这要求开发者熟悉驱动程序的框架,能熟练运用WinDriver API函数。

  为了缩短开发周期,在实际应用中选用了第1种方法生成驱动程序。具体步骤如下:

  (1) 启动Driver Wizard,检测连接的USB设备,生成inf文件,这个inf文件和WinDriver包含的windrvr6.sys一起,就是新开发USB设备的驱动程序。

  (2) 点击Next按钮,进入资源列表窗口,窗口中显示了管道(Pipe)的一些基本信息。此窗口还可以用于对外设进行读写,测试硬件资源的正确性,窗口中的Log部分即为测试结果。

  (3) 点击Next按钮,进入代码生成窗口,在窗口中选择生成C语言代码。之后Driver Wizard将自动生成针对的样本程序和工程文件(包括代码文件、说明文件以及适用于VC++编译器的项目文件)。

  (4)重新安装这个USB设备的驱动程序,利用DriverWizard生成的文件,就可开发应用程序了。

  经过反复测试发现,在现有硬件上批量传输的速度在60 Mb/s左右,可以满足当前系统采样频率为500 kHz时的数据采集要求,即500K×4路×16=32 Mb/s。但与USB2.0规范的极限速度相比,现有的批量传输速度还不及其13%,分析其原因:

  (1) USB2.0规范定义的最大速度为480 Mb/s,但它是包含令牌包在内的传输,因此,若扣除通信协议中的令牌,实际传输速度要远低于480 Mb/s。

  (2) 从访问寄存器的时序参数可以看出,读/写周期最小为80 ns,即DSP对读写的最高频率是12.5 MHz,由于每次读写操作的数据为2 B,所以DSP与接口芯片之间数据传输的最高速率是25 MB/s,最后的实际值应该小于此值。

  (3) 利用WinDriver开发驱动,事实上它只是定制和调用WinDriver提供的通用驱动而已,所以并非有针对性地对特定硬件编程,程序执行效率上也不免大打折扣。

  (4) 计算机与USB设备的通信中还包含对计算机硬盘的写操作,使用测试软件对所用机器硬盘进行写测试,测得平均速度在22~25 MB/s之间,因此硬盘的写速度也是影响USB数据传输速度的原因之一。

  因此若想在现有硬件平台上获得更高的速度可以在以下几个方面进行:采用端点的双缓冲模式、采用的DMA模式、采用效率更高的驱动开发方式及优化固件程序以提高硬件的工作效率等。

参考文献:

[1].PCIdatasheethttp://www.dzsc.com/datasheet/PCI_1201469.html.
[2].ISP1581datasheethttp://www.dzsc.com/datasheet/ISP1581_410269.html.
[3].AD7655datasheethttp://www.dzsc.com/datasheet/AD7655_1131512.html.


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭