基于VxWorks的VME从板驱动设计与实现(一)

时间:2013-07-22

  摘要:基于VxWorks操作系统设计了数据采集从板的驱动程序,程序框架上驱动程序将对从板的操作抽象为对字符型设备的操作,驱动程序在内部实现了数据IO操作的阻塞机制、查询机制及信号通知机制,采用这种方式设计的驱动程序向用户提供了统一的接口,方便用户使用,同时将硬件操作与应用程序分开便于驱动程序进行扩展;驱动设计工作是精密环境控制系统的一部分,驱动程序的设计方法可以广泛地应用于基于VME总线的从设备驱动设计。

  0 引言

  基于VME 总线搭建了精密环境控制系统,整个系统中基于VxWorks的VME总线驱动程序连接了软件操作与VME 从板的硬件通信,VxWorks 操作系统下驱动程序的开发是应用VxWorks操作系统的关键因素。本文应用通用公司的VG5-7457PowerPC嵌入式VME单板机作为主板及通用公司的VME-3122A作为数据采集从板组成数据采集系统。针对数据采集从板的通用特征详细的设计了基于VG5 硬件和VxWorks 操作系统的VME 数据采集从板的驱动程序,在驱动程序的设计过程中,特别地考虑了驱动程序数据传输机制的设计,采用良好传输机制设计的驱动程序具有优良的驱动架构,便于移植及扩展。

  1 采集系统的系统结构

  1.1 采集系统结构分析

  采集系统基于VME 总线实现,系统是精密环境控制的重要组成部分,它的整体结构如图1所示。

  

  系统以VME 总线为整体架构,VME 总线上使用VG5-7457PowerPC嵌入式VME单板机作VME总线控制器,通过VME 总线控制数据采集设备(AD 数据采集卡),同时将控制输出经过VME 总线下传到控制输出(DA数据输出卡),它同时通过以太网络与上位机相连;数据在VME总线的可靠传输是系统实现功能的关键部分,这主要通过在VG5单板机上设计基于VxWorks操作系统的VME总线的驱动来保证。

  1.2 VG5主控板的结构分析及其对VME总线驱动的支持驱动程序终运行在VG5-7457单板机上,单板机的VME 总线支持是实现单板机对VME 总线驱动的关键因素。单板机系统的VME总线硬件结构如图2所示。

  

  单板机使用Universe Ⅱ VME-to-PCI总线桥芯片实现系统的VMM 总线,芯片实际上完成了VME 总线与PCI 总线的操作的互相转化,它同时具备多种转换方式,首先可以完成2个总线中断的互相转换操作,其次可以完成通过VME 总线访问PCI 总线,可以完成PIC总线访问VME总线;这些转换操作很多都是通过芯片的内部寄存器实现的。由于总线桥芯片的转换能力,使得VG5-7457单板机既可以作为VME主控板使用,又可以作为从板使用。

  VxWorks操作系统下将VME 总线地址映射为CPU的本地地址,其映射可以在相关的BSP文件中定义,设计中的映射如表1 所示,将VME 总线映射为CPU 本地地址后,对从板的操作就转化为于对内存访问操作相似的读写操作,使得VME总线的驱动可以方便的实现。

  

  对于操作VME 总线区域的内存空间,系统提供了一系列的接口函数,系统提供的接口函数列表如表2所示。

  

  写内存空间的函数使用sysOut*函数族来完成,需要提供给函数的参数是写入的地址及写入的数据;读内存空间使用sysIn*函数族来完成,需要提供的参数是读的地址,返回值是读到的内容。函数在VxWorks的BSP中定义,使用汇编语言的方法实现相关的操作。

  2 数据采集板的硬件结构抽象

  从主板的VME 地址空间上看从板的结构图如图3所示。

  

  VME地址空间上从板主要分为4块地址区域,它们分别为从板的标识寄存器、从板的随机读写寄存器、功能设置寄存器及数据缓冲区,前两个存储区域主要用来标识从板及对从板进行测试,功能设置寄存器主要用来完成对数据采集从板的功能配置,数据缓冲区主要用来完成数据的传输;其中功能设置寄存器及数据缓冲区是实现对从板数据采集及控制的关键。依据从板的结构特点设计字符型设备驱动框架,驱动程序设计的重点是驱动模型的建立。

  3 驱动程序的设计

  3.1 数据结构设计

  将从板所占用的系统硬件及软件资源抽象成为从板字符型设备的结构体,其定义如下所示。

  

  这样的数据结构设计实现了对从板的抽象,使得驱动程序具有良好的可移植性,方便的实现对多种板卡的驱动。

  3.2 数据传输机制设计

  驱动程序设计模仿了Linux操作系统实现了数据传输的机制--查询机制,数据传输的阻塞机制及信号通知机制。

  查询机制主要是指驱动程序为应用程序提供查询缓冲区标志的接口,应用程序可以随时查询缓冲区的状态而不会引起任务状态的变化;阻塞机制是调用获取缓冲区的任务在缓冲区没有数据时会使该任务处于阻塞状态,直到缓冲区数据可用获得后,任务才会重新获得运行;信号机制是应用程序预先设定一个信号处理函数,当缓冲区有数据时,系统就会自动调用这个信号处理函数而完成用户预定的操作;阻塞机制的任务图示如图4所示,这些机制的细节可用参考文献。要实现这些功能需要实现中断处理机制、字符设备操作的ioctrl方法和read方法。

  

上一篇:基于VLSI平台的MIPS处理器仿真与设计
下一篇:基于VxWorks的VME从板驱动设计与实现(二)

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料