下一页 上一页 目录

2. VMELinux 内核驱动的安装

2.1 下载源代码

VMELinux 网站 下载发行版。

2.2 将源代码安装到软件目录

将文件放置在您的源代码目录中;我们建议使用 /usr/src。通过键入以下命令解压 zipped/tarred 文件...

tar -xzf VMELinux_1.3.x.tar.gz

然后

cd vmelinux
您应该看到三个目录
ca91c042
vmeshell
vmeutils

在 ca91c042 中您应该找到

ca91c042/
ca91c042/Makefile
ca91c042/ca91c042.c
ca91c042/ca91c042.h
ca91c042/README
ca91c042/e
ca91c042/ins
ca91c042/stat
ca91c042/uns

在 vmeshell 中您应该找到

vmeshell/vmer
vmeshell/README
vmeshell/vmeseek
vmeshell/cmd.vme
vmeshell/vmew
vmeshell/vmeregw
vmeshell/vmeregr
vmeshell/vmefa
vmeshell/vmecall
vmeshell/e
vmeshell/ec
vmeshell/fa.vme
vmeshell/map.vme
vmeshell/tmp.vme
vmeshell/vmedb
vmeshell/vmedl
vmeshell/vmedw
vmeshell/vmemap
vmeshell/vmerb
vmeshell/vmerf
vmeshell/vmerl
vmeshell/vmerw
vmeshell/vmewb
vmeshell/vmewf
vmeshell/vmewl
vmeshell/vmeww
vmeshell/makelinks

在 vmeutils 目录中您应该找到

vmeutils/commands.cpp
vmeutils/commands.h
vmeutils/universe.h
vmeutils/Makefile
vmeutils/vmeutils.h
vmeutils/unilib.h
vmeutils/unilib.cpp
vmeutils/vmeutils.cpp
vmeutils/README

2.3 编译 VMELinux 组件

进入 "ca91c042" 目录并制作 VMELinux 设备驱动模块。

make

现在您必须创建几个 /dev 驱动文件。键入

make devices

不要忘记创建 /dev/vme* 设备!!!

创建完成后,您应该在目录中看到文件 "ca91c042.o"。这是一个可加载模块。有关加载信息,请参见下文。另外,您应该在 /dev 目录中找到几个 "vme..." 文件。以下是这些文件应有的外观

hostname:/dev# ls -l vme*
crw-rw-rw-   1 root     root      221,   8 Jul 30 10:51 vme_ctl
crw-rw-rw-   1 root     root      221,   0 Jul 30 10:51 vme_m0
crw-rw-rw-   1 root     root      221,   1 Jul 30 10:51 vme_m1
crw-rw-rw-   1 root     root      221,   2 Jul 30 10:51 vme_m2
crw-------   1 root     root      221,   3 Jul 30 10:51 vme_m3
crw-rw-rw-   1 root     root      221,   4 Jul 30 10:51 vme_m4
crw-rw-rw-   1 root     root      221,   5 Jul 30 10:51 vme_m5
crw-rw-rw-   1 root     root      221,   6 Jul 30 10:51 vme_m6
crw-------   1 root     root      221,   7 Jul 30 10:51 vme_m7
hostname:/dev#

切换到 "vmeutils" 目录并在那里键入 make。

make

这将编译 "vmeutils" 程序。此程序直接与内核驱动程序对话。对于那些希望编写自己的程序以直接与驱动程序对话的人来说,这是一个参考作品。

将程序 "vmeutils" 复制到您的用户二进制目录,或让 makelinks 脚本在下一步中为您执行此操作。在我们的系统中,这是 "/usr/local/bin"。或者,您可以在用户 bin 目录中创建指向 "vmeutils" 程序的链接。

切换到 "vmeshell" 目录。这里没有要编译的文件。这些是使用 "vmeutils" 程序访问 VMEbus 的 shell 程序。所有以 "vme" 开头的文件都应该链接或复制到 "/usr/local/bin" 目录。

只需键入

./makelinks

查看 libvme 目录,了解有关如何与驱动程序通信的 C++ 示例。如果您愿意,可以使用 libvme 代码作为程序与驱动程序的接口。有关此文档的计划将在未来制定。

您现在可以尝试驱动程序了。

2.4 加载 VMELinux 内核模块

确保您是 root 用户,并通过键入以下命令“加载” Universe 芯片的 VMELinux 内核模块...

insmod ca91c042

或者只需键入 "./ins" 让 shell 脚本为您执行此操作。完成后,键入...

./stat

more /proc/ca91c042
您应该在屏幕上看到寄存器列表。类似这样...
Universe driver info:
  Control Pointer = 0000
  Stats  reads = 0  writes = 0  ioctls = 0
  LSI0_CTL = 00800000    LSI1_CTL = 00800000
  LSI0_BS  = C0000000    LSI1_BS  = 00000000
  LSI0_BD  = C0010000    LSI1_BD  = 00000000
  LSI0_TO  = 40009000    LSI1_TO  = 00000000
  LSI2_CTL = 00800000    LSI3_CTL = 00800000
  LSI2_BS  = 00000000    LSI3_BS  = 00000000
  LSI2_BD  = 00000000    LSI3_BD  = 00000000
  LSI2_TO  = 00000000    LSI3_TO  = 00000000
  image_va0   = 00000000     image_va1   = 00000000
  image_va2   = 00000000     image_va3   = 00000000

Driver Program Status:
  DMACTL 0    = 00000000 DMACTL 1    = 00000000
  DMACTL 2    = 00000000 DMACTL 3    = 00000000
  OkToWrite 0 = 0        OkToWrite 1 = 0
  OkToWrite 2 = 0        OkToWrite 3 = 0
  Mode 0      = 0        Mode 1      = 0
  Mode 2      = 0        Mode 3      = 0
如果不是,则表示出现错误。

2.5 困难

Universe 驱动程序在 PCI 总线上查找 Universe 芯片方面做得很好,但是电路板设计的差异可能会阻止这种情况发生。我们已经在 Xycom XVME-655、Dynatem DPC 和 SBS VP7 上测试了我们所有的例程。没有理由说明它不应该在任何其他带有 PCI 总线和 Universe PCI-VME 桥接芯片的 Intel 板上工作。如果您遇到问题,请在 VMELinux 项目 Bug 报告器 上告知我们


下一页 上一页 目录