| Release Name: | Moscow, Russia |
| Release Date: | April 7, 2004 |
| Download : | Moscow_IT.tar.gz |
Table 1. Release Info
The software release is now available as a single gzipped TAR file. See Section 2.4 for a description of the archive contents.
| Package | Version | Source | Binary | Docs |
|---|---|---|---|---|
| VXW | N/A | none | bin | none |
| CMX | V2-0-8 | none | bin | none |
| PBS | V2-2-0 | src | bin | doc |
| PBI | V0-0-4 | src | bin | doc |
| MSG | V1-1-4 | src | bin | doc |
| LCB | V4-0-1 | src | bin | doc |
| GNAT | V1-0-23 | src | bin | gnat, xbrd |
| DEM | V2-0-8 | src | bin | doc |
| DAB | V4-1-4 | src | bin | doc |
| GGLT | V1-4-9 | src | bin | doc |
| EVUT | V1-2-7 | src | bin | doc |
| CTST | V0-0-20 | src | bin | none |
| DUTIL | V0-2-4 | src | bin | doc |
Table 2. Package Versions
Changed slightly the calling signature for event handling callbacks from
to
The second parameter is now the event descriptor as read from the LCB EVENT FIFO. It contains all the status information of the previous format plus the starting position of the event in the circular buffer, as well as the event length.
The starting position of the event is not so interesting, because that is already conveyed in the LCB_msg parameter. The event length, however, may be interesting to the call back handler.
The other status information includes LATp receive status (parity errors, truncate) and PCI receive status like target abort, etc.
Changing this interface has a small ripple effect on other code, but fortunately that code is all maintained by me.
Released new version that has the "cmdPath" enable bit moved from the LATp FPGA to the PCI FPGA.
Note: The minimum FPGA versions required are PCI version 17 and LATp version 7.
For every event the LCB skips 16 bytes in the circular buffer before DMA-ing the event. These 16 bytes are "private" in that they are intended for use by the LCB driver. This release changed what data is stored in this private area. An LCB event looks like this in 32-bit words:
0 -- private0
1 -- private1
2 -- private2
3 -- private3
4 -- event0
5 -- event1
6 -- event2
7 -- event3
....
|
Previously a word of LATTE specific data had crept into private word 3 in order to support an old test stand event format. Basically the event length and a few bits of status were stored in this position. Clearly the LATTE specific piece had no business way down at the driver level. This information has been pushed out to the LCB event handler used with LATTE.
However, the event length was a useful piece of info to keep with the actual event data. It made "freeing the event" simple -- the user only needed to pass me a pointer to the event and I could free it.
The other piece of info the driver keeps with the event is a single bit indicating that the event has been freed (an ownership bit).
Currently I keep the ownership bit and the 10-bit event length in one of the four private words. The other three words are currently not used. The layout looks like this:
0 -- private0 -- not used
1 -- private1 -- not used
2 -- private2 -- 1 ownership bit, 10 event length bits, 21 bits unused
3 -- private3 -- not used
|
The new PCI firmware changed the reported length of th event contribution. The previous version included the skipped 4 word prefix in the total length, while the new version does not.
The new LATp firmware updated the CSR. The CSR now contains a version number and a testing bit for generating "pause" while receiving event data.
Removed private parity calculation functions and modify all relevant functions in DAB to use PBS/PARITY.ih
In response to badgering by Curt and Sergio, the interfaces to the asynchronous libraries have been extended to include payload decoding routines that extract the result of a read command from an LCB result item.
DAB has new GEM interfaces - all registers are now 32 bits wide.
For the LATTE libraries (gtem_lcb and gaem_lcb) mapped new MSG errors codes to the legacy error codes.
In libaem_reg.o the names and values of several AEM registers were updated to reflect the current state of the hardware. This constituent is only used for testing.
Sparc segfaulted on code like this:
unsigned short sa[4];
unsigned int *p;
p = (unsigned int *)&sa[1];
*p = 0x12345678; // seg fault here
|
While x86 and powerpc never had problems with code like this it was never a good thing to do -- now fixed.
DUTIL is a new utility package that provides some simple wrappers around DAB and DEM functions to give some higher level functionality. For example, this release includes "plumbing" functions to power on the LAT and configure the EBM and CRU using three functions that take a LIOX handle and a mask as arguments.
Two other functions are provided by this release to obtain and print the hardware version numbers of the GEM, EBM, AEM and CRU, and another function that supplies the event contribution destination address to be use in the GEM configurations.
As part of the general trend towards formalising teststand startup using functions rather than VxWorks scripts, the LCB startup routines from Curt's LCB/ptd directory have been moved here and a configuration structure has been added to allow the caller to request the LCB uses the redundant C/R path (for example).
This version includes the SIU switchOn and switchOff commands for powering on the PDU and GASU, have also moved the vxw startup scripts here from OCS.
The startup scripts have been modified to make use of the lcb startup routines in libstart, as well as the configEBM and configCRU routines (the plumbing software).
There have been modifications to the power-on routines; a delay has been introduced after power-on is requested, but before any attempt is made to configure the target node.
There are also new functions (LCB_promote and LCB_demote) that allow the manipulation of the LCB commander line.
EVUT was updated to reflect the new LCB event handler signature detailed above. Also the AEM event decoder was updated to reflect the current state of the hardware.
The LCB event handler for LATTE was updated to reflect the new LCB event handler signature detailed above. Additionally event A/B select and event pause features were added to the LCB version of GGLT
In a test stand without a GASU (no event builder) the GGLT event handler performs some functions normally performed by the real EBM. The handler calculates the single event contribution size from the overall event size and stores the result in the event contribution header. The handler then passes the event to the event handler registered by the Online Event Server (OES) for further processing.
For instance in a single tower test stand the GGLT event handler scribbles the event contribution size in the contribution header, something the real EBM would normally do.
In a test stand with an EBM the contribution header fix-up is no longer required. The events have multiple contributions each with a header filled in by the EBM.
A function was added to GGLT to allow a VxWorks startup script to specify whether the event contribution header fix-up should be performed or not.