下一页 上一页 目录

3. 如何使用 VMEUtils 和 VMEShell 软件包与 VMEbus 通信

3.1 什么是 VMEUtils 程序

这个程序可以直接运行。启动后,您将看到命令提示符。输入 ? 您将看到命令列表。虽然有用,但我认为您会发现 VMEShell 脚本是更好的选择。它们确实使用此程序与内核驱动程序通信,因此必须使此程序在当前的 PATH 中可用。

“vmeutils” 的源代码也是关于如何直接与内核驱动程序通信的指导。对于那些希望创建直接与驱动程序通信的程序的人来说,这些源文件是很好的示例。

3.2 什么是 VMEShell 脚本

VMEShell 程序是 Unix shell 脚本。它们为操作员提供了一种简单的方式来访问 VMEbus 上的数据。使用这些命令会在用户的工作目录中创建临时文件,这些文件存储您上次访问的信息。这很好,因为它使得可以注销机器,重新登录并从您离开的地方继续,而无需再次重新输入 VMEbus 信息。此外,这些文件存储在当前工作目录中,因此您可以通过为每个感兴趣的 VME 板设置不同的目录来拥有不同的 VME 访问配置。

假设您将 shell 程序和 “vmeutils” 程序放在 /usr/local/bin 目录中,您应该能够以普通用户身份登录并运行它们。以下内容正是基于此假设。

3.3 “vmemap” 命令。

以普通用户身份登录并创建一个目录进行实验。进入此目录后,输入

vmemap
您应该看到类似这样的帮助屏幕...
Usage:  map address count space size type
  where address is VME Address to set Universe image to

    Space = 0 CR/CSR    Space = 1 A16
    Space = 2 A24       Space = 3 A32

    Size  = 1 8 bit     Size  = 2 16 bit
    Size  = 3 32 bit    Size  = 4 64 bit

    Type  = 0 USR/DATA  Type  = 1 USR/PRG
    Type  = 2 SUP/DATA  Type  = 3 SUP/PRG
在这里您可以告诉 VMELinux 您希望如何访问 VMEbus。我们假设您已经了解 VMEbus 的多种操作模式,但这里有一个简短的列表来帮助您。输入...
vmemap 0x8000 0x100 1 2 0
将 VMELinux 驱动程序设置为访问基地址为 8000 Hex 的 A16 板,范围为 100H 字节,数据宽度为 16 位,模式为 USR/DATA。

您将在当前目录中找到两个新文件。

fa.vme 存储一个“固定加法器”值,该值将添加到以下程序的所有后续访问中。

map.vme 存储上述参数,因此您不必每次都输入它们。

以下所有 shell 实用程序都从这两个文件中读取值以执行 VME 访问。

3.4 读取字节、字或长字

语法

3.5 写入字节、字或长字

语法

3.6 将 VMEbus 读取到文件

语法

3.7 将文件写入 VMEbus

语法

3.8 参数

这些命令使用几个参数:address、size 和 filename。

3.9 选项

可用选项用单个破折号定义,后跟以下任意组合

3.10 关于 DMA 模式的注意事项。

VMELinux 提供了对 Universe 芯片所有功能的访问。尤其有用的是访问芯片上的 DMA 引擎。借助此功能,Universe 芯片通过成为 PCI 主设备在 PCI 总线上进行数据传输。这很好,但真正的好处来自 VMEbus 访问。即使 VMEbus 接口未使用块模式传输,Universe 芯片也可以在持续 400 纳秒内完成 VMEbus 传输。这是 Universe 完全控制 PCI 总线和 VMEbus 的直接结果。因此,访问非块模式 VMEbus 外围设备的速度比旧技术快得多。


下一页 上一页 目录