This is a major update to the TMS system and software.
The underlying system for the TMS Server has been updated to the 64bit CentOS-7.
The TMS cPCI controller module operating system has been updated to with with CentOS-7. This includes its own port of the Linux kernel for 32bit operation and updated busybox system and core application shared libraries from CentOS-7.
The TMS software has be updated to use the latest Beam libraries and build, in 32bit mode, on the 64bit CentOS-7 system.
The TMS configuration scripts have been updated for CentOS-7.
The TMS software RPM packages have been split further into: tms, tms-server, tms-clients, tms-mcsys, tms-fpga and tms-doc. This allows the TMS client software to be easily installed on separate CentOS-7 systems.
Binary TMS BOAP API compatibility with the old system has been retained, so CERN’s LynxOS clients should not need to be updated.
The old 2.0.5 TMS release had a software issue so that separate state tables could not be used on a per ring basis. This has been fixed. The system now allows state tables to be defined for a particular ring and/or channel as well as generic state tables for any ring and/or channel.
The document: TmsMaintenance has been updated to describe the installation process.
This is a pusdo release. It contains changes to the software made by CERN.
Changes around in eventsToPeriods() to fix 2nd INJ JMB - 2014-12-05
Minor fixes to Pupe code to handle events and periods.
Major update for new BoosterTMS system. The new software supports the original PS TMS system with 1 ring and the Booster TMS system with 4 rings.
The TMS Server's underlying Linux system has been updated to Centos 6.3.
The TMS modules mcsys system has been updated to be based on the same package versions as Centos 6.3.
The Booster PS machine has 4 rings. The layout of the cabling for this results in each TMS rack module (6 PUPE's) servicing the 4 rings rather than having one TMS rack module per ring. The systems Software and Firmware has been modified to support this topology. The changes are:
The TMS server host system can now run multiple TmsServer processes, one per ring. The TmsServer process now has an additional "-c <configFile>" command line argument so that each TmsServer process has its own configuration file. The convention is to name these /etc/tmsServer1.conf, /etc/tmsServer2.conf etc. This configuration file provides information on the ring and the list of PUPE channels that are part of this ring.
The TmsServer configuration file now has a "ring" parameter to define the ring it operates on. This should be a value in the range 1-4. For a single ring system this should be set to 1.
The TmsServer configuration file now has a "master" parameter. If this is set to 1 this server is deemed to be a master TmsServer process. A master TmsServer process distributes the State Table information to all of the TmsPuServer processes running in the TMS rack modules. It also sends the setNextCycle command to all of the TmsPuServer processes when this software signal is received. State tables should only be modified and updated on the master TmsServer.
The BOAP object names used to access the TmsServer's API's now have the ring number appended to them This allows a client process to connect to the appropriate server for the ring in question.
The state table files now have an additional "ring" parameter defining which ring the state table is for. This works in a similar manner to the channel number. If the ring parameter is 0 then the state table is deemed suitable for all rings. If this parameter is one of the values in the range 1-4, then the state table is deemed to be just for that ring. It is possible to have a state table for all rings (ring parameter set to 0) and then override this with another state table for a particular ring. To help support this the state table file naming convention has been changed to: <CycleType>_<ring>_<channel>.spt.
The state tables now have a "name" parameter so that state tables for different rings or channels can have a unique name. This is useful for debugging.
The TmsControlGui now has a "-r <ring>" command line parameter so it can attach itself to the appropriate ring's server. The ring server's host and ring number are shown in the windows title.
The TmsControl program now has a "--ring <ring>" command line parameter so it can attach itself to the appropriate ring's server.
Added support for automatic shutting off of the PUPE FPGA's if the temperature is too high. The tmsPuServer.conf file defines two maximum temperature values: TempInternalMax and TempFpgaMax. Every 10 seconds the internal and FPGA temperatures of each PUPE is compared with these. If the temperatures are exceeded the system will shutdown the PUPE (clears the FPGA) and marks the PUPE with an error. This error: "Temperature Fpga to high: FPGA shutdown" will be returned on all requests. A complete TMS restart is needed to clear this condition.
Fixed problem where local 10MHz clock was not being used in simulation mode on PUPE's other than the master PUPE.
The TmsServer's delControlInfo() API function no longer deletes the State files from disk. Thus when a TmsServer is re-initialised or restarted it will re-load any State tables that were deleted from the TMS server's internal cache.
Modified the FPGA state to period algorithm based on the new FPGA code. This now allows multiple injections, delay states and state loops.
Modified the TmsControlGui's Cycle Params editor to edit states rather than periods. This now works similarly to CERN's spt program.
The State tables have the additional fields of "name" and "ring".
The content of the settings fields has been modified. This now contains the state num and state bit fields. Also the loHarmonic and loPhase have been renamed lo1Harmonic and lo1Phase. lo2Harmonic and lo2Phase have been added. The parameters useLoFref and acquireData have been removed. Note the state bitfield is for information only. The contents of the stateTable's state field will be used when loading state tables.
State table editing software may need to be modified to support these.
When the PUPE channes's state machine enters the error state, this should be reported by interrupt. This is disabled in the current software due to issues in the FPGA firmware.
The Tms-fpga package has been updated to version 1.3.0. The FPGA firmware changes include:
Includes all of CERN's changes since version 1.2.4.
The CycleInformation table now has the previous and next state numbers included.
The DELAY_EVENT now has a programable period in FREF units.
The DELAY_EVENT should now function correctly.
The CycleTiming table now has the final 1ms time included.
The TMS BOAP API has been updated to support the changes, but the standard client access portion is unchanged except for the requirement to add the ring number to the BOAP service name when connecting. As the API has been updated a re-compile of the clients is also required.
Some minor modifications by CERN.
Modified Gui.cpp to have the window banner show on which machine the program is running.
Modified PupeDiagnosticsWin.h and PupeDiagnosticsWin.cpp to add controls for state-dependent triggers. This also requires some FPGA firmware changes.
Minor changes release.
TmsControlGui: CERN: Added the host name to the window banner.
TmsServer: CERN: Disabled deletion of *.spt files.
TmsServer: CERN: Increased maximum number of orbits to 1500000.
TmsPuServer: CERN: Increased maximum number of orbits to 1500000.
TmsPuServer: CERN: Removed the sign change and offset from frefPhaseDelay.
Minor bug fix release.
Fixed an unsigned integer overflow in the TmsCycleParam.cc code when reading state files.
Minor bug fix release.
Added better argument checking on getData() calls.
Fixed a small bug in the InfoTable read.
Minor bug fix release.
Modified the software to support the case where the CycleInfoTable entry for the CYCLE_START event is not for 0ms after CYCLE_START. The software now searches for a timing table entry with a time of 1ms which will always be present. It uses this the timing table address before this one in its timing calculations.
As the system may not have a valid timing table entry for 0, it also will not have entries in the data averaging tables for 0ms after CYCLE_START. The system now returns an error if the user requests averaged data starting from a time offset of 0 from CYCLE_START.
Minor bug fix release.
Fixed a bug where the Diagnostics Capture system was returning the data on the trigger event rather than after the data had been captured. This resulted in incorect data if the sample clock was set to a low value.
Added ability to delete State/Phase table control information in the tmsControlGui program.
Fixed bug where the StartTime was not working in diagnostics capture.
Fixed a bug where it was not possible to change the CycleType when setNextCycle simulation mode was enabled.
Note the API has been updated to version 8 with this release and so all client programs will need recompiling with the latest TMS API library.
The Tms-fpga-1.2.4 package has been updated. The FPGA firmware changes include:
Now disables the Ethernet PHY's to reduce ADC 25MHz noise.
Added a new error message "NumValues to small for request" when the DataInfo.numValues parameter has been set to small for the request.
Changed default internal communications timeout to 10 seconds so that the CaptureDiagnostics can take up to 8 seconds to respond.
Fixed a BOAP error where the wrong error message was occassionaly rreturned in the case of a timeout.
We have implemented a Watchdog reset timer on the Module Controllers. There is a "Watchdog" parameter in tmsPuServer.conf that sets the Watchdog timeout in seconds. 0 means turn off the Watchdog timer. If the tmsPuServer process is killed with CTRL-C (SIG_INT) then the Watchdog timer is stopped, otherwise it continues and will reset the module controller. There is also a program tmsWatchdog that will operate the Watchdog.This is useful if programs other than tmsPuServer are run.
Fixed a bug where the PUPE FPGA was not always initialised correctly. This could result in Test SDRAM write errors and also hard lockups of the Module Controller.
Modified the TmsPuServer to wait for a cycles data rather than returning an error if the data has not yet arrived. This is to stop error returns when using simulated timing where the timing between modules can be slightly adrift.
Fixed a bug where reading the mean values from very near the end of the cycle period would result in a DMA error message being returned.
Modified the data fetch system to fetch data from the start of the next FREF period just after the CAL_START, INJECTION and HCHANGE events. Previously the system would return data from the next millisecond period.
The TmsPuServer program would occassionly crash when a getStatus call was made during a setNextCycle call. This has been fixed.
The internal communications timeout as been lowered to 2 seconds. External timouts can be set by using the setTimeout() call on the BOAP client communications objects (TmsProcess and TmsControl).
The getData() call now sets returned parameters to 0 in the event of an error being returned.
Added the ability to set the TMS system into simulation mode using a single API call, setSimulation and added a getSimulation call to get the simulation status.
Changed the name of the limitData parameter in the DataInfo class to beyondData. The operation has been changed so that setting this parameter to 0, the default, limits the data to the period required.
Changed the name of the captureTestData() function to captureDiagnostics().
The Tms-fpga package has been updated to 1.2.3. The FPGA firmware changes include:
The FPGA now stores the DataTable pointer in the Cycle Information table.
The CAL_START event is delayed until the next FREF period as per the INJECTION and HCHANGE events.
Added support for second System Controller on live system.
Fixed Cycle Parameter generation system to support multiple injection events.
The Tms-fpga 1.2.1 package has been updated. The FPGA firmware changes include:
The FPGA now loads the PLL_FREQUENCY on CYCLE_START as well as after the PLL_FREQDELAY.
Adds the ability to view the raw State/Phase table's generated in the TmsControlGui program.
Added tmsBackup utility
Fixed a few bugs in the state table generation system.
Changed the phase orientation in the phase tables so that a +ve phase value generates a lag in the waveform.
Increased the bit width diagnostics Post Trigger delay parameter to 32bits.
The FPGA firmware changes include:
Increased the bit width diagnostics Post Trigger delay parameter to 32bits.
Fixed a bug where SDRAM data writes could get currupted when a large amount of data was being read from the system.
This is a new release with improvements following the full system installation.
The Cycle Parameter information has been updated with the additional pllCycleStartFrequency field. This defines the PLL's frequency which is loaded on CYCLE_START. This setting is entended to set the initial PLL frequency for a calibration period.
The Cycle Parameter information has been updated with the bunchMask field. This bitmap defines in which RF bucket's the bunches to be captured lie. bit 0 of this bit mask defines bucket 1 etc.
The orientation of the bunchMask, Mean0Mask and Mean1Mask have been reversed so that bucket 1 is bit 0.
The system can now handle multiple injection events. The cycle periods are now named CyclePeriodEvent* rather than CyclePeriodHarmonic to reflect this.
The system now has an improved BunchMean system. This calculates the mean of up to 24 individual bunches during data capture as well as the overal mean for all bunches. The additional DataInfo function setting of DataFunctionMean returns data from this system. The top 2MBytes of each channels SDRAM is used for the data storage of the mean values.
The BunchMean system now calculates the time for each sample and returns a standard DataValue object with a time field instread of a DataValueMean object that had a numSamples field.
The TmsControlGui application has been modified to handle the above changes.
This is the first release of the TMS system to support a complete, fully populated, system. There has been a number of enhancements and bug fixes. The main changes are listed below:
Improvements have been made to the BEAM BOAP library to reduce the likelyhood of denial of service attacks. The BEAM BOAP library is used by the TmsLib API code. THE BOAP packets now contain a magic number and the packet length is checked.
The BunchMean function now performs the averaging function on the data received from the FPGA and scales the results as necessary.
The TmsServer's getData call now supports a channel number of 0 to return data from all of the channels.
The return Data structure now returns an error for each of the channels for which data is returned.
A number of improvements have been made to the simulated timing system to support multiple modules.
Added the new getCycleInformation API function to get information on a processing cycle.
Added DataValueMean return data type.
Added PUPE Physical slot location system.
Improved error messages with module and PUPE numbers.
Improved FPGA load speed.
Improved system test function to return status even when Ok.
Improved the tmsStateGen program
A number of improvements to the tmsControlGui program including the ability to view the Sigma, DeltaX and DeltaY inputs in detail and with an FFT power spectrum.
Added the tmsTestData program to set simulation mode and test fetching data from all channels.
Various minor bugs have been fixed.
The FPGA firmware changes include:
A bug that caused memory reads from the SDRAM to fail occassionaly has been fixed.
The Bunch Mean system now integrates the samples over each millisecond period and scales the result using a factor dependent on the number of samples integrated. The number of samples integrated is output in the data samples.
The TmsLib code has been modified by D.Korchagin of CERN to support the PPC based LynxOS system.
The TMS system now supports physical slot addressing for the PUPE boards allowing individual boards to be taken out of service while keeping the overal configuration unchanged.
The PUPE boards now support the ability to use the free running VXCO or have the VXCO locked to the 10MHz SYSCLOCK input. The system will report in its status report if the VXCO is locked to the reference and also report how many times the lock has been lost. The lock status is checked once per second.
Various minor bugs have been fixed.
The FPGA firmware changes include:
A bug that caused memory writes to the SDRAM to fail occassionaly has been fixed.
The usage of the digital timing master bus sockets on the PUPE board have been re-arranged. This requires the connections to the digital timing front-panel to be re-orientated as shown in the latest TmsHardware manual.
The FPGA firmware now supports all 3 PUPE channels.
The system now will limit the number of samples of data returned such that all of the data is from within the specified period.
The Test functionalility has been improved.
A bug where the orbit offset used in getData calls has been fixed.
The diagnostics source array is now 4096 samples instread of 1024 samples.
The TmsServer.conf file now has the "AdcSysclkSync" parameter to globally enable the synchronisation of the ADC clock to the 10MHz SYSCLK. Note that the pre-series PUPE boards do not support this feature.
Some improvemnets have been made to the BOAP API high level to better separate the control and user access functions into the seperate TmsControl and TmsProcess objects.
Task priorities have been added to improve the setNextCycle() performance. This includes BOAP API functions that can be used to raise the priority of network interface and the thread implementing this call.
The lower level BOAP API system has been improved to increase data transfer performance.
Fixed HCHANGE operation.
The FPGA firmware changes include:
The diagnostics source array is now 4096 samples instread of 1024 samples.
Added an EVENT_DELAYED state to the state table system to allow a delayed state transition.
Removed HCHANGE event delay.
This release adds the ability to edit the CycleParams data in the tmsControlGui application.
The TMS API has been updated to better support the editing of the CycleParams data at a high level.
The TmsStateGen program's State/Phase table generation code has been re-written and simplified to be in-line with the tmsControlGui's CycleParam editing abilities. The State/Phase table generation code is in the TMS library so that it can be shared between the tmsStateGen and tmsControlGui programs.
Some changes to the diagnostics output in source 3 were made. The Sigma timing source display is now taken from after the BLR algorithm. This allows the timing between the Gate and incoming Sigma data to be more accurately determined.
The FPGA firmware changes include:
The FPGA firmware is now compiled using the Xilinx XST tool.
The FPGA firmware supports the ability to disable the BLR algorithm.
Some changes to the diagnostics output in source 3 were made.
There may be a problem in the individual bunch selection login in this release.
This release fixes a number of issues with the first release.
The
software changes include:
Modified TMS API to allow reading the Cycle Parameter iinformation from the server.
Modified TMS sources to support Redhat 7.3 and PPC based Linux systems.
A couple of bug fixes to the tmsServer process and tmsPuServer processes that would result in lock-ups when the init() call was used in some cases.
Major improvements to the tmsControlGui application.
Added tmsRestart and improved some of the utility applications to support the manual installation of software/firmware packages.
The FPGA firmware fixes include:
Fixed ADC sample timing to correct data glitch errors.
Fixed itermittant register write problem causing diagnostics capture to fail sometimes and the setting to the PLL phase offset to be incorrect sometimes.
The internal SDRAM test data source system has been fixed.
This is the first external release of the TMS software to CERN as part of the pre-series system.