From 90c55e6602eac134aa26286a85d950ce4bca76a2 Mon Sep 17 00:00:00 2001 From: Peter Zumbruch Date: Wed, 13 Nov 2013 09:39:28 +0100 Subject: [PATCH] updating epics instructions section --- epics.tex | 350 +++++++++++++++++++++++++++++++++---- epics_cpus_adl.png | Bin 0 -> 27948 bytes epics_cpus_adl_running.png | Bin 0 -> 2160 bytes 3 files changed, 315 insertions(+), 35 deletions(-) create mode 100644 epics_cpus_adl.png create mode 100644 epics_cpus_adl_running.png diff --git a/epics.tex b/epics.tex index 2ac10e6..4d57930 100644 --- a/epics.tex +++ b/epics.tex @@ -1,50 +1,262 @@ \section{Epics} -\paragraph*{If CTS monitor in Epics does not work} -\begin{verbatim} -ssh to scs@lxhadesdaq -password is ??? (ask Burkhard) - -test for processes: -ps U scs - PID TTY STAT TIME COMMAND -7728 pts/83 R+ 0:00 ps U scs -24174 ? S 0:00 sshd: scs@pts/83 -25656 pts/83 Ss 0:00 -bash -30793 ? S 0:00 procServ 4813 ../../bin/linux-x86/trb st.cmd -30800 pts/88 Ssl+ 0:02 ../../bin/linux-x86/trb st.cmd -30847 pts/88 S+ 0:00 caRepeater +\subsection{Code Repository} +\begin{itemize} + \item CVS Root: :ext:lx-pool.gsi.de:/misc/hadesprojects/daq/cvsroot + \item CVS Repository: EPICS/\ldots +\end{itemize} + +\subsection{CPU nodes} +Starting from the main EPICS screen, the button ``\emph{cpus}'' gives an overview on +the status of the EPICS host cpus of HADES detector control system, as shown in +figure \ref{fig:epicsDetectorControlSystemNodes}. The eventbuilder nodes are not +yet included. -if only the procServ process is running but not its subprocess trb -then telnet to procServ -then R will restart the trb IOC -then ] -quit -the telnet session. +\begin{figure}[htp] +\begin{center} + \includegraphics[width=.8\textwidth]{epics_cpus_adl.png} + \caption[EPICS CPU nodes]{EPICS Detector Control System Nodes} + \label{fig:epicsDetectorControlSystemNodes} +\end{center} +\end{figure} +A running EPICS node looks like it is shown in figure +\ref{fig:epicsDetectorControlSystemRunningNode}. -to start from scratch: +\begin{figure}[htp] +\begin{center} + \includegraphics[width=.8\textwidth]{epics_cpus_adl_running.png} + \caption[EPICS CPU nodes]{example of a running EPICS Detector Control System + Node} + \label{fig:epicsDetectorControlSystemRunningNode} +\end{center} +\end{figure} + +%%%%%% +%% Main IOC +\subsection{``\emph{Main}'' IOC} +Although the dectector control system EPICS cpu nodes run on their own, +providing their controls, the ``\emph{Main}'' IOC located at +``\emph{hadesdaq02}'' collects all informations, duplicates them and +provides the informations and controls in a ``\emph{channeled}'' manner to the +users. -cd EPICS/apps/trb/iocBoot/ioclxhadesdaq/ -procServ 4813 ../../bin/linux-x86/trb st.cmd +It is \textbf{not} recommended to by-pass this, since you could overload the +small cpus easily by too many requests. -to check (only on lxhadesdaq): +\subsubsection{Startup} +At reboot a scs crontab entry assures the automatic restart of the EPICS IOCs +using \emph{procserv} +\begin{itemize} + \item Check \emph{scs}'s crontab: \small \begin{verbatim} + crontab -l + + # DO NOT EDIT THIS FILE - edit the master and reinstall. + # (/tmp/crontab.b8ak69 installed on Tue Jan 31 17:11:30 2012) + # (Cronie version 4.2) + # m h dom mon dow command + @reboot cd ~scs/procServ && ./ioc-cave.sh + \end{verbatim} \normalsize + \begin{itemize} + \item If it is missing then edit scs's crontab + \begin{itemize} + \item Automatic \scriptsize \begin{verbatim} + cmd=$(echo '@reboot cd ~scs/procServ && ./ioc-cave.sh') && \ + echo -e "$(crontab -l 2>/dev/null | grep -F -v -e "$cmd")\n$cmd" | crontab - + \end{verbatim} \normalsize + \item by-hand \small \begin{verbatim} + crontab -e \end{verbatim} \normalsize + \end{itemize} + \end{itemize} +\end{itemize} -telnet localhost 4813 - ==> you should see epics> prompt. -dbl ==> gives you list of PVs. -] to get back to the telnet prompt -then -quit +\subsubsection{\emph{Main} IOC failure} + \paragraph{Check and Restart} + \begin{itemize} + \item ssh to scs@hadesdaq02 (password is ??? (ask Peter / Burkhard)) \begin{verbatim} + ssh scs@hadesdaq02 \end{verbatim} + \item test for processes, the call chain is:\\ + \emph{procServ} $\Rightarrow$ \emph{ startEpicsIoc\_includingHVSemaphoreCheck.sh } $\Rightarrow$ \emph{hades} + \begin{verbatim} + ps U scs \end{verbatim} \tiny \begin{verbatim} + [...] COMMAND + [...] [...]/procServ [options] ./startEpicsIoc\_includingHVSemaphoreCheck.sh ../../bin/linux-x86/hades st.cmd + [...] /bin/bash ./startEpicsIoc\_includingHVSemaphoreCheck.sh ../../bin/linux-x86/hades st.cmd + [...] ../../bin/linux-x86/hades st.cmd + \end{verbatim} \normalsize + \item if only the ``\emph{procServ}'' process is running but not its subprocesses\\ + ``\emph{trb}'' then locally telnet to procServ and restart the EPICS IOC + \begin{verbatim} + telnet localhost 4813 + # then + R will restart the trb IOC + # then + ] to bet back to the telnet prompt + # then type + quit + # to quit the telnet session. + \end{verbatim} + \end{itemize} + \paragraph{To start from scratch:} + \begin{itemize} + \item ssh to scs@hadesdaq02 (password is ??? (ask Peter / Burkhard)) \begin{verbatim} + ssh scs@hadesdaq02 \end{verbatim} + \item make sure none of these processes are running: + \begin{itemize} + \item ``\emph{procServ}'' + \item ``\emph{startEpicsIoc\_includingHVSemaphoreCheck.sh }'' + \item ``\emph{hades}'' + \end{itemize} + \item start ``\emph{procServ}'' using the crontab scripts used at reboot + \begin{verbatim} + cd ~scs/procServ && ./ioc-cave.sh + \end{verbatim} + \item to check locally (only on hadesdaq02): + \begin{verbatim} + telnet localhost 4813 + # ==> you should see epics> prompt. + #dbl ==> gives you list of PVs. + # + ] to get back to the telnet prompt + # then type + quit + # to quit the telnet session. + \end{verbatim} + \end{itemize} + +\subsubsection{External Documentation} +\begin{itemize} + \item \href{http://hades-wiki.gsi.de/cgi-bin/view/DaqSlowControl/SCSLinuxIoc}{HADES wiki: SCS Linux IOC} +\end{itemize} -\end{verbatim} +%%%%%% +%% HadCon +\subsection{HadCon(1) / a.k.a. HadShoPoMo} +%%%%%% +%% Dreamplug \subsection{DreamPlug} +\href{http://wiki.gsi.de/Epics/HadesHadcon2SystemsDreamplug}{Hadcon2 \& Dreamplug based systems} + +\subsubsection{Startup} +At reboot a scs crontab entry assures the automatic restart of the EPICS IOCs +using \emph{procserv} + +\subsubsection{Failure of the DreamPlug} +\paragraph{IOC Failure} + In case the IOC isn't responding, but the system is still accessible: + \begin{itemize} + \item ssh to scs@dreamp\emph{XY} (password is ??? (ask Peter / Burkhard), \emph{XY} number of dreamplug) \begin{verbatim} + ssh scs@dreampXY \end{verbatim} + \item test for processes, the call chain is:\\ + \emph{procServ} $\Rightarrow$ \emph{ startEpicsIoc\_includingHVSemaphoreCheck.sh } $\Rightarrow$ \emph{hades} + \begin{verbatim} + ps U scs \end{verbatim} \tiny \begin{verbatim} + [...] COMMAND + [...] [...]/procServ [options] ../../bin/linux-arm/streamHadcon st.cmd + [...] ../../bin/linux-arm/streamHadcon st.cmd + \end{verbatim} \normalsize + \item if only the ``\emph{procServ}'' process is running but not its subprocesses\\ + ``\emph{streamHadcon}'' then locally telnet to procServ and restart the EPICS IOC + \begin{verbatim} + telnet localhost 4813 + # then + R will restart the trb IOC + # then + ] to bet back to the telnet prompt + # then type + quit + # to quit the telnet session. + \end{verbatim} + \end{itemize} + +\paragraph{System Failure, Crash\newline} + \vspace{1 cm} + In the case of a failure of the DreamPlug system itself: +\begin{enumerate} + \item Please reboot several times. + \item If this is not successful: \textbf{Check and Reinstall Complete System} +\end{enumerate} -In the case of a failure of the DreamPlug, please reboot several times. -If this is not successful, then attach then please attach the -``GuruPlug JTAG board'', only the smaller connector (``UART''). -Then you can start on a laptop +\subparagraph{Check, \emph{optional} } + \vspace{1 cm} + For the \textbf{optional} checking you need to have an external ``\emph{GuruPlug JTAG board}'' attached to the + dreamplug and a mobile PC running a terminal program e.g. \emph{picocom}. + For reinstalling the dreamPlugs this is not necessary, since the current \emph{uboot} configuration already contain a multi boot system. + + \begin{itemize} + \item check with an external ``\emph{GuruPlug JTAG board}'' attached to the + dreamplug, only the smaller connector (``\emph{UART}''), and your PC/Laptop.\\ + Then you can start on a laptop: + \begin{verbatim} + #picocom (exit via: ctrl-a + ctrl-x) + picocom -b 115200 /dev/ttyUSB0 + \end{verbatim} + and reboot again: use the commands \emph{help}, \emph{reset}, \emph{printenv} for a first check and analysis + \begin{verbatim} + Hit any key to stop autoboot: 1 + Marvell>> + Marvell>> help + Marvell>> reset + Marvell>> printenv + \end{verbatim} + \end{itemize} + +\subparagraph{Reinstall Complete System}{\footnote{\href{http://wiki.gsi.de/Epics/DreamplugRollbackSystemAndUImage}{http://wiki.gsi.de/Epics/DreamplugRollbackSystemAndUImage: Dreamplug Rollback System And UImage}}} + +\begin{itemize} + \item Requirements: + \begin{itemize} + \item \textbf{\emph{uboot} configuration}: + At least a dual boot system which tries at last the internal disk, + e.g. \href{http://wiki.gsi.de/Epics/DreamplugTweakUBootFasterMultiBoot}{Dreamplug Tweak UBoot Faster Multi Boot}, which is already installed on all HADES dreamplugs + \item \textbf{Sources}: + \begin{itemize} + \item offline: the prepared USB stick / SD card, (ask Peter) + \item online: + \begin{itemize} + \item ``\emph{das u-boot}'' uimage file, $\approx 3 MB$:\\ + \small\href{http://jspc29.x-matter.uni-frankfurt.de/bitfiles/dreamplug-uimage-04112013.tar.xz}{http://jspc29.x-matter.uni-frankfurt.de/bitfiles/dreamplug-uimage-04112013.tar.xz} \normalsize + \item system tar ball, $\approx 1 GB$: \\ + \small\href{http://jspc29.x-matter.uni-frankfurt.de/bitfiles/dreamplug-system-04112013.tar.xz}{http://jspc29.x-matter.uni-frankfurt.de/bitfiles/dreamplu-system-04112013.tar.xz}\normalsize + \end{itemize} + \end{itemize} + \end{itemize} + \item Prepare your external usb stick / SD card: \\ If you don't have a prepared system available you have to prepare a new stick / SD card. + \scriptsize \begin{verbatim} + target= && + cd $(mktemp -u) && + wget -N http://jspc29.x-matter.uni-frankfurt.de/bitfiles/dreamplug-uimage-04112013.tar.xz && + wget -N http://jspc29.x-matter.uni-frankfurt.de/bitfiles/dreamplug-system-04112013.tar.xz && + scr=$(tar atf dreamplug-system-04112013.tar.xz | grep -w dreamplugCreateBootDeviceFunctionSet.sh) && + tar axf dreamplug-system-04112013.tar.xz $scr && + mv $scr $(basename $scr) && unset scr && + . ./dreamplugCreateBootDeviceFunctionSet.sh && + createBootDevicePartition && + createBootDeviceMounts && + tar Jxvf dreamplug-uimage-04112013.tar.xz -C /mnt/${target}1 && + tar Jxvf dreamplug-system-04112013.tar.xz -C /mnt/${target}2 && + createBootDeviceUmounts + + #optional + cd && rm -rf $OLDPWD + \end{verbatim} \normalsize + \item Restoring from external USB stick / SD card + \begin{enumerate} + \item Plug your prepared USB device / SD card into the Dreamplug + \item Restart your system + \item Login to the dreamplug with root privileges:\\ + user/pw: restore/nosoup4u \\ + becomes automatically: root \\ + \item \scriptsize \begin{verbatim} + #if dreamplugRestoreLocalSystemFromExternal.sh is not on the system or you want to get the newest + dpScript=dreamplugRestoreLocalSystemFromExternal.sh + wget -N http://wiki.gsi.de/pub/Epics/DreamplugRollbackSystemAndUImage/${dpScript} + + #optional source + source= + + chmod u+x ./${dpScript} && + ./${dpScript} + \end{verbatim} \normalsize + \item reboot your device, with no boot device connected + \end{enumerate} +\end{itemize} @@ -75,3 +287,71 @@ gzip -cdv /backup_ee_dev007_sda.raw.gz | dd of=/dev/sda bs=1M \end{verbatim} +\paragraph{External Documentation} +\begin{itemize} + \item \href{http://wiki.gsi.de/Epics/DreamplugRollbackSystemAndUImage}{http://wiki.gsi.de/Epics/DreamplugRollbackSystemAndUImage} + \item \href{http://wiki.gsi.de/Epics/DreamplugTweakDualFasterUBoot}{http://wiki.gsi.de/Epics/DreamplugTweakDualFasterUBoot} +\end{itemize} + +%%%%%% +%% Channel Archvier +\subsection{Channel Archiver} + +%%%%%% +%% CTS monitor +\subsection{CTS monitor} +Located on lxhadesdaq, but currently not used anymore. +\subsubsection{If CTS monitor in Epics does not work} +\begin{itemize} + \item Check and Restart + \begin{itemize} + \item ssh to scs@lxhadesdaq (password is ??? (ask Peter / Burkhard)) + \begin{verbatim} + ssh scs@lxhadesdaq + \end{verbatim} + \item test for processes \footnotesize + \begin{verbatim} + ps U scs + + PID TTY STAT TIME COMMAND + 30793 ? S 0:00 procServ 4813 ../../bin/linux-x86/trb st.cmd + 30800 pts/88 Ssl+ 0:02 ../../bin/linux-x86/trb st.cmd + 30847 pts/88 S+ 0:00 caRepeater + \end{verbatim} \normalsize + \item if only the ``\emph{procServ}'' process is running but not its subprocess\\ + ``\emph{trb}'' then locally telnet to procServ and restart the EPICS IOC + \begin{verbatim} + telnet localhost 4813 + # then + R will restart the trb IOC + # then + ] to bet back to the telnet prompt + # then type + quit + # to quit the telnet session. + \end{verbatim} + \end{itemize} + \item To start from scratch: + \begin{itemize} + \item ssh to scs@lxhadesdaq (password is ??? (ask Peter / Burkhard)) + \begin{verbatim} + ssh scs@lxhadesdaq + \end{verbatim} + \item make sure nor ``\emph{procServ}'' neither ``\emph{trb}'' are + running + \item start ``\emph{procServ}'' starting ``\emph{trb}'' + \begin{verbatim} + cd EPICS/apps/trb/iocBoot/ioclxhadesdaq/ && + procServ 4813 ../../bin/linux-x86/trb st.cmd + \end{verbatim} + \item to check locally (only on lxhadesdaq): + \begin{verbatim} + telnet localhost 4813 + # ==> you should see epics> prompt. + #dbl ==> gives you list of PVs. + # + ] to get back to the telnet prompt + # then type + quit + # to quit the telnet session. + \end{verbatim} + \end{itemize} + \end{itemize} + diff --git a/epics_cpus_adl.png b/epics_cpus_adl.png new file mode 100644 index 0000000000000000000000000000000000000000..1d09dcf1d530524c76b5c3ea65c75511873a47c8 GIT binary patch literal 27948 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 v;|CgCoFzG?`@KH*eSNRb_4y|Mfq<+1ru`cL z0BVj7c5VQ$1+Um!sr;&lBkU%L0+i5h@QVPkM@OJIY!7$1i3R|5;pS3`=uXH20F}Lt zcD7ez*rM-{u-S9F0Kbv&%$IeD;PF9=1feGFV(#SD2kF)CU>TAbz|@^@D98&@vo(aN z!``mbcAoM>2AaaUtIit-%hv@w5jSj{P7y~pdo-=C)!PEVc#W>AlHy?lITyV7wNq1F z`U*&aD}v_c#c^Fl`VZ@00N~vYyz{yBbu1M}Yq+yfW*v8_U45>hp!o~ExRLjL>BdZq z)6w=~25%Q!{*K=a`H1v~-trX}m{tD{`d5e4=4p$_n<7ccd$1J%UUj_q2gSUKQKT+NQ~;pa+**BONg}G> ztx(hWj-X9Z9sd}QeXw#$RY7t&VrsVn+Ww#P!d3A&(b9^LCzbOVLPDTB-iHu+`{2`9 z>N;dJLt^PQl2O~9Dh*CfK=#~&V8~xxE$*yNEy?j?(D?XesfZE44Xog`oI{233hK+& zvN2_3V|F1M%4^rNgt`mi7`WJNGp~Z%R<(d%~xZ*v8~Gk%cU5ywzz^6JZzJ? zAMdPdhlUL;{UkmoahAQJP99EtB90jzK6U~(jCn2*P4=_6{%;E5X~mFGcRWpZt@iNQ z1RVs2_{25x+0ERA%WvJKO%X6`?C%vPA^Te?hg~$kN;aU*0y|_#Y3O?SzrjM%PU~Lw9&m<2Y+DtlMd8H0yL{ zdKH*I>o})+tGlG`j=y&PIE+jx%`b3+$p>OmWHb^qs0x=?TIk-DMj((Y&$5bR!z^Cb zmn+D>54UkQJA3Tfu0a#CTJU;(R=S%aja`c$g#3U z!z7AUVnt_s*gOkmG{M0*F(aN{40k1sR&F@o^B|7DJfTV1BXr(3>Se4`ya5)zAFN=& z(c7-fpt>S#b3)3?8YQ;u#>dga3~zlxn>}Hu{c@-kw+SsdC5xxtND1>mu97GJ!^jc_ zSX$ac=x6q5wA@IeeX6mmvh%gUO<@+au6z+W^iXE$S8WeGNWU@f^7&-0Ri;xu=>-~e zEf}RqRgFsC?mzdwp#tnt5txZ-4?-2m*}TQ>-QxS!s4BB-3zPn(LxEkrd4dRLfOC(| z;4DtJSX`8m`pC^H^E2s8=C_$iTsqBeu_b)|OatW%rGdYG--w3INufJz5IANgAH>BG z6c%)Ztt>2AMpq6c8KCdGuJBZz3nV48?9sj;pQ1GZ#I%C$SwJD@Pp^5^;t$ETpfa?C z&Z5d}oCbd?&}bi@Gv@W>1-R`YWr9RcK+Txk#&;f)%7bQnWEDK5OC9TOxj~$ZgIFD6 zPf1E{6cG%3_0yyh!+toZP&XhjuWh+^dCd6tg^hC`2kEEgxo<} zuZe5>wDfGOZ=SkxG+Myf6X5}dq9-T|-|{54K>?8rnzuCESk4-3u&+tGQtj=D%){rj zP`A4?loPA;*v#z3#GouEP$Zat$(8)Ir;lsI;zPvGR*GwUxO6o23Y%E!-xwVR>Rsz+ zjKGHci-ROs=D5oEX=73?Du*%zPSPEd5Q1y$Ux<=?0|JN?&hf8;)3M#+U7JoDAv3P>Ur$8q80&r-N6F9I&z4Gudn<5;4Xu;?IYE+=y5MS~?iuoAmA79GH=2 zhmp)?sFo)HJmMyKXB@ogvFU)}pMN=xWtKCpZ#p09pX~15r+|)nWJ*Sy2o)!Vq@Ei++#)2Az>ufB*mh literal 0 HcmV?d00001 -- 2.43.0