<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://ift.wiki.uib.no/index.php?action=history&amp;feed=atom&amp;title=DCS_board_tools</id>
	<title>DCS board tools - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://ift.wiki.uib.no/index.php?action=history&amp;feed=atom&amp;title=DCS_board_tools"/>
	<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=DCS_board_tools&amp;action=history"/>
	<updated>2026-04-19T20:34:17Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=DCS_board_tools&amp;diff=136&amp;oldid=prev</id>
		<title>Dfe002: New page: Category:DCS  Detector Control System  == Overview == This sections covers the DCS board software for the TPC-like de...</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=DCS_board_tools&amp;diff=136&amp;oldid=prev"/>
		<updated>2009-02-20T10:45:26Z</updated>

		<summary type="html">&lt;p&gt;New page: &lt;a href=&quot;/index.php?title=Category:DCS&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Category:DCS (page does not exist)&quot;&gt;Category:DCS&lt;/a&gt; &lt;a href=&quot;/Detector_Control_System_(DCS)_for_ALICE_Front-end_electronics&quot; title=&quot;Detector Control System (DCS) for ALICE Front-end electronics&quot;&gt; Detector Control System&lt;/a&gt;  == Overview == This sections covers the DCS board software for the TPC-like de...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:DCS]]&lt;br /&gt;
