diff -r 9edbe472941d -r f6222c3e311a documentation/ethercat_doc.tex --- a/documentation/ethercat_doc.tex Wed Nov 05 13:41:56 2008 +0000 +++ b/documentation/ethercat_doc.tex Wed Nov 05 13:48:14 2008 +0000 @@ -357,10 +357,80 @@ %------------------------------------------------------------------------------ -\section{Phases} +\section{Master Module} +\label{sec:mastermod} +\index{Master module} + +The EtherCAT master kernel module \textit{ec\_master} can contain multiple +master instances. Each master waits for a certain Ethernet device identified +by its MAC address\index{MAC address}. These addresses have to be specified on +module loading via the \textit{main\_devices} module parameter. The number of +master instances to initialize is taken from the number of MAC addresses +given. + +The below command loads the master module with a single master instance that +waits for the Ethernet device with the MAC address +\lstinline+00:0E:0C:DA:A2:20+. The master will be accessible via index $0$. + +\begin{lstlisting} +# `\textbf{modprobe ec\_master main\_devices=00:0E:0C:DA:A2:20}` +\end{lstlisting} + +MAC addresses for multiple masters have to be separated by commas: + +\begin{lstlisting} +# `\textbf{modprobe ec\_master main\_devices=00:0E:0C:DA:A2:20,00:e0:81:71:d5:1c}` +\end{lstlisting} + +The two masters can be addressed by their indices 0 and 1 respectively (see +figure~\ref{fig:masters}). The master index is needed for the +\lstinline+ecrt_master_request()+ function of the application interface (see +chap.~\ref{chap:api}) and the \lstinline+--master+ option of the +\textit{ethercat} command-line tool (see sec.~\ref{sec:tool}), which defaults +to $0$. + +\begin{figure}[htbp] + \centering + \includegraphics[width=.5\textwidth]{images/masters} + \caption{Multiple masters in one module} + \label{fig:masters} +\end{figure} + +\paragraph{Init Script} +\index{Init script} + +In most cases it is not necessary to load the master module and the Ethernet +driver modules manually. There is an init script available, so the master can +be started as a service (see sec.~\ref{sec:system}). + +\paragraph{Syslog} + +The master module outputs information about its state and events to the kernel +ring buffer. These also end up in the system logs. The above module loading +command should result in the messages below: + +\begin{lstlisting} +# `\textbf{dmesg | tail -2}` +EtherCAT: Master driver `\masterversion` +EtherCAT: 2 masters waiting for devices. + +# `\textbf{tail -2 /var/log/messages}` +Jul 4 10:22:45 ethercat kernel: EtherCAT: Master driver `\masterversion` +Jul 4 10:22:45 ethercat kernel: EtherCAT: 2 masters waiting + for devices. +\end{lstlisting} + +All EtherCAT master output is prefixed with \lstinline+EtherCAT+ which makes +searching the logs easier. + +%------------------------------------------------------------------------------ + +\section{Master Phases} \index{Master phases} -The EtherCAT master runs through several phases (see fig.~\ref{fig:phases}): +Every EtherCAT master provided by the master module (see +sec.~\ref{sec:mastermod}) runs through several phases (see +fig.~\ref{fig:phases}): \begin{figure}[htbp] \centering @@ -390,83 +460,6 @@ %------------------------------------------------------------------------------ -\section{General Behavior} -\index{Master behavior} - -\ldots - -% TODO Behavior (Scanning) - -%------------------------------------------------------------------------------ - -\section{Master Module} -\label{sec:mastermod} -\index{Master module} - -The EtherCAT master kernel module \textit{ec\_master} can contain multiple -master instances. Each master waits for a certain Ethernet device identified -by its MAC address\index{MAC address}. These addresses have to be specified on -module loading via the \textit{main\_devices} module parameter. The number of -master instances to initialize is taken from the number of MAC addresses -given. - -The below command loads the master module with a single master instance that -waits for the Ethernet device with the MAC address -\lstinline+00:0E:0C:DA:A2:20+. The master will be accessible via index $0$. - -\begin{lstlisting} -# `\textbf{modprobe ec\_master main\_devices=00:0E:0C:DA:A2:20}` -\end{lstlisting} - -MAC addresses for multiple masters have to be separated by commas: - -\begin{lstlisting} -# `\textbf{modprobe ec\_master main\_devices=00:0E:0C:DA:A2:20,00:e0:81:71:d5:1c}` -\end{lstlisting} - -The two masters can be addressed by their indices 0 and 1 respectively (see -figure~\ref{fig:masters}). The master index is needed for the -\lstinline+ecrt_master_request()+ function of the application interface (see -chap.~\ref{chap:api}) and the \lstinline+--master+ option of the -\textit{ethercat} command-line tool (see sec.~\ref{sec:tool}), which defaults -to $0$. - -\begin{figure}[htbp] - \centering - \includegraphics[width=.5\textwidth]{images/masters} - \caption{Multiple masters in one module} - \label{fig:masters} -\end{figure} - -\paragraph{Init Script} -\index{Init script} - -In most cases it is not necessary to load the master module and the Ethernet -driver modules manually. There is an init script available, so the master can -be started as a service (see sec.~\ref{sec:system}). - -\paragraph{Syslog} - -The master module outputs information about its state and events to the kernel -ring buffer. These also end up in the system logs. The above module loading -command should result in the messages below: - -\begin{lstlisting} -# `\textbf{dmesg | tail -2}` -EtherCAT: Master driver `\masterversion` -EtherCAT: 2 masters waiting for devices. - -# `\textbf{tail -2 /var/log/messages}` -Jul 4 10:22:45 ethercat kernel: EtherCAT: Master driver `\masterversion` -Jul 4 10:22:45 ethercat kernel: EtherCAT: 2 masters waiting - for devices. -\end{lstlisting} - -All EtherCAT master output is prefixed with \lstinline+EtherCAT+ which makes -searching the logs easier. - -%------------------------------------------------------------------------------ - \section{Process Data} \label{sec:processdata}