PCIVME 在 Linux 下的驱动安装
根据 ARW Elektronik, Germany 的 Klaus Histchler 所提供的 pcivme 驱动程序 (2004.08.13) 所配置。配置过程参照 ARW Elektronik, Germany 所提供的文档。
pcivme-3.1.tar.gz
驱动程序包中包含有这样几个文件:
- Makefile – 全局的 Makefile,用于编译驱动程序、库及测试程序。
- doc – 目录,存放一些文档及模板。
- driver – 目录,驱动源代码及安装脚本。其中 pcivme.h 是驱动程序的接口代码的头文件,而 pcivme_load 则是安装脚本(bash)。
- lib – 目录,存放着共享库的源代码。其中 pcivme_ni.h 是库接口代码的头文件。
- pvmon – 一个小的测试程序。
- test – 另一个小测试程序。
兼容性
已经测试过的平台:
- kernel 2.4.18 (SuSE 8.0)
- kernel 2.2.19 (SuSE 7.3)
- RedHat Linux 7.2
- kernel 2.6.5 (SuSE 9.1)
源代码与特定的 x86 硬件特征无关,应该能够在其它平台上编译。但还没有经过测试。在驱动程序目录下可以指定内核路径进行基本的交叉编译,比如:
make KERNEL_LOCATION=<你内核的位置>
功能
驱动程序和共享库提供访问 PCIVME 接口的函数,利用接口函数的这些特性可以捕获 VME
的中断。一些高速访问功能,比如 autoread
需要硬件上支持,……
驱动程序的安装
利用 root 用户来安装驱动程序。在安装目录下有一个 bash 脚本 pcivme_load
, 调用此脚本来安装 VMEMM 模块。比如你的模块设置为 #1 (见跳线 J301…J304),则可以这样执行
# ./pcivme_load 1
此命令安装驱动模块并创建设备节点 /dev/vmemm_1
. 此处的 1 应该是出厂设置的模块号。如果你想卸载此模块,则可执行命令
rmmod pcivme
安装共享库
共享库 libpcivme.so
提供访问 VME 总线的底层函数接口。你可以在文件
libpcivme.h
中发现这些函数的原型。将文件 libpcivme.so.x.x.x
拷贝到你的
/usr/lib
目录下,然后到 /usr/lib
下做两个符号链接:
ln -sf libpcivme.so.x.x.x libpcivme.so.1 ln -sf libpcivme.so.1 libpcivme.so
你可以到 lib 目录下执行 make install
来完成上述操作。但你必须要有 root 权限。
检查安装结果
在 test
目录下执行命令 simpleTest
. 可以用参数 -?
来查看调用的方法。可以用
Ctrl-C
来终止程序。
检查安装结果 2
执行命令 cat /proc/pcivme
的结果:
PCIVME information. Version 3.0 of Mar 14 2005 from Klaus Hitschler. --------------------- Interfaces found : 1 Major Number : 254 --- 1 --------------- LCR phys/virt/size : 0xdfafcf00/0xe01fef00/128 Control phys/virt/size : 0xdfafe000/0xe0428000/4096 VME phys/virt/size : 0xdfaff000/0xe0432000/4096 Irq : 5 VMEMM is or was : (software) connected. Module-Number : 1 FPGA-Version : 1 Systemcontroller : yes Word Mode : no IrqCount : 0 Pending IrqStatus : none