Device Driver Linux (NXDRV-LINUX)

Releases
Current release:For previous versions see version history.

Supported Operating Systems


The driver should support all architectures provided by the linux kernel. The following table shows the tested architectures only

Operating SystemLinux Kernel 2.6Linux Kernel 3.xLinux Kernel
4.x
Linux Kernel
5.x
Architecturex86x64x86x64x86x64Armv7aarch64x86x64Armv7aarch64
Status(tick)(tick)(tick)(tick)(tick)(tick)(tick)(tick)(tick)(tick)(tick)(tick)

Especially on 64-Bit platforms (mainly aarch64), some problems where detected on PCI/PCI-e platforms, depending on compiler optimization. Some compilers optimize the provided memcpy function (OS_Memcpy()) aggressively, resulting in 64 and 128 Bits accesses to the netX memory, which is not supported by the chip. This results in a segmentation fault which you can fix by either replacing OS_Memcpy function by a byte-wise copy or special assembler version, which ommits 64/128 Bit accesses, or by disabling optimization of OS_Memcpy().

General Information

Features

  • Based on the cifX Toolkit source
  • x86 / x64 and Armv7 / aarch64 since kernel version 4.x
  • Unlimited number of cifX boards supported
  • Support for NXSB-PCA or NX-PCA-PCI, netPLC, netJACK boards included

  • Interrupt notification for applications
  • Support of 2nd Memory Window for PCI based device offering MRAM support

  • Setting the device time during start-up if time handling is supported by the device

  • DMA data transfer for I/O data (only PCI based cifX PC cards)
  • (red star) Support for netX90 based devices
  • (red star) Support for CIFX M.2 cards added

Limitations

  • No Interrupt support for NXSB-PCA and NX-PCA-PCI boards
  • On Big Endian machines the user is responsible for converting send/receive packets from/to Little Endian. This is NOT automatically done inside the driver / toolkit.
  • Interrupt support only available for devices handled through uio_netx kernel module
  • Only one application can access a card simultaneously. For multi-application access to a single card, a special application needs to be implemented by user.
  • Online diagnostics access via SYCON.net needs a TCP/IP Server functionality integrated into the user application. An example stand alone server is offered with the linux driver

For more details click here.

Description

The cifX Device Driver for linux, is splitted in a kernel module (free of charge) and a user space library (chargeable). The kernel module is based on the generic uio module and is responsible for cifX hardware detection and preparation to allow mapping the device memory (DPM) to user space. The User space driver libcifX is an user mode driver providing the whole device specific functionality. The user space library offers the same API as the cifX driver API for Windows.

For more details click here.

Road map

For more details click here.

Starting with V1.2.0.0 the support of autotools build method is to be discontinued. Future releases of the cifX Device Driver for Linux will not longer support the autotools build method. Starting with this release of the cifX Device Driver for Linux, CMake is supported instead.

Documentation