What is it?
devLib2 is an extension to the EPICS OS independent VME bus access library (devLib v1) found in the 3.14.x series. The v2 library is an overlay and extension to the v1 library and not a replacement. It is planned that the v2 library will be merged with the v1 library for the 3.15.x series. After that point devlib2 will continue to exist as a location for backports and bug fixes for the 3.14.x series.
Releases can be found at http://sourceforge.net/projects/epics/files/devlib2/
This module is versioned with Mercurial and can be viewed at http://epics.hg.sourceforge.net/hgweb/epics/devlib2/
Or checked out with
hg clone http://epics.hg.sourceforge.net:8000/hgroot/epics/devlib2
The canonical version of this page is http://epics.sourceforge.net/devlib2/
EPICS Base >= 188.8.131.52
devLib2 adds features in several areas: PCI bus access, VME64x CSR/CSR, and memory mapped I/O (MMIO) operations.
The PCI bus access interface is entirely new. It is currently implemented for RTEMS and vxWorks. An implementation for userspace Linux is also under development. The PCI interface provides functions for: searching the bus, mapping devices into process memory, and (dis)connecting interrupts.
Runtime selection of implementations is also supported. This allows code using this interface to compile and link for all target, even those which lack an implementation.
The VME64x library provides several functions for accessing the CSR/CR address space defined by VME64 and extended by VME64x. This includes: probing by slot number and matching by identifier registers, definitions of standard registers, and functions to access them.
The MMIO library provides an OS and CPU architecture independent way to safely access memory mapped I/O devices. Makes guarantees of the width and order of accesses.
2.4 (Oct. 2012)
- Remove C++ style comments from epicsMMIODef.h and devcsr.h
- Fix Issue preventing Custom PCI bus implementation. (Found by Dan Eichel)
- Linux "ISR" thread stack size not correct (Fixed by Till Straumann)
- Linux: Previous versions expected Linux kernel modules to leave gaps for un-mappable PCI BARs (I/O Ports). However, most existing kernel modules don't do this. Add a flag to devPCIToLocalAddr() to specify how a device's kernel module does mapping. The default is to map as in previous versions. (New behavior by Till Straumann) See documentation of devPCIToLocalAddr().
2.3 (Apr. 2012)
- Include proper headers to enable memory barriers for vxWorks >= 6.6
- Fallback to noop when vxWorks memory barriers are not available
- Fix incorrect return code when connecting pci interrupts on vxWorks
2.2 (Sept. 2011)
- linux: follow changes to /sys (needed for kernel >2.6.26)
- pci: IOC shell functions added: pciread()
- pci: vxworks translate PCI addresses
- Build on vxWorks 6.8 (Thanks to Andrew Johnson)
- pci: Make operations reentrant on RTEMS and vxWorks (previously was not oops.)
- pci: Fix bug with devPCIBarLen on RTEMS and vxWorks.
2.1 (Jan. 2011)
- Fix build issue with 3.14.12 with RTEMS pc386 (found by Jim Chen from Hytec)
- Add notification of missed PCI interrupt events on Linux
- Additional arguement 'count' for vmeread() to show blocks of registers
- Add section to PCI Usage on x86 Port I/O
- Add section to PCI Access in Linux concerning hardware requirements
2.0 (Sept. 2010)
- Michael Davidsaver <firstname.lastname@example.org>
Till Straumann <email@example.com>