Linux-GPIB 4.3.6 Documentation | ||
---|---|---|
<<< Previous | Next >>> |
Table 2. Linux-GPIB Supported Hardware Matrix
make | model | kernel driver module | board_type (for gpib.conf) |
---|---|---|---|
Agilent (HP) | 82341C | hp_82341.ko | hp_82341 |
Agilent (HP) | 82341D | hp_82341.ko | hp_82341 |
Agilent (HP) | 82350A | agilent_82350b.ko | agilent_82350b |
Agilent | 82350B | agilent_82350b.ko | agilent_82350b |
Agilent | 82351A | agilent_82350b.ko | agilent_82350b |
Agilent | 82357A | agilent_82357a.ko | agilent_82357a |
Agilent | 82357B | agilent_82357a.ko | agilent_82357a |
Beiming Technologies | F82357 | agilent_82357a.ko | agilent_82357a |
Beiming Technologies | S82357 | agilent_82357a.ko | agilent_82357a |
Capital Equipment Corporation | PC-488 | pc2_gpib.ko | pcII |
Capital Equipment Corporation | PCI-488 | cec_gpib.ko | cec_pci |
Capital Equipment Corporation | CEC-488 | tnt4882.ko | ni_pci |
CONTEC | GP-IB(PC) | pc2_gpib.ko | pcIIa |
Frank Mori Hess | fmh_gpib_core | fmh_gpib.ko | fmh_gpib, fmh_gpib_unaccel |
Hameg | HO80 | pc2_gpib.ko | pcII |
Hameg | HO80-2 | ines_gpib.ko | ines_isa |
Hewlett Packard | HP82335 | hp82335.ko | hp82335 |
Hewlett Packard | HP27209 | hp82335.ko | hp82335 |
Ines | GPIB-HS-NT | ines_gpib.ko | ines_isa |
Ines | GPIB for Compact PCI | ines_gpib.ko | ines_pci, ines_pci_unaccel |
Ines | GPIB for PCI | ines_gpib.ko | ines_pci, ines_pci_unaccel |
Ines | GPIB for PCMCIA | ines_gpib.ko | ines_pcmcia, ines_pcmcia_unaccel |
Ines | GPIB PC/104 | ines_gpib.ko | ines_isa |
Iotech | GP488B | pc2_gpib.ko | pcIIa |
Keithley | KPCI-488 | cec_gpib.ko | cec_pci |
Keithley | KUSB-488 | ni_usb_gpib.ko | ni_usb_b |
Keithley | KUSB-488A | ni_usb_gpib.ko | ni_usb_b |
Keithley | MBC-488 | pc2_gpib.ko | pcII |
Keysight (Agilent) | 82350B PCI | agilent_82350b.ko | agilent_82350b |
Keysight (Agilent) | 82351A PCIe | agilent_82350b.ko | agilent_82350b |
Keysight (Agilent) | 82357B USB | agilent_82357a.ko | agilent_82357a |
Measurement Computing (Computer Boards) | CPCI-GPIB | cb7210.ko | cbi_pci, cbi_pci_unaccel |
Measurement Computing (Computer Boards) | ISA-GPIB | cb7210.ko | cbi_isa, cbi_isa_unaccel |
Measurement Computing (Computer Boards) | ISA-GPIB/LC | cb7210.ko | cbi_isa_unaccel |
Measurement Computing (Computer Boards) | ISA-GPIB-PC2A | pc2_gpib.ko | pcIIa (nec7210 chip), pcIIa_cb7210 (cb7210 chip) |
Measurement Computing (Computer Boards) | PCI-GPIB/1M | cb7210.ko | cbi_pci, cbi_pci_unaccel |
Measurement Computing (Computer Boards) | PCI-GPIB/300K | cb7210.ko | cbi_pci_unaccel |
Measurement Computing (Computer Boards) | PCMCIA-GPIB | cb7210.ko | cbi_pcmcia, cbi_pcmcia_unaccel |
Measurement Computing (Computer Boards) | USB-488 | ni_usb_gpib.ko | ni_usb_b |
National Instruments | AT-GPIB (with NAT4882 chip) | tnt4882.ko | ni_nat4882_isa, ni_nat4882_isa_accel |
National Instruments | AT-GPIB (with NEC7210 chip) | tnt4882.ko | ni_nec_isa, ni_nec_isa_accel |
National Instruments | AT-GPIB/TNT | tnt4882.ko | ni_isa, ni_isa_accel |
National Instruments | GPIB-USB-B | ni_usb_gpib.ko | ni_usb_b |
National Instruments | GPIB-USB-HS | ni_usb_gpib.ko | ni_usb_b |
National Instruments | GPIB-USB-HS+ | ni_usb_gpib.ko | ni_usb_b |
National Instruments | PCI-GPIB | tnt4882.ko | ni_pci |
National Instruments | PCIe-GPIB | tnt4882.ko | ni_pci |
National Instruments | PCI-GPIB+ | tnt4882.ko | ni_pci |
National Instruments | PCM-GPIB | tnt4882.ko | ni_pci |
National Instruments | PXI-GPIB | tnt4882.ko | ni_pci |
National Instruments | PCII | pc2_gpib.ko | pcII |
National Instruments | PCIIa | pc2_gpib.ko | pcIIa |
National Instruments | PCII/IIa | pc2_gpib.ko | pcII or pcII_IIa (depending on board switch) |
National Instruments | PCMCIA-GPIB | tnt4882.ko | ni_pcmcia, ni_pcmcia_accel |
self-made (see note) | http://lpvo.fe.uni-lj.si/gpib | lpvo_usb_gpib.ko | lpvo_usb_gpib |
GPIO bitbang | GPIO | gpib_bitbang.ko | gpib_bitbang |
Quancom | PCIGPIB-1 | ines_gpib.ko (Ines iGPIB 72010 chip) or cb7210.ko (Measurement Computing cb7210 chip) | ines_pci or ines_pci_unaccel (Ines iGPIB 72010 chip), cbi_pci_unaccel (Measurement Computing cb7210 chip) |
After power-up, the Agilent 82341 boards require a firmware upload before they can be used. This can be accomplished using the "--init-data" option of gpib_config. The firmware data for the boards can be found at this repository. Note the C and D versions use different firmware data.
If you specify a non-zero base address in gpib.conf, the driver will assume you are trying to configure a 82341C. Otherwise, the driver will use the kernel's ISAPNP support to attempt to configure an 82341D.
The 82341 does not support detection of an end-of-string character in hardware, it only automatically detects the when the EOI line is asserted. Thus if you use the REOS flag for a read, the board's fifos will not be used for the transfer. This will greatly reduce the maximum transfer rate for your board (which may or may not be noticeable depending on the device you are talking to).
The Agilent 82350A/B and 82351A boards do not support detection of an end-of-string character during reads in hardware, they can only detect assertion of the EOI line. Thus if you use the REOS flag for a read, the boards' fifos will not be used for the transfer. This will greatly reduce the maximum transfer rate for your board (which may or may not be noticeable depending on the device you are talking to).
After power-up, the 82350A boards require a firmware upload before they can be used. This can be accomplished using the "--init-data" option of gpib_config. The firmware data for the 82350A can be found at this repository. The 82350B and 82351A do not require a firmware upload.
The Agilent 82357A and 82357B require a firmware upload (before gpib_config is run) to become functional after being plugged in. The linux-gpib tarball contains udev rules for automatically running the fxload program to upload the firmware (and to run gpib_config after the firmware is uploaded). However, the actual firmware data itself must be obtained seperately. It can be found at this repository.
The 82357A/B have a few limitation due to their firmware code:
They cannot be run as a device, but must be the system controller.
They cannot be assigned a secondary address.
They cannot do 7 bit compares when looking for an end-of-string character (they always compare all 8 bits).
Linux-gpib support requires a minimum firmware version of 1.10 for the F82357 and version 1.20 for the S82357. These devices have on-board firmware and do not require a firmware upload before becoming functional afer plug-in. The on-board firmware can be re-flashed; contact the manufacturer for firmware and re-flash procedure.
Limitations:
These devices can only be used as system controllers.
They can only do 8-bit end-of-string (EOS) compares.
fmh_gpib_core is a GPIB chip written in VHDL suitable for programming into a FPGA. The code for the chip may be found at https://github.com/fmhess/fmh_gpib_core. It supports a cb7210.2 style register interface with some extensions. More specifically, the driver is for the hardware layout specified in src/example/fmh_gpib_top.vhd file in the fmh_gpib_core repository.
The driver obtains its hardware information (base addresses, interrupt, dma, etc.) from the device tree. It expects to find two i/o memory resources, an interrupt, and a dma channel. One i/o memory resource is called "gpib_control_status" which contains the 8 bit cb7210.2 registers. The other i/o memory resource is called "dma_fifos" and contains 16 bit registers for the fifos and transfer counter. The dma channel the chip is wired to is specified with the standard "dmas" and "dma-names" fields, with a dma-name of "rxtx". So, the device tree entry for a chip connected to channel 2 of dma controller "dmac" might look something like:
fmh_gpib_0: fmh_gpib@0x00049800 { compatible = "fmhess,fmh_gpib_core"; reg = < 0x00049600 0x00000080 0x00049800 0x00000008 >; reg-names = "gpib_control_status", "dma_fifos"; interrupt-parent = < &intc >; interrupts = < 0 57 4 >; dmas = < &dmac 2 >; dma-names = "rxtx"; }; //end fmh_gpib@0x00049800 (fmh_gpib_0) |
This usb-gpib adapter can be assembled following the project from the Laboratory of Photovoltaics and Optoelectronics at the Faculty of Electrical Engineering, University of Ljubljana. It is available at http://lpvo.fe.uni-lj.si/gpib . The adapter allows the control of GPIB devices with some limitations: it can only be the system controller; multicontroller and device operations are not supported (as yet). The linux-gpib driver 'lpvo_usb_gpib', written at the Department of Physics of University of Florence (Italy), is currently under development. It offers basic capabilities like ibrd(), ibwrt(), WaitSRQ() and others. Requests for unsupported features are flagged by a diagnostic message to syslog.
WARNING: this driver is incomplete and its behavior does not conform to the IEEE 488 standards.
This is a simple GPIO bitbang driver that currently only works on Raspberry Pi platforms. For information on the GPIO to GPIB pinouts as well as limitations see the source code at:
linux-gpib-kernel/drivers/gpib/gpio/gpib_bitbang.c |
Two pin maps between gpio and gpib are currently supported: elektronomikon and gpib4pi-1.1. For schematics, boards and information on driver IC's see http://elektronomikon.org and lightside-instruments gpib4pi
The pin_maps are configured via the pin_map module parameter. By default support for the elekronomikon pin_map with SN75160/161 driver IC's is enabled. i.e. the default module parameter settings are pin_map=elektonomikon and sn7516x_used=1. To disable support for the IC's when they are not installed the module parameter sn7516x_used must be set to zero:
modprobe gpib_bitbang sn7516x_used=0 |
modprobe gpib_bitbang pin_map="gpib4pi-1.1" |
The USB-B requires a firmware upload (before gpib_config is run) to become functional after being plugged in. The linux-gpib tarball contains udev rules for automatically running the fxload program to upload the firmware (and to run gpib_config after the firmware is uploaded). However, the actual firmware must be obtained separately. It can be found at this repository.
Unlike the USB-B, the USB-HS does not require a firmware upload to become functional after being plugged in. Most GPIB-USB-HS+ also do not require firmware upload, however some exceptions have been identified. If your GPIB-USB-HS+ initially comes up with a USB product id of 0x761e it will require a one-time firmware upload which permanently changes the product id to the usual 0x7618 for a GPIB-USB-HS+. Currently this can be done by plugging the adapter into a Windows computer which has the NI driver software installed. Alternatively, you may use the hsplus_load utility to initialize the adapter under Linux.
The linux-gpib tarball contains udev rules which will automatically run gpib_config after the device is plugged in.
Beware of inexpensive NI GPIB-USB-HS clones. While they work on Windows most will not and cannot be made to work with linux-gpib. See the end of the discussion on bug ticket #82.
<<< Previous | Home | Next >>> |
gpib_config | Linux-GPIB Reference |