GR740-UM-DS, Nov 2017, Version 1.7
419
www.cobham.com/gaisler
GR740
35.7.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 be implemented in the user application which sends the commands. Data payloads of up to 16
Mb - 1 is supported in the protocol. A destination can be requested to send replies and to verify data
before executing an operation. A complete description of the protocol is found in the RMAP standard
[RMAP].
35.7.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’.
When a failure occurs during a bus access the error code is set to 1 (General Error). There is predeter-
mined order in which error-codes are set in the case of multiple errors in the core. It is shown in table
550.
Read accesses are performed on the fly, that is they are not stored in a temporary buffer before trans-
mitting. This means that the error code 1 will never be seen in a read reply since the header has
Table 550.
The order of error detection in case of multiple errors in the GRSPW. The error detected first has number 1.
Detection Order Error Code
Error
1
12
Invalid destination logical address
2
2
Unused RMAP packet type or command code
3
3
Invalid destination key
4
9
Verify buffer overrun
5
11
RMW data length error
6
10
Authorization failure
7*
1
General Error (AHB errors during non-verified writes)
8
5/7
Early EOP / EEP (if early)
9
4
Invalid Data CRC
10
1
General Error (AHB errors during verified writes or RMW)
11
7
EEP
12
6
Cargo Too Large
*The AHB error is not guaranteed to be detected before Early EOP/EEP or Invalid Data CRC. For very long accesses
the AHB error detection might be delayed causing the other two errors to appear first.