Large latency of USER_IO signal after shutdown handle is pulled

Hi all,

in our standard setup we are going to run a small linux system on the RTM.
In order to shutdown the linux system properly we are using a USER_IO pin to signal the start of the power down sequence to the RTM (and another USER_IO pin to be informed when the linux system shutdown is done).

This is the complete PowerOFFSeq:

<PowerOFFSeq>
			<step>PSQ_DISABLE_SIGNAL(USER_IO_31)</step>            <!-- 217: REQ_ZYNQ_DOWN -->
			<step>PSQ_ENABLE_SIGNAL(USER_IO_31)</step>
			<step>PSQ_DISABLE_SIGNAL(USER_IO_31)</step>
			<step>PSQ_SET_TIMER(1, 30000)</step>
			<step>PSQ_JUMP_IF_FUNCTION_IS_TRUE(isZynqShutDown, 2)</step>
			<step>PSQ_JUMP_IFNOT_TIMEOUT(1, -1)</step>
			<step>PSQ_DISABLE_SIGNAL(USER_IO_2)</step>			<!-- 197: DAQ1 POWER OFF -->
			<step>PSQ_DISABLE_SIGNAL(USER_IO_24)</step>			<!--  92: TCDS POWER OFF -->	
			<step>PSQ_DISABLE_SIGNAL(USER_IO_20)</step>			<!--  90: SWITCH POWER OFF -->
			<step>PSQ_DISABLE_SIGNAL(USER_IO_18)</step>			<!-- 209: ZYNQ POWER OFF -->
			<step>PSQ_JUMP_IF_FUNCTION_IS_TRUE(zynqStatus, 1)</step>	
			<step>PSQ_DISABLE_SIGNAL(CFG_PAYLOAD_DCDC_EN_SIGNAL)</step>
			<step>PSQ_END</step>
		</PowerOFFSeq>

The signaling to the RTM works - BUT it takes ~ 8 seconds from the pull of the handle to the signal being sent on USER_IO_31, checked with a scope.

My questions:

  • is this the expected behavior? Does it really take 8 seconds from pulling the handle until the first step of the sequence is executed?
  • if not: is there anything wrong with my sequence, can it be improved?

The zynq needs around the same time to shutdown which means that the whole shutdown procedure takes at least 15-20 secs. What be nice if this can be reduced.

thanks in advance for any help / hints

ulf

Hello Ulf,

did you set the shutdown timeout to zero, see below:

https://gitlab.cern.ch/ep-ese-be-xtca/ipmc-project/-/blob/master/config.xml?ref_type=heads#L38

When you mention the handle, I assume you mean the front-board handle?

cheers,

Stefan

Thanks a lot, Stefan, this has fixed our issue.

I had only checked the descriptions of the configuration in the README of the immc-project gitlab repository, there this option is missing. But shame on me, the option was already in our General Configuration xml, but commented out :frowning:

chess,

ulf

Hello Ulf,

good to hear that it works now.

BTW, it looks like the following command in the power-off sequence doesn’t really have an effect, since it will go to the next step whatever the return value of the function:

PSQ_JUMP_IF_FUNCTION_IS_TRUE(zynqStatus, 1)

Is this intended?

cheers,

Stefan

Hi Stefan,

it’s a hack. I haven’t found any other way to call my user function zynqStatus.
By calling this function I’m logging the zynq status to find out if the time out has triggered or the zynq has signaled a proper shutdown.
If there is another way of just calling a user function please let me know

cheers

ulf

Hello Ulf,

you should be able to use the PSQ_CALL_FUNC command as follows:

<step>PSQ_CALL_FUNC(zynqStatus)</step>

Let me know if this doesn’t work.

cheers,

Stefan