FMC TDC - Software
Introduction
This is the project to provide support of the FMC TDC board in the Linux kernel plugged to an FMC carrier board (tested and supported on SPEC and SVEC). In this page we use the SPEC as example, so you have to keep in mind that if you are not using a SPEC you have to adapt some steps to the carrier in use.
The aim is to provide an loadable module to be used along with this board for the latest Linux kernel versions. The driver relies on ZIO framework and the FMC bus dependencies, which are projects also hosted under OHWR.
Dependencies
To compile properly this driver, you should have downloaded the following repositories (branch master).
In order to ease the usage, the git repository includes those dependencies as submodule. The submodule checked out version is the last one that has being tested during the development.
Download
To download the sources, you should execute the following command:
$ git clone git:https://www.ohwr.org/fmc-projects/fmc-tdc/fmc-tdc-sw.git
Compile
To compile the sources using the submodule dependencies, you should execute the following commands:
$ cd <path-to-fmc-tdc-sw>
$ make
If you want to compile the software against other versions of ZIO or FMC-BUS, you can use the environment variables like in the following example:
$ cd <path-to-fmc-tdc-sw>
$ ZIO=<path-to-zio> FMC_BUS=<path-to-fmc> make
Loading the drivers
To load the drivers, we should load the dependencies first:
# insmod <path_zio>/zio.ko
# insmod <path_fmc-bus>/kernel/fmc.ko
# insmod <path_spec-sw>/kernel/spec.ko
Once the dependencies are loaded, we load the drivers:
# insmod <path_fmc-tdc-sw>/drivers/spec-tdc.ko <parameters>
The spec-tdc.ko driver has several parameters, you can discover them executing:
modinfo ./spec-tdc.ko.
- lun: Logical unit number.
- bus: PCI bus number where the SPEC+TDC is plugged on.
- slot: PCI slot where the SPEC+TDC is plugged on.
To know which are the bus and slot numbers, one can use the command lspci:
$ lspci
[...]
00:04.0 Non-VGA unclassified device: CERN/ECP/EDU Device 018d (rev 03)
In the previous output, the parameters will be: bus=0 slot=4.
Libtdc, an user-space library
Introduction
To facilitate the task of managing the FMC TDC devices, it is provided an C/C** user-space library. It is recommended to use it instead of accesing directly to the driver.
API
As the API description is quite long, it is recommended to read the documentation files generated by the "make" command in your local copy of the repository.
To perform this task properly, you should have texlive and doxygen packages installed on your system.
Test program
Introduction
The test program is used to check the proper behavior of the board in
case of failure or to check if there is a bug in the driver or in the
library.
The test program has an CLI interface due to some limitations when
accessing remotely to the machine. It is designed to allow the execution
of the program under SSH.
Dependencies
- Python 2.7 or higher.
First of all, before execute it, you should compile the shared object library:
$ cd <path_fmc-tdc-sw>/lib
$ make libtdc.so
How to use it
To execute it:
$ cd <path_fmc-tdc-sw>/test
$ sudo ./test-fmctdc.py
If you want the help, you can execute:
$ ./test-fmctdc.py -h
Support
We offer the following sources of support:
Please** read the documentation and then the FAQ before asking for support on the mailing list.
Links
Project Status
Date | Event |
26-08-2012 | Project start. |
18-09-2012 | FMC TDC SW support website created in OHWR |
11-10-2012 | Uploaded the development source code. Alpha status |
25-10-2012 | Changed to beta status. Added documentation |
22-01-2013 | Added compatibility with ZIO v1.0. Updated Documentation |