1. Current Release – Moscow

Release Name:Moscow, Russia
Release Date:April 7, 2004
Download :Moscow_IT.tar.gz

Table 1. Release Info

1.1. Package Versions

The software release is now available as a single gzipped TAR file. See Section 2.4 for a description of the archive contents.

PackageVersionSourceBinaryDocs
VXWN/Anonebinnone
CMXV2-0-8nonebinnone
PBSV2-2-0srcbindoc
PBIV0-0-4srcbindoc
MSGV1-1-4srcbindoc
LCBV4-0-1srcbindoc
GNATV1-0-23srcbingnat, xbrd
DEMV2-0-8srcbindoc
DABV4-1-4srcbindoc
GGLTV1-4-9srcbindoc
EVUTV1-2-7srcbindoc
CTSTV0-0-20srcbinnone
DUTILV0-2-4srcbindoc

Table 2. Package Versions

1.2. New in LCB

1.2.1. New Function Signature for LCB Event Handling Callback

Changed slightly the calling signature for event handling callbacks from

typedef unsigned int (*LCB_evt_cb)(LCB_cb_prm parm, LCB_evt_xfer_status status, LCB_msg *msg);

to

typedef unsigned int (*LCB_evt_cb)(LCB_cb_prm parm, LCB_evtDesc ed, LCB_msg *msg);

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.

1.2.2. cmdPath Enable

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.

1.2.3. Unused event data memory area

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 

          

1.2.4. Event descriptor length

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.

1.2.5. LIOX Interface

All LIOX functions now accept logical LATp addresses, instead of physical addresses. LIOX maintains a mapping table between logical and physical addresses.

1.3. New in DAB

1.4. New in DEM

1.4.1. LATTE Error Codes

For the LATTE libraries (gtem_lcb and gaem_lcb) mapped new MSG errors codes to the legacy error codes.

1.4.2. AEM Registers

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.

1.4.3. Fixed unaligned memory access for Sparc

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.

1.4.4. Removed dependencies on debugging code

A small dependency on a piece of debug code had crept in. Now gone.

1.4.5. Validate Function Inputs

Added validation of function input parameters, i.e. checking that the gtem/gaem handles are non-NULL before trying to use them. This checking was previously done in the VME LAT COMM I/O Board of GTEM/GAEM, but had not made it into the LCB version.

1.5. New in DUTIL

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.

1.6. New in EVUT

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.

1.7. New in GGLT

1.7.1. Test stand event handler updates

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.

1.8. New in GNAT

Added library libgnat_null.o, a NOP library which has the same interfaces as libgnat.o and libxbrd.o. This library will be used on GASU/LATTE test stands that do not have an XBRD.