Updating ALCT firmware

v1.0. Frank Geurts, 19 May 2005

This note documents how to update the ALCT firmware via the VME interface. At FAST sites and beam tests updates were typically performed by directly hooking up a PC to the ALCT board. At the Slice Test this is not an option since access to the boards is very limited. Therefore, software is used that performs the upload via the TMB allowing to upload via the VME interface.

Firmware Upload path

As mentioned in the introduction, the firmware upload is performed via the TMB which is accessed through its VME access. From the TMB the JTAG data is then sent to the ALCT using the skew-clear signal cables that run between the two.

The path looks like this: [Linux Box] --ethernet--> [Dynatem] --VME(backplane)--> [TMB] --JTAG(skewclear)--> [ALCT]


The software that is currently used to perform the firmware upload is entirely based on the PeripheralCrate Control Library. This is the same library that is used for configuration and slow-control access. It is XDAQ-compliant and can be found in the TriDAS/emu repository. Consult the EMu Slice Test web pages for more information

The relevant class/member for this operation is ALCTController::SVFload(int* jtagChainNumber, char* fileName, int* debugLevel). The jtagChainNumber should be 3 for ALCT firmware upload. The fileName has to be a SVF file. Other file formats are not supported.

In the repository a stand-alone executable called loadALCT.cpp initialized a single TMB and ALCT board and uploads the firmware using the ::SVFload() member.


For the Slice Test we keep a simple repository for all the firmware that is involved. Links to it can be found on the EMu Slice Test web pages. To avoid any file format and/or conversion issues all firmware files have to be in the SVF format.

At the moment (Spring Slice Test) only two types of chambers are in use: the ME{2,3}/1 and ME{2,3}/2 chambers. Both types have different ALCTs and thus different firmware files associated with it. To accomodate the cosmic trigger we also have "mirrored" ALCT firmware which we apply on the ME3 station chambers. This firmware was first tested at the UF Cosmic Stand before being uploaded to the chambers at CERN.

Upload Procedure

Unfortunately, the initialization procedure of the standalone executable is still not working sufficiently. Therefore, a seperate program is used which explcitily callsTestBeamController::configure() . The two options for that are CrateScan.cpp and testbeamcontroller.cpp. The latter should be interrupted right after the configuration phase. The former, CrateScan.exe does not need to be interrupt and exits leaving the crate configured.

After this TMB and ALCT are in a configured state, the loadALCT.exe can be run. At the moment the software can not be configured from the commandline and any changes, therefore, need to be hardcoded. Not nice, but this is only temporarily. Be careful to adjust not only the TMB slot but also change the type of ALCT and the filename that points to the approriate firmware type.


The procedure described in this document is only for temporary usage. The stand-alone executable should be able to execute the proper configuration and identify what firmware should go in. Make sure to check the EMu Slice Test web pages for newer versions of this document.

Last modified: Thu May 19 13:23:03 WEDT 2005