
GR716-DS-UM, May 2019, Version 1.29
312
www.cobham.com/gaisler
GR716
The client using the channel has to correct the AHB error condition and enable the channel again. No
more AHB transfers are done again from the same unit (receiver or transmitter) which was active
during the AHB error until the error state is cleared and the unit is enabled again.
Link error
When a link error occurs during the transmission, the remaining part of the packet is discarded up to,
and including, the next EOP/EEP. When this is done, status is immediately written back to the
descriptor (with the LE bit set) and the descriptor pointer is incremented. The link will be discon-
nected when the link error occurs but the core will automatically try to connect again, provided that
the link-start bit (LS bit in Control register) is asserted, and the link-disabled bit (LD bit in Control
register) is deasserted. If the LE bit in the DMA channel’s control register is not set the transmitter
DMA engine will wait for the link to enter run-state, and start a new transmission immediately when
possible, assuming there are packets pending. If the LE bit in the DMA channel’s control register is
set, the transmitter will be disabled when a link error occurs during a transmission of a packet. In that
case, no more packets will be transmitted until the transmitter is enabled again. See description of the
DMA channel’s control register for more details.
33.8
RMAP
The Remote Memory Access Protocol (RMAP) is used to implement access to resources in the node
via the SpaceWire link. Some common operations are reading and writing to memory, registers and
FIFOs. The core has an optional hardware RMAP target. Whether or not the RMAP target is imple-
mented is indicated by the CTRL.RA bit. This section describes the basics of the RMAP protocol and
the target implementation.
33.8.1 Fundamentals of the protocol
RMAP is a protocol which is designed to provide remote access via a SpaceWire network to memory
mapped resources on a SpaceWire node. It has been assigned protocol ID 0x01. It provides three oper-
ations: write, read and read-modify-write. These operations are posted operations, which means that a
source does not wait for an acknowledge or reply. It also implies that any number of operations can be
outstanding at any time and that no timeout mechanism is implemented in the protocol. Time-outs
must instead be implemented in the user application which sends the commands. Data payloads of up
to 2
24
- 1 bytes is supported by the protocol. A destination can be requested to send replies and to ver-
ify data before executing an operation. For a complete description of the protocol, see the RMAP
standard (ECSS-E-ST-50-52C).
33.8.2 Implementation
The core includes a target for RMAP commands which processes all incoming packets with protocol
ID = 0x01, type field (bit 7 and 6 of the 3rd byte in the packet) equal to 01b and an address falling in
the range set by the default address and mask register. When such a packet is detected it is not stored
to the DMA channel, instead it is passed to the RMAP receiver.
The core implements all three commands defined in the standard with some restrictions. Support is
only provided for 32-bit big-endian systems. This means that the first byte received is the msb in a
word. The target will not receive RMAP packets using the extended protocol ID which are always
dumped to the DMA channel.
The RMAP receiver processes commands. If they are correct and accepted the operation is performed
on the AHB bus and a reply is formatted. If an acknowledge is requested the RMAP transmitter auto-
matically send the reply. RMAP transmissions have priority over DMA channel transmissions.
There is a user accessible destination key register which is compared to destination key field in
incoming packets. If there is a mismatch and a reply has been requested the error code in the reply is
set to 3. Replies are sent if and only if the ack field is set to ‘1’.