从 VMELinux 网站 下载发行版。
将文件放置在您的源代码目录中;我们建议使用 /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
进入 "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 代码作为程序与驱动程序的接口。有关此文档的计划将在未来制定。
您现在可以尝试驱动程序了。
确保您是 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如果不是,则表示出现错误。
Universe 驱动程序在 PCI 总线上查找 Universe 芯片方面做得很好,但是电路板设计的差异可能会阻止这种情况发生。我们已经在 Xycom XVME-655、Dynatem DPC 和 SBS VP7 上测试了我们所有的例程。没有理由说明它不应该在任何其他带有 PCI 总线和 Universe PCI-VME 桥接芯片的 Intel 板上工作。如果您遇到问题,请在 VMELinux 项目 Bug 报告器 上告知我们