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.
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.
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.