mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-05-21 20:00:42 +02:00
570 lines
20 KiB
Plaintext
570 lines
20 KiB
Plaintext
SLS Detector Package Minor Release 7.0.0.rc1 released on xx.11.2021
|
|
===================================================================
|
|
|
|
This document describes the differences between v7.0.0.rc1 and v6.1.2
|
|
|
|
|
|
|
|
CONTENTS
|
|
--------
|
|
1. New or Changed Features
|
|
2. Resolved Issues
|
|
3. Firmware Requirements
|
|
4. Kernel Requirements
|
|
5. Download, Documentation & Support
|
|
|
|
|
|
Breaking API Resolved Issues
|
|
============================
|
|
|
|
Client
|
|
------
|
|
|
|
. [Eiger] Number of UDP interfaces
|
|
Command line: numinterfaces, API: getNumberofUDPInterfaces
|
|
This command now reflects the actual number of udp interfaces for Eiger,
|
|
which is 2.
|
|
|
|
. [Moench] Patsetbit and patsetmask
|
|
Command line: patsetbit API: getPatternBitMask/ setPatternBitMask
|
|
Command line: patmask API: getPatternMask/ setPatternMask
|
|
|
|
Exchanging the help and masks for patsetbit and patsetmask in the detector
|
|
server, especially in loading settings.
|
|
|
|
|
|
. [Eiger] Datastream only for 10GbE
|
|
Command line: datastream, API: getDataStream/ setDataStream
|
|
|
|
This command to enable/ disable data stream from left or right port
|
|
is now allowed only for 10GbE. Previously, it incorrectly allowed to do so.
|
|
|
|
|
|
. Non-blocking start
|
|
Allow non-blocking start at modular level again.
|
|
|
|
|
|
. [Gotthard][Gotthard2] Num modules
|
|
Only 2 modules allowed maximum in a detector shared memory.
|
|
|
|
. CopyDetectorServer
|
|
|
|
Python
|
|
-------
|
|
|
|
. Python sub-microsecond resolution
|
|
Reading back sub-microsecond exposure times from the Python API fixed by
|
|
addig Python datetime supports only micro seconds as lowest unit.
|
|
|
|
This is fixed by introducing a new C++ type (DurationWrapper), which
|
|
holds number of nanoseconds as a uint64_t (only in python bindings) and
|
|
custom typecaster to convert to and from std::chrono::nanoseconds.
|
|
|
|
A get using API now returns in DurationWrapper, instead of datetime.
|
|
Refer exptime help for examples.
|
|
|
|
|
|
Detector Server
|
|
---------------
|
|
|
|
. Deprecated CopyDetectorServer
|
|
Command line: copydetectorserver, API: copydetectorserver
|
|
Removed. Use updatedetectorserver
|
|
|
|
Simulator
|
|
---------
|
|
|
|
. [Eiger] Only one executable
|
|
Only one executable for an Eiger virtual server. Master and top mode
|
|
can be provided via command line or config file to the detector server,
|
|
as well as via the client. See in Other New Features for more details.
|
|
|
|
One can start a module using:
|
|
eigerDetectorServer_virtual # reads default config file (top master)
|
|
eigerDetectorServer_virtual -i #ignores the config file (bottom slave)
|
|
|
|
|
|
Receiver
|
|
--------
|
|
|
|
. Arping for 10GbE
|
|
Command line: rx_arping API: getRxArping/ setRxArping
|
|
Starts a thread in the receiver to arping the interface it is listening
|
|
to in 10GbE mode every 60 s.
|
|
Changes NUM_RX_THREAD_IDS (sls_detector_defs.h) from 8 to 9.
|
|
|
|
. File write
|
|
File write is disabled by default.
|
|
|
|
. Missing packets
|
|
Command line: rx_missingpackets, API: getNumMissingPackets
|
|
This now returns a signed 64 bit instead of unsigned. The negative polarity
|
|
depicts extra packets instead of missing packets and also takes care of
|
|
disabled ports.
|
|
|
|
. Frames caught and frame index
|
|
Command line rx_framescaught, rx_frameindex, API: getFramesCaught/ getRxCurrentFrameIndex
|
|
They now return a vector for each port when there are 2 udp interfaces
|
|
in the receiver.
|
|
|
|
. Geometry metadata
|
|
Added geometry (number of modules in each direction) to metadata in file.
|
|
|
|
. HDF5 and Binary writer version
|
|
Changed from 6.3 to 6.4
|
|
|
|
|
|
. Master file format to json
|
|
The format has been changed from ASCII to json.
|
|
|
|
. Master file created at end of acquisition
|
|
The file is now written at the end of acquisition. So if any metadata
|
|
is changed during an acquisition, it will reflect the last value.
|
|
|
|
|
|
Callback
|
|
--------
|
|
|
|
. Datatype of Metadata [registerCallBackRawDataReady, registerCallBackRawDataModifyReady]
|
|
Datatype changed from char* to sls_receiver_header*.
|
|
|
|
|
|
. Datatype of Size [registerCallBackRawDataReady, registerCallBackRawDataModifyReady]
|
|
Datatype changed from uint32_t to size_t
|
|
|
|
. Datatype of file name and file path [registerCallBackStartAcquisition]
|
|
Datatype changed from string to const string reference.
|
|
|
|
. Incorrect image size [registerCallBackStartAcquisition]
|
|
Fixed. It used to give +120 bytes.
|
|
|
|
|
|
|
|
|
|
1. Other New or Changed Features
|
|
==========================
|
|
|
|
Client
|
|
------
|
|
|
|
. [Moench][Ctb] Starting frame number
|
|
Command line: nextframenumber, API: getNextFrameNumber/ setNextFrameNumber
|
|
Added and default set up on detector server start up.
|
|
|
|
. [Eiger] Vtr
|
|
Allow Vtrim to be interpolated for settings.
|
|
|
|
|
|
. [Eiger][Gotthard][Gotthard2][Mythen3] Master
|
|
Command line: master, API: getMaster/ setMaster
|
|
All of them can get master mode from the client.
|
|
|
|
Only Eiger can set a half module to master or slave from the client.
|
|
The others can set this only in a virtual server.
|
|
|
|
Setting up on the detector or virtual server:-
|
|
[Eiger][Gotthard2][Mythen3][Gotthard]
|
|
Using command line 'master' or 'm' with argument (slave=0, master=1)
|
|
[Eiger][Gotthard]
|
|
Using config file with 'master' with argument (slave=0, master=1)
|
|
|
|
. [Eiger] Top
|
|
Command line: top, API: getTop/ setTop
|
|
Sets the half module to top or bottom from the client.
|
|
|
|
This can also be set up on the detector server:
|
|
Using command line 'top' or 't' with argument (top=0, bottom=1)
|
|
Using config file with 'top' with argument (top=0, bottom=1)
|
|
|
|
|
|
. [Ctb] DAC names
|
|
Command line: daclist, API: getDacNames/ setDacNames
|
|
Can set and get dac names in the dac list now.
|
|
|
|
|
|
. [Mythen3] Polarity, interpolation, pump probe, analog pulsing, digital pulsing
|
|
Command line: polarity, interpolation, pumpprobe, apulse, dpulse
|
|
API: getPolarity/ setPolarity, getInterpolation/ setInterpolation,
|
|
getPumpProbe/ setPumpProbe, getAnalogPulsing/ setAnalogPulsing,
|
|
getDigitalPulsing/ setDigitalPulsing
|
|
|
|
Added these commands. Enabling interpolation will also enable all counters.
|
|
|
|
|
|
Compilation
|
|
-----------
|
|
|
|
. Option to provide a custom location to look for ZeroMQ, if not found
|
|
using FindZeroMQ.cmake
|
|
-DZeroMQ_HINT=/usr/lib64 to use the system installed zmq
|
|
|
|
|
|
|
|
Detector Server
|
|
---------------
|
|
|
|
. [Moench] ADC9257 Vref
|
|
ADC Vref voltage modified from 1.33V to 2V
|
|
|
|
|
|
. Command line arguments
|
|
They have precedence over config files. The config files can also be
|
|
ignored by an argument from the command line, '--ignore-config' or '-i'.
|
|
|
|
. [Jungfrau][Moench][Ctb] Additional programming checks
|
|
Also checks if the drive to write to is a special file or a normal
|
|
file. If its a normal file, it throws asking to redo the command with a
|
|
'--please-delete' argument to delete the normal file and create the device
|
|
drive and restart FPGA programming.
|
|
|
|
More readable error message insetad of "programfpga not implemented for
|
|
this detector'. This happens when 'hostname' command fails due to
|
|
server-firmware/client compatibility and the detector type becomes
|
|
'GENERIC'. Fixed to suggest if 'hostname' executed properly.
|
|
|
|
. [Jungfrau][Moench][Ctb] Additional server update process
|
|
Removes old server binary or target of linked file when updating
|
|
detector server for blackfin detectors as there is less space on blackfin.
|
|
|
|
Clearing up absolute and respawn path (removing double '/')
|
|
|
|
Raise error if server name to be copied is the same as final soft link name.
|
|
|
|
|
|
|
|
Simulator
|
|
---------
|
|
|
|
. [Eiger][Junfrau][Gotthard2][Mythen3] Module Id
|
|
Added into udp header
|
|
|
|
. Minimum Configuration
|
|
One can setup with just:
|
|
hostname localhost
|
|
rx_hostname localhost
|
|
udp_dstip auto
|
|
|
|
. [Eiger]
|
|
|
|
|
|
|
|
Callback
|
|
--------
|
|
|
|
. [Gotthard2] 25um Image reconstruction for 2 modules
|
|
First module (master) interleaves with second modules(slave). First channel
|
|
of master is first channel of detector.
|
|
|
|
Requires firmware update to reverse channels of slaves.
|
|
|
|
|
|
Receiver
|
|
--------
|
|
|
|
. [Gotthard2] 25um image reconstruction in virtual HDF5
|
|
Virtual HDF5 reconstructs complete image by interleaving first module
|
|
(master) with second module (slave). First channel of master is first
|
|
channel of detector.
|
|
|
|
Requires firmware update to reverse channels of slaves.
|
|
|
|
|
|
|
|
2. Other Resolved Issues
|
|
==================
|
|
|
|
|
|
Client
|
|
------
|
|
|
|
. [Ctb] ADC command goes back to control server
|
|
Slow ADCs, slow ADC temperature, get measured current and voltage values
|
|
are requested via the control server again insetad of the stop server
|
|
due to configuration and definitions in the control server.
|
|
|
|
. [Eiger] Incorrect next frame number
|
|
Command line: nextframenumber, API: getNextFrameNumber/ setNextFrameNumber
|
|
Get next frame number for 10g was connected to 1g registers and gave
|
|
incorrect values. Fixed.
|
|
|
|
. [Eiger][Jungfrau][Moench][Ctb] Stop affecting next frame number
|
|
Stopping acquisition sometimes results in different next frame numbers
|
|
for different moduels. Hence, after a stop, if the next frame numbers are
|
|
different, they are all set to their maximum value + 1.
|
|
|
|
. [Mythen3] Incorrect gain caps when setting threshold energy
|
|
Gain caps overwritten with settings enum. Fixed.
|
|
|
|
Detecor Server
|
|
--------------
|
|
|
|
. [Mythne3] Kernel version compatibility test
|
|
Fix added to parse properly the kernel version with CET for corrected
|
|
version compatibility test.
|
|
|
|
. [Mythen3] Server crash for setting vthrehsold
|
|
Fixed.
|
|
|
|
. [Mythen3] Incorrect gaincaps
|
|
Setting threshold energy was overwriting gaincaps with settings enum. Fixed.
|
|
|
|
. [Ctb][Moench] Hostname fail in update mode.
|
|
Fixed
|
|
|
|
. Stop server startup errors
|
|
Stop servers now also check for errors at startup (including version
|
|
compatibility) and like the control server, it will translate to the
|
|
client when connecting to the first time (hostname command).
|
|
|
|
|
|
Receiver
|
|
--------
|
|
|
|
. refactored and fixed minor issues
|
|
Fixed progress also in discard partial packaets mode and deactivated ports.
|
|
Fixed 200% progress.
|
|
|
|
|
|
|
|
. [Eiger] Datastream command order
|
|
The order of commands to set datastream from client mattered previously.
|
|
Datastream had to be set before 10GbE enable. Order does not matter anymore.
|
|
|
|
. Multiple files
|
|
This bug was introduced in v6.0.0, where 1 file was created per frame
|
|
after the first file. Fixed by resetting the number of frames in
|
|
current file when creating a new one.
|
|
|
|
. [Mythen3] Incorrect number of packets calculated or tengiga not set up
|
|
Runnig config second time (with tengiga=0, dr !=32, counters !=0x7)
|
|
calculated incorrect image size expected due to inconsistent copy of
|
|
detector parameters. Fixed
|
|
|
|
|
|
- adding LTO to test and disable them for Debug builds?
|
|
- support external build of python lib
|
|
|
|
|
|
- rx_roi
|
|
- fixed row column indexing (mainly for multi module Jungfrau 2 interfaces )
|
|
- eiger gui row indices not flipped anymore (fix in config)
|
|
- m3 (settings dac check disabled temporarily?)
|
|
- m3 virtual server sends the right pacets now
|
|
- gap pixels in gui enabled by default
|
|
- rxr src files and classes (detectordata, ZmqSocket, helpDacs) added to sls namespace, and macros (namely from logger (logINFO etc)), slsDetectorGui (make_unique in implemtnation requires sls nemspace (points to std otherwise) but not deectorImpl.cpp)
|
|
- blackfin programing made seamless (nCE fixed which helps)
|
|
-save settings file for m3 and eiger
|
|
- m3 threshold changes
|
|
- g2 and m3 clkdiv 2 (system clock) change should affect time settings (g2: exptime, period, delayaftertrigger, burstperiod, m3: exptime, gatedelay, gateperiod, period, delayaftertrigger)
|
|
- g2 system frequency is the same irrespective of timing source
|
|
- (apparently) rxr doesnt get stuck anymore from 6.1.1
|
|
- rxr mem size changed (fifo header size from 8 to 16) due to sls rxr header = 112.. 112+ 16=128 (reduces packet losss especially for g2)
|
|
-udp_srcip and udp_Srcip2: can set to auto (for virtual or 1g data networks)
|
|
- set dataset name for all hdf5 files to "data" only
|
|
- number of storage cells is not updated in teh receiver. done. and also allowing it to be modified in running status
|
|
- refactored memory structure in receiver and listener code (maybe resolves stuck issue, need to check)
|
|
- callback modified to have rx header and not rx header pointer
|
|
- adapted for g2 hdi v2.0. able to set master from server command line, server config file, and client.
|
|
- rx udp socket refactored (maybe resolves getting stuck?)remove check for eiger header and isntead checks for malformed packets for every detector
|
|
- jungfrau sw trigger , blocking trigger
|
|
-help should not create a new object
|
|
- jungfrau master
|
|
- g2 parallel command
|
|
- jungfrau sync
|
|
- m3 bad channels (badchannel file also for g2 extended to include commas and colons, remove duplicates)
|
|
- m3 fix for gain caps to invert where needed when loading from trimbit file (fix for feature might have been added only in developer branch)
|
|
- pat loop and wait address default
|
|
- ctb and moench Fw fixed (to work with pattern commdand) )addreess length
|
|
- setting rx_hostname (or udp_dstip with rx_hostname not none) will always set udp_dstmac. solves problem of chaing udp_dstip and udp_dstmac stays the same
|
|
- jungfrau reset core and usleep removed (fix for 6.1.1 is now fixed in firmware)
|
|
- m3 clock update, m3 clk 4 and 5 cannot be set
|
|
- g2 change clkdivs 2 3 4 to defaults for burst and cw mode.
|
|
- ctb and moench: allowing 1g non blocking acquire to send data
|
|
- m3 and g2 rr
|
|
- m3 and g2 temp
|
|
- gain plot zooming fixed (disabled, acc. to main plot)
|
|
- ctb, moench, jungfrau (pll reset at start fixed, before no defines)
|
|
- pybind built into package, no need to update submodule when previous release had different pybind version
|
|
- adcvpp moved from dac.. and api added (ctb, moench)
|
|
- qt4->qt5
|
|
- in built qt5 6.1.5 because rhel7 is not upto date with qt5, removed findqwt.cmake
|
|
- made a fix in qwt lib (qwt_plot_layout.h) to work with 5.15 and lower versions
|
|
- qt5 forms fixed, qt4 many hard coding forms switched to forms including qtabwidget, scrolls etc, fonts moved to forms
|
|
- docking option enabled by default, removed option to disable docking feature from "Mode"
|
|
- added qVersionResolve utility functions to handle compatibility before and after qt5.12
|
|
- qtplots (ian's code) takes in gain mode enable to set some settings within the class, with proper gain plot ticks
|
|
- ensure gain plots have no zooming of z axis in 2d and y axis in 1d
|
|
- fixed some error messages in server side that were empty for fail in funcs (mostly minor as if this error, major issues)
|
|
- eiger (removed feb reset in stop acquisition as it caused processing bit to randomly not go high (leads to infinite loop waiting for it to go high). This is anyway done at prepare acquisition and set trimbits.
|
|
- left AND right registers monitored for processing bit done
|
|
- febProcessinginprogress returns STATUS_IDLE and not IDLE
|
|
- In feb stop acquisition, if processing bit is running forever, checks for 1 s, then if acq done bit is high, returns ok, else throws
|
|
- feb stop acquisition returns 1 if success and fucntion in list calling it compares properly instead of STATUS_IDLE (no effect, but incorrect logic)
|
|
- chipsignals to trimquad should only monitor right fpga (not both as it will throw)
|
|
- fixed error messages of readregister inconsistent values
|
|
- setmodule and read frame was returning fail without setting error messages (leading to broken tcp connection due to no error message) )
|
|
- gui nios temperature added
|
|
- detector header change (bunchid, reserved, debug, roundRnumber) ->detSpec1 - 4
|
|
-ctb and moench (allowing all clkdivs (totaldiv was a float instead of int))
|
|
- txndelay_ ->txdelay_ (also for python), txdelay = delay for all with step
|
|
- hardwareversion
|
|
- jungfrau connected moduleid to detid_jungfrau.txt on board
|
|
|
|
- dac names for ctb?
|
|
|
|
|
|
|
|
|
|
3. Firmware Requirements
|
|
========================
|
|
|
|
|
|
G2 Firmware update to reverse channels of slaves.
|
|
|
|
|
|
Eiger
|
|
=====
|
|
Compatible version : 08.10.2021 (v29)
|
|
|
|
Jungfrau
|
|
========
|
|
Compatible version : 31.08.2021 (v1.2, PCB v1.0)
|
|
: 08.10.2021 (v2.2, PCB v2.0)
|
|
|
|
Gotthard
|
|
========
|
|
Compatible version : 08.02.2018 (50um and 25um Master)
|
|
: 09.02.2018 (25 um Slave)
|
|
|
|
Mythen3
|
|
=======
|
|
Compatible version : 10.09.2021 (v1.1)
|
|
|
|
Gotthard2
|
|
=========
|
|
Compatible version : 27.05.2021 (v0.1)
|
|
|
|
Moench
|
|
======
|
|
Compatible version : 05.10.2020 (v1.0)
|
|
|
|
Ctb
|
|
===
|
|
Compatible version : 05.10.2020 (v1.0)
|
|
|
|
Detector Upgrade
|
|
================
|
|
The following can be upgraded remotely:
|
|
Eiger via bit files
|
|
Jungfrau via command <.pof>
|
|
Mythen3 via command <.rbf>
|
|
Gotthard2 via command <.rbf>
|
|
Moench via command <.pof>
|
|
Ctb via command <.pof>
|
|
|
|
The following cannot be upgraded remotely:
|
|
Gotthard
|
|
|
|
Instructions available at
|
|
https://slsdetectorgroup.github.io/devdoc/firmware.html
|
|
and
|
|
https://slsdetectorgroup.github.io/devdoc/serverupgrade.html
|
|
|
|
|
|
|
|
4. Kernel Requirements
|
|
======================
|
|
|
|
Blackfin
|
|
========
|
|
Latest version: Fri Oct 29 00:00:00 2021
|
|
|
|
Older ones will work, but might have issues with programming firmware via
|
|
the package.
|
|
|
|
Nios
|
|
====
|
|
Compatible version: Mon May 10 18:00:21 CEST 2021
|
|
|
|
Kernel Upgrade
|
|
==============
|
|
Eiger via bit files
|
|
Others via command
|
|
|
|
Commands: udpatekernel, kernelversion
|
|
Instructions available at
|
|
https://slsdetectorgroup.github.io/devdoc/commandline.html
|
|
https://slsdetectorgroup.github.io/devdoc/detector.html
|
|
https://slsdetectorgroup.github.io/devdoc/pydetector.html
|
|
|
|
|
|
|
|
5. Download, Documentation & Support
|
|
====================================
|
|
|
|
Download
|
|
--------
|
|
|
|
The Source Code:
|
|
https://github.com/slsdetectorgroup/slsDetectorPackage
|
|
|
|
Documentation
|
|
-------------
|
|
|
|
Installation:
|
|
https://slsdetectorgroup.github.io/devdoc/installation.html#
|
|
|
|
Firmware Upgrade:
|
|
https://slsdetectorgroup.github.io/devdoc/firmware.html
|
|
|
|
Detector Server upgrade:
|
|
https://slsdetectorgroup.github.io/devdoc/serverupgrade.html
|
|
|
|
Detector Simulators:
|
|
https://slsdetectorgroup.github.io/devdoc/virtualserver.html
|
|
|
|
Consuming slsDetectorPackage:
|
|
https://slsdetectorgroup.github.io/devdoc/consuming.html
|
|
|
|
API Examples:
|
|
https://github.com/slsdetectorgroup/api-examples
|
|
|
|
Command Line Documentation:
|
|
https://slsdetectorgroup.github.io/devdoc/commandline.html
|
|
|
|
Quick Start Guide:
|
|
https://slsdetectorgroup.github.io/devdoc/quick_start_guide.html
|
|
|
|
C++ API Documentation:
|
|
https://slsdetectorgroup.github.io/devdoc/detector.html
|
|
|
|
C++ API Example:
|
|
https://slsdetectorgroup.github.io/devdoc/examples.html#
|
|
|
|
Python API Documentation:
|
|
https://slsdetectorgroup.github.io/devdoc/pygettingstarted.html
|
|
|
|
Python API Example:
|
|
https://slsdetectorgroup.github.io/devdoc/pyexamples.html
|
|
|
|
Receivers (including custom receiver):
|
|
https://slsdetectorgroup.github.io/devdoc/receivers.html
|
|
https://slsdetectorgroup.github.io/devdoc/slsreceiver.html
|
|
|
|
TroubleShooting:
|
|
https://slsdetectorgroup.github.io/devdoc/troubleshooting.html
|
|
|
|
Further Documentation:
|
|
https://www.psi.ch/en/detectors/documentation
|
|
|
|
Info on Releases:
|
|
https://www.psi.ch/en/detectors/software
|
|
|
|
|
|
Support
|
|
-------
|
|
|
|
dhanya.thattil@psi.ch
|
|
erik.frojdh@psi.ch
|
|
|