[[Detector Control System (DCS) for ALICE Front-end electronics | Detector Control System]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
This sections covers the DCS board software for the TPC-like detectors (so far TPC, PHOS, most likely FMD and EMCAL). Apart from the mentioned FeeServer there are some low level tools and interfaces. In fact, the FeeServer uses them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:DCSboard software components.png|thumb|none|600px|DCS board Software Components]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DCS board communicates via two interfaces to the RCU board:&lt;br /&gt;
# The Message Buffer Interface: used for most of the data tranfer between software and memory on the RCU&lt;br /&gt;
# The Direct Bus Access: programming of RCU Flash Memory and FPGA Configuration Memory&lt;br /&gt;
&lt;br /&gt;
A driver (rcubus_driver) provides the access to the interfaces via the following devices.&lt;br /&gt;
A C-interface (RCU interface) implements basic functionality for the Message Buffer Interface. It is used by both the RCU shell (low level tool) and the FeeServer&lt;br /&gt;
&lt;br /&gt;
== Access to the RCU ==&lt;br /&gt;
The figure illustrates the the available hardware interfaces: Message Buffer Interface and Direct Bus Access.&lt;br /&gt;
&lt;br /&gt;
[[Image:DCSboard-RCU interface.png|frame|none|Hardware interfaces between DCS board and RCU]]&lt;br /&gt;
&lt;br /&gt;
The data flow is controlled by lines in the Control Register:&lt;br /&gt;
* Bit 7		Start Command&lt;br /&gt;
* Bit 6		MIB multiplexer, read enable &lt;br /&gt;
* Bit 0		Ready&lt;br /&gt;
* Bit 5		Direct mode select&lt;br /&gt;
&lt;br /&gt;
The idea behind the Message Buffer Interface:&lt;br /&gt;
* the interface moves some of the complexity to the firmware&lt;br /&gt;
* decouples cpu from the communication task&lt;br /&gt;
* block by block transfer&lt;br /&gt;
* 2 Buffers for communication and one Control Register&lt;br /&gt;
** Message Input Buffer (MIB)&lt;br /&gt;
** Message Result Buffer (MRB)&lt;br /&gt;
** Control Register&lt;br /&gt;
* basic sequence from software view&lt;br /&gt;
** write command sequence to MIB&lt;br /&gt;
** set &amp;#039;execute&amp;#039; flag&lt;br /&gt;
** wait for the &amp;#039;ready&amp;#039; flag&lt;br /&gt;
** read result and status&lt;br /&gt;
&lt;br /&gt;
In Direct Bus Access mode the driver (or a specific subdriver) takes control over the bus lines.&lt;br /&gt;
&lt;br /&gt;
== RCU bus driver ==&lt;br /&gt;
The following devices are available resp. are planned to be that: &lt;br /&gt;
*/dev/rcu/msgbuf	message buffer interface&lt;br /&gt;
*/dev/rcu/fpga		fpga configuration (under development)&lt;br /&gt;
*/dev/rcu/flash		general flash memory access (under development)&lt;br /&gt;
*/dev/rcu/flash0	flash memory bank 0 (under development)&lt;br /&gt;
*/dev/rcu/flash1	flash memory bank 1 (under development)&lt;br /&gt;
*/dev/rcu/flash2	flash memory bank 2 (under development)&lt;br /&gt;
*/dev/rcu/flash3	flash memory bank 3 (under development)&lt;br /&gt;
&lt;br /&gt;
== Message Buffer access (RCU interface) ==&lt;br /&gt;
The Message Buffer interface is a memory mapped interface. A certain command sequence has to be written to the Message Input Buffer (MIB).&lt;br /&gt;
&lt;br /&gt;
A command sequence constists of a 32-bit &amp;#039;&amp;#039;&amp;#039;header word&amp;#039;&amp;#039;&amp;#039;, the command words and a 32-bit &amp;#039;&amp;#039;&amp;#039;marker word&amp;#039;&amp;#039;&amp;#039; which terminates one &amp;#039;&amp;#039;sequence block&amp;#039;&amp;#039;. Several &amp;#039;&amp;#039;sequence blocks&amp;#039;&amp;#039; can be grouped and are finally terminated by the &amp;#039;&amp;#039;&amp;#039;End marker word&amp;#039;&amp;#039;&amp;#039;. The structure is outlined in the following figure.&lt;br /&gt;
&lt;br /&gt;
[[Image:MsgBufferFormat.png|frame|none|Format of the Message Buffer input]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Command ids ===&lt;br /&gt;
* Bit 5-0 of the header word&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Command Name&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Command Code&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Command words&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | # command words&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; | SINGLE_READ&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 0x1&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | a single read operation&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;width:100px&amp;quot;&lt;br /&gt;
|address&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 1&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;  valign=&amp;quot;top&amp;quot; | SINGLE_WRITE&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 0x2&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | a single write operation&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;width:100px&amp;quot;&lt;br /&gt;
|address&lt;br /&gt;
|-&lt;br /&gt;
|data&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 2&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;  valign=&amp;quot;top&amp;quot; | MULTI_READ&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 0x3&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | block read operation &amp;lt;br&amp;gt; The &amp;#039;&amp;#039;count&amp;#039;&amp;#039; parameter indicates the number of words of a certain format &amp;lt;br&amp;gt;(see [[DCS_board_tools#Control_bits_and_block_number | control bits]])&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;width:100px&amp;quot;&lt;br /&gt;
|address&lt;br /&gt;
|-&lt;br /&gt;
|count&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 2&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;  valign=&amp;quot;top&amp;quot; | MULT_WRITE&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 0x4&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | block write operation &amp;lt;br&amp;gt; The &amp;#039;&amp;#039;count&amp;#039;&amp;#039; parameter indicates the number of words of a certain format &amp;lt;br&amp;gt;(see [[DCS_board_tools#Control_bits_and_block_number | control bits]])&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;width:100px&amp;quot;&lt;br /&gt;
|address&lt;br /&gt;
|-&lt;br /&gt;
|count&lt;br /&gt;
|-&lt;br /&gt;
|data #1&lt;br /&gt;
|-&lt;br /&gt;
|  ...&lt;br /&gt;
|-&lt;br /&gt;
|data #n&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 2 + # data words&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;  valign=&amp;quot;top&amp;quot; | RANDOM_READ&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 0x5&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | random read operation&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;width:100px&amp;quot;&lt;br /&gt;
|address #1&lt;br /&gt;
|-&lt;br /&gt;
|address #2&lt;br /&gt;
|-&lt;br /&gt;
|  ...&lt;br /&gt;
|-&lt;br /&gt;
|address #n&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | number of addresses&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;  valign=&amp;quot;top&amp;quot; | RANDOM_WRITE&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 0x6&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | random write operation&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;width:100px&amp;quot;&lt;br /&gt;
|address #1&lt;br /&gt;
|-&lt;br /&gt;
|data #1&lt;br /&gt;
|-&lt;br /&gt;
|address #2&lt;br /&gt;
|-&lt;br /&gt;
|data #2&lt;br /&gt;
|-&lt;br /&gt;
|  ...&lt;br /&gt;
|-&lt;br /&gt;
|address #n&lt;br /&gt;
|-&lt;br /&gt;
|data #n&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 2 x number of addresses&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;  valign=&amp;quot;top&amp;quot; | FLASH_ERASEALL&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 0x21&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | erase the flash completely&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;width:100px&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;  valign=&amp;quot;top&amp;quot; | FLASH_ERASE_SEC&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 0x22&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | erase one sector of the flash&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;width:100px&amp;quot;&lt;br /&gt;
|address&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;  valign=&amp;quot;top&amp;quot; | FLASH_MULTI_ERASE&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 0x24&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | erase multiple sectors of the flash&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;width:100px&amp;quot;&lt;br /&gt;
|address&lt;br /&gt;
|-&lt;br /&gt;
|count&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;  valign=&amp;quot;top&amp;quot; | FLASH_READID&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 0x28&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | read the ID of the flash &amp;lt;br&amp;gt; 0 = Manufacturer ID / 1 = Device ID&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;width:100px&amp;quot;&lt;br /&gt;
|&amp;#039;0&amp;#039; or &amp;#039;1&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 1&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;  valign=&amp;quot;top&amp;quot; | FLASH_RESET&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 0x30&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | reset the flash&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;width:100px&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 0&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Word count ===&lt;br /&gt;
* Bit 15-6 of the header word &amp;lt;br&amp;gt; must contain the number of words between the &amp;#039;&amp;#039;&amp;#039;Header&amp;#039;&amp;#039;&amp;#039; end the &amp;#039;&amp;#039;&amp;#039;Marker&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Block number ===&lt;br /&gt;
* Bit 23-16 of the header word &amp;lt;br&amp;gt; number of the current &amp;#039;&amp;#039;sequence block&amp;#039;&amp;#039; &amp;lt;br&amp;gt; The first block has number &amp;#039;&amp;#039;&amp;#039;n-1&amp;#039;&amp;#039;&amp;#039;, the block number is decremented for the following blocks. The last block has block no &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039;. If there is only one &amp;#039;&amp;#039;sequence block&amp;#039;&amp;#039;, the block no bits are just zero.  &lt;br /&gt;
&lt;br /&gt;
=== Control bits and block number ===&lt;br /&gt;
* Bits 25-24 Data Format&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | 25 - 25&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Data Format&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; | 0 0&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | no compression&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;width:400px&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:0px&amp;quot; align=&amp;quot;left&amp;quot; | 31&lt;br /&gt;
| style=&amp;quot;border:0px&amp;quot; align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 align=&amp;quot;center&amp;quot; | address &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; | 0 1&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 2 x 16 bit words&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;width:400px&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:0px&amp;quot; align=&amp;quot;left&amp;quot; | 31 &lt;br /&gt;
| style=&amp;quot;border:0px&amp;quot; align=&amp;quot;right&amp;quot; | 16 &lt;br /&gt;
| style=&amp;quot;border:0px&amp;quot; align=&amp;quot;left&amp;quot; | 15 &lt;br /&gt;
| style=&amp;quot;border:0px&amp;quot; align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 align=&amp;quot;center&amp;quot; | address + 1 &lt;br /&gt;
| colspan=2 align=&amp;quot;center&amp;quot; | address&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; | 1 0&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 3 x 10 bit words&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;width:400px&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:0px&amp;quot; align=&amp;quot;left&amp;quot; | 29&lt;br /&gt;
| style=&amp;quot;border:0px&amp;quot; align=&amp;quot;right&amp;quot; | 20&lt;br /&gt;
| style=&amp;quot;border:0px&amp;quot; align=&amp;quot;left&amp;quot; | 19&lt;br /&gt;
| style=&amp;quot;border:0px&amp;quot; align=&amp;quot;right&amp;quot; | 10&lt;br /&gt;
| style=&amp;quot;border:0px&amp;quot; align=&amp;quot;left&amp;quot; | 9&lt;br /&gt;
| style=&amp;quot;border:0px&amp;quot; align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 align=&amp;quot;center&amp;quot; | address + 2&lt;br /&gt;
| colspan=2 align=&amp;quot;center&amp;quot; | address + 1&lt;br /&gt;
| colspan=2 align=&amp;quot;center&amp;quot; | address&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; | 1 1&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | 4 x 8 bit words&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;width:400px&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:0px&amp;quot; align=&amp;quot;left&amp;quot; | 31&lt;br /&gt;
| style=&amp;quot;border:0px&amp;quot; align=&amp;quot;right&amp;quot; | 24&lt;br /&gt;
| style=&amp;quot;border:0px&amp;quot; align=&amp;quot;left&amp;quot; | 23&lt;br /&gt;
| style=&amp;quot;border:0px&amp;quot; align=&amp;quot;right&amp;quot; | 16&lt;br /&gt;
| style=&amp;quot;border:0px&amp;quot; align=&amp;quot;left&amp;quot; | 15&lt;br /&gt;
| style=&amp;quot;border:0px&amp;quot; align=&amp;quot;right&amp;quot; | 8&lt;br /&gt;
| style=&amp;quot;border:0px&amp;quot; align=&amp;quot;left&amp;quot; | 7&lt;br /&gt;
| style=&amp;quot;border:0px&amp;quot; align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 align=&amp;quot;center&amp;quot; | address + 3 &lt;br /&gt;
| colspan=2 align=&amp;quot;center&amp;quot; | address + 2&lt;br /&gt;
| colspan=2 align=&amp;quot;center&amp;quot; | address + 1&lt;br /&gt;
| colspan=2 align=&amp;quot;center&amp;quot; | address&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Version ===&lt;br /&gt;
* Bit 31 - 28 of header word &amp;lt;br&amp;gt; version of Message Buffer specification&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | 31 - 28&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; | 0 x x x&lt;br /&gt;
| version 1 (bit 31==0, other bits arbitrary)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; | 1 0 1 0&lt;br /&gt;
| version 2&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; | 1 0 1 1&lt;br /&gt;
| version 2.2&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; | 1 1 1 1&lt;br /&gt;
| FeeServer command (used outside the message buffer interface)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Result Format ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Word #&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Description&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;width:400px&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:0px&amp;quot; align=&amp;quot;left&amp;quot; | 31 &lt;br /&gt;
| style=&amp;quot;border:0px&amp;quot; align=&amp;quot;right&amp;quot; | 16 &lt;br /&gt;
| style=&amp;quot;border:0px&amp;quot; align=&amp;quot;left&amp;quot; | 15 &lt;br /&gt;
| style=&amp;quot;border:0px&amp;quot; align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 align=&amp;quot;center&amp;quot; | &lt;br /&gt;
| colspan=2 align=&amp;quot;center&amp;quot; | Number of words&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0px&amp;quot; colspan=4 align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; | Information Word&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; | 2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;width:400px&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:0px&amp;quot; align=&amp;quot;left&amp;quot; | 31&lt;br /&gt;
| style=&amp;quot;border:0px&amp;quot; align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 align=&amp;quot;center&amp;quot; | Status word&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; | 3 - n&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;width:400px&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:0px&amp;quot; align=&amp;quot;left&amp;quot; | 31&lt;br /&gt;
| style=&amp;quot;border:0px&amp;quot; align=&amp;quot;right&amp;quot; | 0&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 align=&amp;quot;center&amp;quot; | Data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Status word:&lt;br /&gt;
0 - if no error&lt;br /&gt;
Bit 15 set if any error&lt;br /&gt;
&lt;br /&gt;
Bit 0: missing marker&lt;br /&gt;
Bit 1: missing end marker&lt;br /&gt;
Bit 2: no target answer (something wrong with the RCU or not connected)&lt;br /&gt;
Bit 3: no bus grant (no access to the bus on dcs board)&lt;br /&gt;
Bit 5: old message buffer format (prior to v2 with rcu-sh version v1.0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
==== Single read ====&lt;br /&gt;
&lt;br /&gt;
from address 0x7000&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
| 0xA0000041	|| Information word&lt;br /&gt;
|-&lt;br /&gt;
| 0x00007000	|| address 0x7000&lt;br /&gt;
|-&lt;br /&gt;
| 0xAA550000	|| Block marker without Checksum&lt;br /&gt;
|-&lt;br /&gt;
| 0xDD330000	|| End marker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Multiple write ====&lt;br /&gt;
&lt;br /&gt;
4 words starting at address 0x6800 &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0000184 || Information word&lt;br /&gt;
|-&lt;br /&gt;
| 0x00006800 || address 0x6800&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000004 || 4 words to write&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000AFFE || data word 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000D00F || data word 2&lt;br /&gt;
|-&lt;br /&gt;
| 0x00001234 || data word 3&lt;br /&gt;
|-&lt;br /&gt;
| 0x00005678 || data word 4&lt;br /&gt;
|-&lt;br /&gt;
| 0xAA550000 || Block marker without Checksum&lt;br /&gt;
|-&lt;br /&gt;
| 0xDD330000 || End marker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Multiple write with 3x10 bit compress ====&lt;br /&gt;
&lt;br /&gt;
3x3 10bit words starting at address 0x7000 and finishing at 0x7008&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0xA2000144 || Information word&lt;br /&gt;
|-&lt;br /&gt;
| 0x00007000 || address 0x6800&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000003 || 4 words to write&lt;br /&gt;
|-&lt;br /&gt;
| 0x2A995566 || data word 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x1EADBEEF || data word 2&lt;br /&gt;
|-&lt;br /&gt;
| 0x01020202 || data word 3&lt;br /&gt;
|-&lt;br /&gt;
| 0xAA550000 || Block marker without Checksum&lt;br /&gt;
|-&lt;br /&gt;
| 0xDD330000 || End marker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Flash Erase all ====&lt;br /&gt;
&lt;br /&gt;
Erasing the complete content on the RCU Flash Memory&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4000021 || Information word&lt;br /&gt;
|-&lt;br /&gt;
| 0xAA550000 || Block marker without Checksum&lt;br /&gt;
|-&lt;br /&gt;
| 0xDD330000 || End marker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Flash Erase Multiple Sectors ====&lt;br /&gt;
&lt;br /&gt;
Erasing multiple subsequent sectors on the RCU Flash Memory&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0xA40000E4 || Information word &lt;br /&gt;
|-&lt;br /&gt;
| 0x003E8000 || Address of first sector (Word Address)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000004 || Number of sectors to Erase&lt;br /&gt;
|-&lt;br /&gt;
| 0xAA550000 || Block marker without Checksum&lt;br /&gt;
|-&lt;br /&gt;
| 0xDD330000 || End marker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== RCU shell ==&lt;br /&gt;
The RCU Shell is a small command-line software for communcating with the firmware on the RCU motherboard. It is started by simply typing &amp;#039;rcu-sh&amp;#039; at the command-line. This will bring you to the shell mode, where different types of commands can be executed.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The RCU motherboard can be operated in three different modes. &lt;br /&gt;
# Memory mapped mode&lt;br /&gt;
# Selectmap mode&lt;br /&gt;
# Flash mode&lt;br /&gt;
&lt;br /&gt;
The default mode is memorymapped mode, which gives you direct memory access of the registers in the FPGAs on the RCU motherboard. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Flash mode gives the dcs board direct control of the flash memory on the RCU motherboard, while selectmap mode gives the dcs board direct control over the selectmap interface of the Xilinx Virtex-II on the RCU motherboard. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Memory mapped mode ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Selectmap mode ===&lt;br /&gt;
The Selectmap mode is enabled by typing:&lt;br /&gt;
 enter operation (h/i/q/r/w): selectmap enable&lt;br /&gt;
or&lt;br /&gt;
 enter operation (h/i/q/r/w): sm e&lt;br /&gt;
&lt;br /&gt;
The following options is available:&lt;br /&gt;
1. Get help on commands:&lt;br /&gt;
 sm help&lt;br /&gt;
&lt;br /&gt;
2. write to single address via the selectmap interface:&lt;br /&gt;
 sm w 0x[address] 0x[data]&lt;br /&gt;
&lt;br /&gt;
3. read from single address via the selectmap interface:&lt;br /&gt;
 sm r 0x[address]&lt;br /&gt;
&lt;br /&gt;
4. Abort ongoing operation on the Xilinx FPGA:&lt;br /&gt;
 sm abort&lt;br /&gt;
&lt;br /&gt;
=== Flash mode ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The flash mode is enabled by typing:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 enter operation (h/i/q/r/w): flash enable&lt;br /&gt;
&lt;br /&gt;
The following options is available: &amp;lt;br&amp;gt;&lt;br /&gt;
1. Get help on commands: &lt;br /&gt;
 flash help&lt;br /&gt;
2. Write to single address in flash: &lt;br /&gt;
 flash write 0x[address] 0x[data] [num]&lt;br /&gt;
 num = number of sequental addresses to write the given data to&lt;br /&gt;
3. Write a file from a start address in the flash: &lt;br /&gt;
 flash write [-s] 0x[address] file [size]&lt;br /&gt;
 -s = byteswap enabled&lt;br /&gt;
 size = number of 16 bit words to write to the flash from beginning of file.&lt;br /&gt;
4. Erase complete flash:&lt;br /&gt;
 flash erase all&lt;br /&gt;
5. Erase sector:&lt;br /&gt;
 flash erase sec 0x[sector address]&lt;br /&gt;
6. Read single address from flash:&lt;br /&gt;
 flash read 0x[address] [num]&lt;br /&gt;
 num = number of sequental address to read from the given address. &lt;br /&gt;
7 Verify content of the flash memory:&lt;br /&gt;
 flash verify 0x[address] file&lt;br /&gt;
 Verifies that the content of the flash from the given address matches the content of the given file.&lt;br /&gt;
&lt;br /&gt;
== Connection to FeeServer ==&lt;br /&gt;
&lt;br /&gt;
[[Image:DCSboard TPC-ControlEngine connection.png|frame|none|Connection of the FeeServer Control Engine (TPC version) to the Hardware interfaces]]&lt;/div&gt;</summary>
		<author><name>Dfe002</name></author>
	</entry>
</feed>