The remote memory access protocol (RMAP) provides a means for one SpaceWire node to write to and read from memory inside another SpaceWire node. The aim of the RMAP protocol is to standardize the way in which SpaceWire units are configured and to provide a low-level mechanism for the transfer of data between two SpaceWire nodes. For example RMAP may be used to configure a camera or a mass memory device. The camera device may then write image data to allocated areas of memory in the mass memory, or the mass memory may read image data from the camera. All read and write operations defined in the RMAP protocol are posted operations i.e. the source does not wait for an acknowledgement or reply to be received. This means that many reads and writes can be outstanding at any time.
The write command writes zero or more bytes of data into a specified area of memory in a target SpaceWire node. Registers are memory mapped. An acknowledgement may be returned in an optional reply packet.
The write command provides a means for one node, the initiator node, to write one or more bytes of data into memory of another node, the target node on a SpaceWire network. The operation of the write command is illustrated.
The write command sequence begins when an application requests to perform a write operation (Write Request). In response to this the initiator node builds the write command and sends it across the SpaceWire network to the target node (Write Command). When the Write Command arrives at the target, the header is first checked for errors and if there are no errors the user application at the target node is asked if it will accept the write operation (Write Data Request). Assuming that authorization is given by the target user application (Write Data Authorization) the data contained in the write command is written into the specified memory location of the target node (Write Data). Once data has been written to memory the user application running on the target node is informed that a write operation has taken place (Write Data Indication). If an acknowledgement has been requested the target node will wait until the data has been written to memory. It will then send a write reply packet back to the initiator of the write command (Write Reply). When the write reply is received, the initiator node indicates successful completion of the write request (Write Complete Confirmation). Read and read-modify-write commands operate in a similar manner.
The read command reads one or more bytes of data from a specified area of memory in a target SpaceWire node. The data read is returned in a reply packet.
The read-modify-write command reads a register (or memory) returning its value and then writes a new value, specified in the command, to the register. A mask can be included in the command which can be used to provide an atomic operation for semaphores and other handshaking applications.