SVTVME status report 13 Mar 2001
Thoughts about security:
how to prevent accidental conflict in boards use
especially tests vs. Run Control
- Fails safe mechanism impossible
- Only aim at making difficult for good willing people
(that means us) to disrupt DAQ "accidentally"
- Also
- (sensible) error message in place of Bus Errors
- easier debugging of complex test programs
- help avoid/diagnose conflict among us
during test periods
- Implement different board status flags in SVTVME low level code.
All test programs that will use SVTVME will get the protection.
Code that uses directely VISION is "at risk" and should not be
used.
- Flags set when the board handle is opened.
- Flags checked before any VME operations
- OK for "hardware" errors (read a w/o register)
- RC protection easy to enforce for tasks
running on crate cpu
- Programs on host let open "today" will still have open access
after RC started"tomorrow"
- Delete all FISION slaves at cold_start time ?
- Checking flags before each operation still possible, just slow
- normal
- aimed at preventing Bus Error:
- r/o, w/o, TestMode, Freeze ..
- address exists in this board
- the board is really what you think it is
- open
- just for hardware debug
- allow everything
- locked
- no write is allowed, only reads
- N.B. VME reads are R_C safe
- for internal safety (bugs)
- SPY_MON could use it to protect Spy Cntrs
- running
- R_C is active, only touch Spy, ErrorReg ...
- SPY_MON etc. can use global flag on CPU
- clients on Linux hosts use S_C register
- hw change to S_C in order
- Run bit set in S_C by cold_start. Reset by R_C transition
or Linux script with "log".
- could extend "locked" to Linux clients using mutex files,
only work at B0. Where most activity happens anyhow.
- log of each openBoard (only at B0).
- common place to log all activities
- /cdf/code-common/cdfonline/svttest/logs/...
- svtvme_openBoard
- check if running ==> set so
- check if board locked ==> set so
- set as normal otherwise
- svtvme_unlockBoard: check lock file for permission
- svtvme_setBoard(normal/open) only works if S_C running
register is not set, nor is locked
- svtvme_setRunning(crate) should *NEVER* be used