HOST side drivers for FPGA-only modules (Linux OS)
The SMT6036 is an efficient, ready to use, LINUX host side interface to Sundance hardware. It allows you to control Sundance carrier boards from the host as well as to exchange data between the host and TIM’s on these carrier boards. SMT6036 is useful for systems using one of the FPGA modules as the root module. Use SMT6026 for Windows and SMT6036 for Linux OS.
- Transfer data between the carrier board and the host.
- Obtain information about the carrier board.
- Control the state of the carrier board, download FPGA configurations, access shared memory, use DMA, access Comports and RSL links directly.
- Provides direct access to the hardware registers.
- Provides both C and C++ API’s at 3 different layers.
- Linux kernel 2.6.x supported.
- Training, integration assistance and special feature requests are welcome and can be provided on a time and material basis.
Three different API’s are exposed to the user:
- Basic ANSI C level API straight to the kernel module.
- Simple and fast C++ level API.
- More elaborate SMT6026-equivalent C++ API with direct support for the various AD/DA converters etc.
See the block diagram for an overview of the layers and the different API’s.
- Kernel module source code.
- ANCI C level API library source code.
- Simple C++ level API library source code.
- SMT6026-equivalent C++ API source code.
- Example code interfacing the simple C++ level API demonstrating shared memory read/write, FPGA configuration and Comport read/write.
- Standard makefiles etc. for build flow with gcc tools.
All files are delivered in a single tarball archive created on a per customer basis.
Documentation is available in the Product Manual available on the web for easy access and pre-purchase evaluation purposes. The Product Manual covers the following areas:
- Install & getting started guide.
- Full documentation for the ANSI C level API.
- Full documentation for the simple C++ level API documentation.
- Reference to the SMT6026 documentation for the SMT6026-equivalent C++ API and description of the key differences between SMT6026 designed for Windows and this driver (SMT6036) designed for Linux.
- Release status detailing released versions and specific hardware tested.
In principle all relevant Sundance hardware can be supported, but not all may be implemented and/or tested. Please inquire about your specific needs and we will estimate a time to implement it. Refer to the Product Manual for release status including supported/tested hardware.
The driver is designed with high performance in mind. This includes a zero-copy buffer design for both the C API and the Simple C++ API, allowing large bandwidth transfers without buffer copying to be implemented. Specific customer applications have been implemented demonstrating near maximum theoretical bandwidth of the PCI bus with master mode DMA and very little CPU load. More than 220 MByte/s using only 32 bit transfers on a 66MHz/64bit PCI bus (with SMT145 as the carrier board).
The following licensing schemes are used in this software package.
- The kernel module is GPL(http://www.gnu.org/licenses/gpl.txt).
- The C API header files shard between the kernel module and the user application are released under dual-license conditions. The header files may be used under the FreeBSD license(http://www.freebsd.org/copyright/freebsd-license.html) or GPL.
- The simple C++ API and the SMT6025-equivalent API is provided for the customer on a site-wide license for a one time licence fee. No additional license fees applies. Support as listed in the Sundance Technical Support & Maintenance document for the Initial Package is provided free of charge. Additional support, training, integration assistance and special feature requests are welcome and can be provided on a time and material basis. The driver is developed bywww.axcon.dk (Axcon Aps).
Please provide the following information when ordering, in order for us to best help you to the optimum solution:
- Host hardware architecture (PC/embedded? CPU?)
- Sundance modules used (root and attached modules)
- Linux OS version