[subexp-daq] How to start a DAQ system after NURDLIB, TRLOII, DRASI, etc. were updated

Hans Toshihide Törnqvist hans.tornqvist at chalmers.se
Thu Jan 18 13:28:36 CET 2024


Dear Günter,

It looks like either the Vetar driver failed, or the fw/driver is old 
and nurdlib expects a file that didn't exist a while back. If it's the 
latter I can add a switch to ignore this file, it's not critical for 
readout and is used to enter a faster readout mode.

Which version of nurdlib is this? The files and line numbers don't match 
with what I see in the source code, and the last time gsi_etherbone.c 
changed was early last year.

The message "Could not open so-and-so" should be for the device, e.g. 
/dev/pcie_wb0. This is used for the readout.

The dactl file should fail with "Failed dactl fopen".

To summarise, I would suggest to make sure that the correct nurdlib and 
r3bfuser are executed by the DAQ scripts. Meanwhile I will prepare a 
switch to ignore the dactl file which could anyhow be useful for old 
configurations, and to clean up the Etherbone error messages.

Best regards,
Hans

On 2024-01-18 11:29, Weber, Guenter Dr. wrote:
> Dear friends,
> 
> 
> I now started the DAQ and it looks like there is a problem with the 
> VETAR2 module. Attached please find the output once the DAQ is started 
> on the RIO4.
> 
> 
> Here ist the error message:
> 
> 
> 11: a:1: .Slow module[1]=GSI_VETAR. (crate/crate.c:866)
> 11: a:1: .Gsi Etherbone init_slow { 
> (module/gsi_etherbone/gsi_etherbone.c:110)
> 5: a:1: ..Gsi Etherbone Could not open /sys/class/vetar/vetar0/dactl: No 
> such file or directory.
>   (module/gsi_etherbone/gsi_etherbone.c:120)
> 5: a:1: ..Calling exit(EXIT_FAILURE)... 
> (module/gsi_etherbone/gsi_etherbone.c:120)
> 
> How to proceed?
> 
> 
> 
> Many thanks and best greetings
> Günter
> 
> 
> 
> 
> ------------------------------------------------------------------------
> *Von:* subexp-daq <subexp-daq-bounces at lists.chalmers.se> im Auftrag von 
> Håkan T Johansson <f96hajo at chalmers.se>
> *Gesendet:* Dienstag, 16. Januar 2024 19:20:54
> *An:* Discuss use of Nurdlib, TRLO II, drasi and UCESB.
> *Betreff:* Re: [subexp-daq] How to start a DAQ system after NURDLIB, 
> TRLOII, DRASI, etc. were updated
> 
> On Tue, 16 Jan 2024, Weber, Guenter Dr. wrote:
> 
>> 
>> Dear friends,
>> 
>> 
>> I am just trying to figure out how all the various scripts/commands work
>> together for setting up our DAQ system. Maybe, you can help to clearify some
>> things.
>> 
>> 
>> 
>> - master.bash
> 
> This would be intended to run on the readout board (RIO).  The other
> scripts below is for the PC.
> 
>> 
>> source ../env/env.sh
>> ./trloii_setup.sh
>> # gdb --args \
>> ../r3bfuser/build_cc_ppc-linux_4.2.2_debug_drasi/m_read_meb.drasi \
>>         --label=MCAL1 \
>>         --triva=master,fctime=10,ctime=50 \
>>         --log-no-rate-limit \
>>         --server=drasi,dest=lyserv \
>>         --buf=size=400Mi \
>>         --max-ev-size=0x1000000 \
>>         --subev=crate=1,type=20,subtype=2,control=9,procid=1 \
>>         --eb=lyserv \
>>         "$@"
>> 
>> In the first line some environment variables are set. The second line tells
>> the VULOM4 how to operate (i. e. selection from modes of operation defined
>> in vulom.trlo). Then DRASI is started with a bunch of parameters. Is there
>> somewhere an explanation of the purpose of all these settings?
> 
> The drasi command line options should be described here:
> 
> http://fy.chalmers.se/~f96hajo/drasi/doc/drasi_cmdline.html 
> <http://fy.chalmers.se/~f96hajo/drasi/doc/drasi_cmdline.html>
> 
> (Note: 'lyserv' is the name of your PC, at least as seen from the RIO.)
> 
> The TRLO II setup file (vulom.trlo) is worse in terms of documentation.
> The format as such is hopefully rather straightforward.  A description is
> here: http://fy.chalmers.se/~f96hajo/trloii/man5/trloconf.5.html 
> <http://fy.chalmers.se/~f96hajo/trloii/man5/trloconf.5.html> .
> The actual meaning is more complex, the TRLO II description can be found
> here:
> 
> http://fy.chalmers.se/~f96hajo/trloii/vulom4_trlo/descr_defs_frame.html 
> <http://fy.chalmers.se/~f96hajo/trloii/vulom4_trlo/descr_defs_frame.html>
> 
> (left pane), which just is a colourised version of this:
> http://fy.chalmers.se/~f96hajo/trloii/description.txt 
> <http://fy.chalmers.se/~f96hajo/trloii/description.txt>
> 
> It does not describe the .trlo file as such, but what the gateware tries
> to achieve.
> 
>> And what is in the last line? I never came accross "$@" before.
> 
> That would be all the (non-shifted, i.e. not removed) options given to the
> script itself, i.e. master.bash.
> 
>> - eb.bash
>> 
>> ../drasi/bin/lwrocmerge \
>> 
>>     --label=MCAL_EB \
>>     --merge-mode=event \
>>     --server=trans,flush=1 \
>>     --server=stream,flush=1 \
>>     --buf=size=1600Mi \
>>     --max-ev-size=20Mi \
>>     --eb-master=rio4-mcal-1 \
>>     --file-writer \
>>     --drasi=rio4-mcal-1
>> 
>> What is the purpose of this command?
> 
> This runs an 'event builder' on the PC.  Not strictly needed, but this
> way, the RIO only ever needs to send data once, to this event-builder
> (EB).  File writing, and streaming of on-line data is then handled by this
> process.  It is cheaper to have better network cards and so on in a plain
> PC.
> 
>> Why are values for buffer size and max
>> event size different then in the command before?
> 
> The nomenclaturure is unfortunately a bit convoluted below with ucesb
> regards 'buffer size'.  The --buf in the two commands above give the size
> of the memory used to buffer data inside the process, and depends on how
> much memory each machine has.  The --max-ev-size tells how large each .lmd
> event can be.  The --max-ev-size configured in the event builder needs to
> be as large as the sum of all event sources it has.  I.e. should be able
> to be the same as in your single source above.
> 
> In the readout itself, any event that is read out cannot be larger than
> this.  If it is, then the DAQ will report a fatal failure.
> 
>> - fanout.bash
>> 
>> #!/bin/bash
>> while :
>> do
>> ~/mbsrun/rio4/mcalstruck/ucesb/empty/empty \
>>     stream://localhost \
>>     --server=stream:8001,bufsize=10Mi,flush=1,dataport:7001
>> sleep 5
>> done    
>> 
>> This looks like setting up a connection point to the outside world, right?
> 
> Yes.  It accepts connections and will serve them data for online analysis.
> 
> stream://localhost  tells it where to read data (here the PC itself where
> it is running).  Using the 'stream' protocol, which esentially is just raw
> LMD events.  (As is the 'transport protocol'.)  That will be served on the
> default port used for the stream server set up by the EB above.
> 
> --server is then the server that accepts connections, and serves data on
> another port (8001).
> 
>> And we find the third (random?) value for a buffer size.
> 
> That bufsize is actually the LMD buffer size used by the stream server.
> The corresponding value in the readout and EB is set implicitly from the
> maximum event size...
> 
>> - rate.bash
>> 
>> ../drasi/bin/lwrocmon --rate rio4-mcal-1
>> 
>> Ok, this I understand. We can look the DAQ over the shoulder and see what
>> the thing is doing in terms of number of trigger events, transported data,
>> etc.
> 
>> - log.bash
>> 
>> ../drasi/bin/lwrocmon --log rio4-mcal-1 localhost
>> 
>> This is also easy to understand.
> 
> :-)
> 
> Then also try to do (on the PC)
> 
> drasi/bin/lwrocmon --tree rio4-mcal-1 localhost
> 
> which would show a 'tree-view' monitoring of the running system.
> 
> 
> Cheers,
> Håkan
> 


More information about the subexp-daq mailing list