This website is no longer maintained. Its content may be obsolete. Please visit http://home.cern/ for current CERN information.
The readout unit working group (RUWG) defined a connector and protocol that will allow CMS DAQ to read out the data from all the sub-detector's FEDs in a common fashion.
Boards can be shipped to FED developers in order to test the Slink port on their designs.
The hardware web page is at : http://cern.ch/dgigi/fed_kit/fed_kit.htm
Software support : Eric Cano <Eric.Cano@cern.ch>
Hardware support : Dominique Gigi <Dominique.Gigi@cern.ch>
To order some hardware : Attila Racz <Attila.Racz@cern.ch>
The RUWG web page is at : http://cmsdoc.cern.ch/cms/TRIDAS/horizontal/
The FEDkit also comes integrated in the XDAQ framework. See http://cern.ch/xdaq
15/11/2004 - fedkit-0.9.pdf | Added documentation for support of the fed_id feature in the sender board. |
26/02/2007 | Added a new utility: fedkit_link_dump_check contributed by Tim Christiansen Tag: fedkit_v_1_39 |
16/01/2002 - fedkit-0.2e.pdf | Latest revision of the documentation fully covers hardware and software documentation for the receiver board. Sender board documentation only partial. |
24/01/2002 - fedkit-0.2f.pdf | Updated sender board documentation and added preliminary sender API plans. |
13/2/2002 - fedkit-0.2g.pdf | Documented the robustness feature. |
10/4/2002 - fedkit-0.3a.pdf | Merged several corrections. Added API for allocation of blocks by user (noalloc scheme). |
30/04/2002 - fedkit-0.3b.pdf | Added the API for the master and slave mode of the sender board. |
15/05/2002 - fedkit-0.3c.pdf | Added API for block handle management (in allocation by user section) |
30/05/2002 - fedkit-0.4a.pdf | Added an API for fragment analysis (also in the case of several FEDs merged in the same fragment). Reworked the introduction on the software architecture. Fixed the terminology use. Fixed the kernel patch section (now the CERN 2.4.9 kernel is the recommended one). |
10/7/2002 - fedkit-0.5a.pdf | Added an API and hardware documentation for link selection in merger. |
16/9/2002 - fedkit-0.6a.pdf | Added an API for FED block parts. Added the hardware documentation for soft reset on sender. |
21/11/2002 - fedkit-0.7a.pdf | Documented the change in the default fedkit compiled: now the native Linux version is compiled. Xdaq-shell is still used by the test program. Added labview functions documentation. Fixed various details. |
21/11/2002 - fedkit-0.7b.pdf | Minor updates |
8/3/2004 - fedkit-0.8b.pdf | Added documentation for fedkit_frag_get_FED... functions, fedkit_get_FPGA_version. Documented FPGA versioning in hardware Documented link-level dump functionnality Clarified that block number has to be >= 2048 in documentation. Documented new fedkit_get_error_string function Convinced framemaker to generate a proper PDF. |
22/3/2004 - fedkit-0.8c.pdf | Minor update |
7/6/2004 - fedkit-0.8d.pdf | Updated location of i2o headers in the CVS repository (checkout was incomplete before that). See new checkout instructions. |
15/11/2004 - fedkit-0.9.pdf | Added documentation for support of the fed_id feature in the sender board. |
16/01/2002 | Both software and hardware run at full speed on the link Slink to PCI memory achieved range from 435MB/s to 470MB/s depending on fragment size. More measurements to come... The receiver board design is finished. Sender board only operates in generation mode. Slave and master modes are still in development. |
13/2/2002 | i2ocore and fedkit now handle crashes of the calling software more gracefully. Yet, the user still has to unload/reload the modules fedkit_kernel if the board was not deallocated properly. |
10/4/2002 | Fixed a synchronization bug between software FIFO and interrupt Fixed a crash condition when free data blocks are exhausted. |
30/4/2002 | Added the support for the noalloc scheme. This version is tagged `fedkit_v_1_10`. This version still supports the old version of the sender board (device ID 0xFE01 and not 0xB0AA) |
15/5/2002 | Added support for the handle management functions. Fixed a bug with header size in blocks. This version is tagged 'fedkit_v_1_11'. |
16/5/2002 | Fixed a bug (memory leak in no alloc scheme). This version is tagged 'fedkit_v_1_12'. |
30/5/2002 | Added the functions to handle the fragments from the merger board. Added data checking functions to test the merger board, including pseudo-random patterns. During those test, it turned out that kernel 2.4.16 and 2.4.18 (latest today) were buggy. We get an error in __alloc_page (kernel function) in every process of the system at some point. When init dies, the kernel panics. Not good... Kernel 2.4.9 provided by redhat 7.2 works. The one provided by CERN with cern redhat 7.2.1 has the extra advantage to have the bigphys patch already included. This is our current kernel of choice. This version is tagged 'fedkit_v_1_14'. |
10/7/2002 | Added support for link selection in merger. Major rework was done on the test programs (not much documented) used to test all the run conditions of the fedkit. Now all the tests are in a single program. Test program in progress for sender tests (as master and slave). Added support for multithreading environment (locking). The fedkit is now thread safe Fixed a bug that came when user did a fedkit_open without fedkit_start and then fedkit_close . Added erasing of structures and detection to warn user in case of multiple close/release of fragment. Major rework in the makefiles so that compiling from the main makefile (in itools) allows the user to choose the compiler (gcc/gcc3/insure) the compiler is forced to gcc for kernel code. The DEB Makefile variable enables profiling compilations (DEB=-pg), and optimized compilations (DEB=-O6). Those Makefile features still have to be documented. This version is tagged 'fedkit_v_1_15' |
17/9/2002 | Heavily reworked the test_merge program. This program handles all the situations where the fedkit works. Currently, it handles self sender and receiver, single link or merger, handles the senders, in master, slave and generated mode. The program checks the fragment data fully. We can now check the data up to 200MB/s thanks to assembly check function (used to be 15MB/s). The test_merge program can be used in just send/just receive mode, so that we can send data from one PC to another. The command line parameters can be viewed using test_merge --help. The fedkit API was slightly revised to have a more uniform use of fixed size types (u32, etc...). The whole API and internal functions rely on the U32 family, defined in the i2o header files located in TriDAS/Auxiliary/i2o. The new native version of the fedkit now is a full featured driver. This driver doesn't rely anymore on i2ocore and xdaq-shell. This improves the driver behaviour in case of crashes (the receiver or sender is then closed more gracefully). The driver can now be installed and loads on demand automatically. (This feature was also added for the xdaq-shell). Added in the API the functions for going through the payload of each FED effortlessly. (fedkit_frag_get_FED_block... functions, see documentation). This version is tagged 'fedkit_v_1_16' |
21/11/2002 | Using fedkit native, the user has to do "fedkit install" once only and then the driver load automatically after each reboot. Added support for the interrupt on the sender board, leading to improved performance (only in Linux native version). Made fedkit native version the default when doing "make fedkit" at top level. Added software reset of sender to fix a system hang when sending in master mode and closing before send complete (blocked by receiver). Fixed the errors shown by depmod when doing fedkit-install Added a threshold scheme in the receiver interrupt, reducing dramatically the interrupt number on receiver side. Minimal number or receiver blocks is now 2000
|
28/02/2003 | Fixed compilation issues for the fedkit native driver (some problem were seen whith depmod -a on AMD machines) Fixed some issues with some rcsid variables in fedkit_sender.h and fedkit-example.c (compilation issue) Various bugfixes. This version is tagged "fedkit_v_1_21". |
8/3/2004 | Fixed bugs in fedkitfrag_get_FED... functions Fixed incrrect fedkit_close (missing mmaps) Fixed a memory leak in test_merge and decreased memory usage Added support for FPGA version reading in software Added options to test_merge Added support for CRC checking (now reported by hardware) Added support for link-level dump and corresponding commend-line utility Fedkit now compiles on Redhat 7.3, 9, and CERN E. Linux 3 (to be released linus distribution) Various bugfixes. This version is tagged "fedkit_V_1_27". |
23/4/2004 | Added some version awareness to handle kernel API variations (backporting of 2.6 features into 2.4 by RedHat) The tag for this version is "fedkit_V_1_29" |
4/6/2004 | A bug (race condition) leading to a hang of the receiver has been discovered and corrected. The cvs tag for the new version is "fedkit_v_1_30" |
5/7/2004 | Fixed a wrong memory allocation leading to strange behaviour of the fedkit in some systems (strangley not all of them) Various small fixes The cvs tag is "fedkit_v_1_31" |
20/10/2004 | Updated the field locations for the fedkit_frad_get_FED_... functions, that were based on old specification of from RUWG. Among others, this fixes the CRC fiedl. Added support for TTS trailer field. Fixed an out-of-bound index in the fedkit_frag_analyse function that lead to segmentation faults. Tagged: "fedkit_v_1_34" |
15/11/2004 | Added support for the FED id field in the sotfware for the fedkit_send... functions. This requires recent sender FPGA version (>= 0x3F200009). Tagged: fedkit_v_1_35 |
10/03/2005 | Added better timeout support in test_merge Minor modification in Makefile Tagged: fedkit_v_1_36 |
08/07/2005 | Changed the Makefile for xdaq shell and generic_pci_access so that both static and dynamic libraries are generated correctly. Tagged: fedkit_v_1_37 and generic_pci_access_V_1_01 (for generic pci access only). |
26/02/2007 | Added a new utility: fedkit_link_dump_check contributed by Tim
Christiansen
Tag: fedkit_v_1_39 |
Fedkit is based on the i2ocore package
Fedkit requires a Linux kernel with "big physical area" patch installed. The kernel for the CERN redhat 7.2.1 is located in AFS at /afs/cern.ch/project/linux/dev/kernel/2.4-current/build-current. This kernel version works well for us, and already has the bigphys patch applied.
The patch itself can be found on this page : http://www.polyware.nl/~middelink/En/hob-v4l.html