spacewire rmap protocolspacewire.esa.int/wg/spacewire/spw-snp-wg-mtg4...protocol are posted...

43
SpaceWire RMAP Protocol SpaceWire Working Group Meeting Steve Parkes University of Dundee

Upload: others

Post on 10-Jul-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

SpaceWire RMAP Protocol

SpaceWire Working Group Meeting

Steve ParkesUniversity of Dundee

Page 2: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Aims of RMAP

• Remote Memory Access Protocol• Provide a means of

– Writing to– Reading from– Registers or memory on a SpaceWire node– Over a SpaceWire network– Registers are considered to be memory mapped

• Be simple and effective• Flexible to encompass diverse applications

Page 3: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

SpaceWire Protocol Identifier

LogicalAddress

ProtocolID

Logical Address with Protocol ID

Rest of Packet EOP

LogicalAddress

ProtocolID

PathAddress

Path Address with Protocol ID

Rest of Packet EOP

Page 4: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

RMAP Commands

• Write– With or without acknowledgement– Verifying data before writing or writing without verification

• Read• Read-Modify-Write

Page 5: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Write Commands

• Write non-acknowledged, non-verified– Writes zero or more bytes to memory in a destination node– Command header is checked using a CRC before the data is

written– Data is not checked before it is written– No acknowledgement given to indicate that the command has

been successfully executed

• Used for writing large amounts of data to a destination– Where it can be safely assumed that– The write operation completed successfully– Or that is not critical if it does not succeed– E.g. writing camera images to a temporary working buffer

Page 6: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Write Commands

• Write non-acknowledged, verified– Writes zero or more bytes to memory in a destination node– Command and data are both checked using CRCs before the data is

written– Limits the amount of data that can be transferred in a single write

operation – Owing to limited buffer space in destination– Erroneous data cannot be written to memory– No acknowledgement given to indicate that the command has been

successfully executed• Used for writing command registers and small amounts of data to a

destination– where it can be safely assumed that– the write operation completed successfully– or where errors are detected in a different way– E.g. writing many commands to different configuration registers in a

device and then checking for an error using a status register

Page 7: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Write Commands

• Write acknowledged, non-verified– Writes zero or more bytes to memory in a destination node– Command is checked using a CRC before the data is written– Data is not checked before it is written– Acknowledgement sent to indicate that the command has been

successfully executed

• used for writing large amounts of data to a destination– where it can be safely assumed that– the write operation completed successfully,– but an acknowledgement is required.– For example writing sensor data to memory.

Page 8: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Write Commands

• Write acknowledged, verified– Writes zero or more bytes to memory in a destination node– Command and data are both checked using CRCs before the

data is written– Limits the amount of data that can be transferred in a single write

operation – Owing to limited buffer space in destination– Erroneous data cannot be written to memory– Acknowledgement sent to indicate that the command has been

successfully executed

• Used for writing small amounts of data to a destination– where it is important to have confirmation that– the write operation was executed successfully.– For example writing to command or configuration registers.

Page 9: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Write Operation

Write Request

Write DataRequest

WriteCommand

WriteReply

Write CompleteConfirmation

RMAPSource

Write DataAuthorisation

Write Data

Write DataIndication

RMAPDestination

USERAPPLICATION

USERAPPLICATION

SpaceWireNetwork

Page 10: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Write CommandLogical Addressing

First byte transmitted

Destination Logical Address Packet Type, Command,Source Path Addr LenProtocol Identifier Destination Key

Source Logical Address Transaction Identifier Transaction Identifier Extended Write Address

Write Address (MS) Write Address Write Address Write Address (LS)

Data Length (MS) Data Length Data Length (LS) Header CRC

Data Data Data Data

Data Data Data Data

Data Data CRC EOPLast byte transmitted

Bits in Packet Type / Command / Source Path Address Length Byte

MSB LSB

Write = 1 Verify data(1)No Verify (0)

Command = 1

Increment/No inc. addr Address Length

Ack (1)/No ack (0)

Reserved= 0

Source PathAddress Length

Source Path

Packet Type Command Source Path Address Length

Page 11: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Write Reply

First byte transmittedPacket Type, Command,

Source Path Addr LenSource Logical Address Protocol Identifier Status

Destination Logical Address Transaction Identifier Transaction Identifier Reply CRC

Last byte transmittedEOP

Bits in Packet Type / Command / Source Path Address Length Byte

LSBMSB

Write = 1 Verify data (1)No Verify (0)

Response= 0

Increment/No inc. addr Address LengthAck = 1 Source Path

Address LengthSource PathReserved

= 0

Packet Type Command Source Path Address Length

Page 12: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Write CommandFirst byte transmitted

Path AddressingDestination Path Address

Destination Logical Address Protocol Identifier Packet Type, Command,Source Path Addr Len

Destination Path Address Destination Path Address

Destination Key

Source Path Address Source Path Address Source Path Address Source Path Address

Source Logical Address Transaction Identifier Transaction Identifier Extended Write Address

Write Address (MS) Write Address Write Address Write Address (LS)

Data Length (MS) Data Length Data Length (LS) Header CRC

Data Data Data Data

Data Data Data Data

Data Data CRC EOP

Last byte transmitted

Bits in Packet Type / Command / Source Path Address Length Byte

MSB LSB

Write = 1 Verify data(1)No Verify (0)

Command = 1

Increment/No inc. addr Address Length

Ack (1)/No ack (0)

Reserved= 0

Source PathAddress Length

Source Path

Packet Type Command Source Path Address Length

Page 13: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Write Reply

Source Path Address

Source Logical Address Protocol Identifier Packet Type, Command,Source Path Addr Len Status

Destination Logical Address Transaction Identifier Transaction Identifier Reply CRC

Source Path Address Source Path Address

EOP

First byte transmitted

Last byte transmitted

Write = 1 Verify data (1)No Verify (0)

Response= 0

Increment/No inc. addrAck = 1Reserved

= 0

Bits in Packet Type / Command / Source Path Address Length Byte

MSB

Packet Type Command

Source PathAddress Length

Source PathAddress Length

LSB

Source Path Address Length

Page 14: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Write Command Header Error

DestinationSource

Write RequestWriteCommand

RecordPacketError

Page 15: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Write Authorisation Rejection

DestinationSource

Write Request

Write DataRequest

WriteCommand

Write ReplyError

AuthorisationFailure

Write DataAuthorisationRejection

Page 16: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Command Authorisation

• Destination user application• Can refuse to authorise command for any reason• E.g.

– Write address not 32-bit aligned– Length not a multiple of four bytes– Address range falls partially or completely outside an acceptable

region

Page 17: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Write Data Error

DestinationSource

Write Request

Write DataError Indication

WriteCommandHeader

Write DataError Reply

Write DataFailure

RecordData Error

Write DataRequestWrite DataAuthorisation

WriteCommandData

Page 18: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Write Reply Error

DestinationSource

Write RequestWriteCommand

WriteReply

Write DataRequestWrite DataAuthorisation

Write Data

Write DataIndication

RecordPacketError

Page 19: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Read Command

• Read command– Reads one or more bytes of data– From specified area of memory in a destination node– Data read is returned in a reply packet.

Page 20: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Read Operation

DestinationSource

Read Request

Read DataRequest

ReadCommand

ReadReply

Read DataConfirmation

Read DataResponse

Page 21: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Read Command

Destination Path Address

Read Address (MS) Read Address Read Address Read Address (LS)

Data Length (MS) Data Length Data Length (LS) Header CRC

Destination Path Address Destination Path Address

EOP

First byte transmitted

Last byte transmitted

Destination Logical Address Protocol Identifier Packet Type, CommandSource Path Addr Len Destination Key

Source Path Address Source Path Address Source Path Address Source Path Address

Source Logical Address Transaction Identifier (MS) Transaction Identifier (LS) Extended Read Address

Read = 0 Read = 0Command= 1

Increment/No inc. addr

Read = 1(Ack/No_Ack)

Reserved= 0

Bits in Packet Type / Command / Source Path Address Length Byte

MSB

Packet Type Command

Source PathAddress Length

Source PathAddress Length

LSB

Source Path Address Length

Page 22: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Read Reply

Source Path Address

Source Logical Address Protocol Identifier Packet Type, Command,Source Path Addr Len Status

Destination Logical AddressTransaction Identifier (MS) Transaction Identifier (LS) Reserved = 0

Data Length (MS) Data Length Data Length (LS) Header CRC

Data Data Data Data

Source Path Address Source Path Address

Data Data Data Data

Data Data CRC EOP

First byte transmitted

Last byte transmitted

Read = 0 Read = 0Response= 0

Increment/No inc. addrRead = 1Reserved

= 0

Bits in Packet Type / Command / Source Address Path Length Byte

MSB

Packet Type Command

Source PathAddress Length

Source PathAddress Length

LSB

Source Path Address Length

Page 23: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Read Command Error

DestinationSource

Read RequestReadCommand

RecordPacket Error

Page 24: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Read Authorisation Rejection

DestinationSource

Read RequestReadCommand

ReadReplyAuthorisationError

Read DataRequest

ReadAuthorisationRejection

AuthorisationFailure

Page 25: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Read Reply Header ErrorDestinationSource

Read RequestReadCommand

ReadReply

Read DataIndication

Read DataResponse

RecordPacketError

Page 26: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Read Reply Data Error

DestinationSource

Read RequestReadCommand

ReadReply

Read DataIndication

Read DataResponse

Read DataFailure

Page 27: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Read-Modify-Write Command

• Read-modify-write command– Reads a register (or memory)– Returns its value– Writes a new value, specified in the command, to the register.– Mask can be included, in the command– So that only certain bits of the register are written

• Provides an atomic operation that can be used for semaphores and other handshaking operations.

Page 28: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Read-Modify-Write OperationDestinationSource

RMW Request

RMW DataRequest

RMWCommand

RMWReply

RMW CompleteConfirmation

Data Read and WriteAuthorisation

Write Data

Write DataIndication

Page 29: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Example Read-Modify-Write Operation

Data in command (Data)1 0 0 0 1 0 0 0

Mask in command (Mask)1 0 0 0 1 1 1 0

Data read from destination memory and returned to source (Read)1 1 1 0 0 0 1 1

Data written to destination memory= (Mask AND Data) OR (/Mask.Read)

1 1 1 0 1 0 0 1

Page 30: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Read-Modify-Write Command

Destination Path Address

Destination Logical Address Protocol Identifier Packet Type, CommandSource Path Addr Len Destination Key

Source Path Address Source Path Address Source Path Address Source Path Address

Source Logical Address Transaction Identifier Transaction Identifier Extended RMW Address

RMW Address (MS) RMW Address RMW Address RMW Address (LS)

Data +Mask Length (MS)= 00h

Data + Mask Length= 00h

Data + Mask Length (LS)= 00h, 02h, 04h, 06h or 08h Header CRC

Data (MS) Data Data Data (LS)

Destination Path Address Destination Path Address

Data/Mask CRC EOP

First byte transmitted

Last byte transmitted

Read = 0 Verify DataBefore WR = 1Command = 1 Incr. address

= 1Ack/No_Ack

= 1Reserved = 0

Bits in Packet Type / Command / Source Address Path Length Byte

MSB

Packet Type Command

Mask (MS) Mask Mask Mask (LS)

Source PathAddress Length

Source PathAddress Length

LSB

Source Path Address Length

Page 31: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Read-Modify-Write Reply

Source Path Address

Source Logical Address Protocol Identifier Packet Type, Command,Source Path Addr Len Status

Destination Logical Address Transaction Identifier (MS) Transaction Identifier (LS) Reserved = 0

Data Length (MS) = 0 Data Length = 0 Data Length (LS)= 01h, 02h, 03h or 04h Header CRC

Data Data Data Data

Source Path Address Source Path Address

Data CRC EOP

First byte transmitted

Last byte transmitted

Read = 0 Verify DataBefore WR = 1Response = 0 Inc. address

= 1Ack/No_Ack

= 1Reserved = 0

Bits in Packet Type / Command / Source Path Address Length Byte

MSB

Packet Type Command

Source PathAddress Length

Source PathAddress Length

LSB

Source Path Address Length

Page 32: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Data length zero

• If data length is zero no data will be read or written• Data length of zero can be used for testing whether a

command is acceptable by a unit.

Page 33: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Partial Implementation of RMAP

• Partial implementations are permitted• For example:

– Support of write and read but not RMW commands– Support of 32-bit data lengths only

• If destination receives command it does not support• Or command with options not supported• It refuses to authorise the command• Command is not executed• If reply requested then it will contain Authorisation

Failure error code

Page 34: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Posted Operations

• All read and write operations defined in the RMAP protocol are posted operations

• I.e. source does not wait for acknowledgement or reply to be received

• Many reads and writes can be outstanding at any time• Means that no timeout mechanism implemented in

RMAP for missing acknowledgements or replies• If acknowledgement or reply timeout mechanism is

required it must be implemented in the source user application.

Page 35: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Receive Buffers

• Note RMAP does not handle the user application receive buffers

• otherwise it would have to maintain at least a pointer for every outstanding read request

• It is up to user application to handle any receive buffers. • Appropriate receive buffer for a read reply may be

identified in user application by transaction identifier in read reply.

Page 36: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

CRC Checks

• Header CRC– 8-bit CRC– Fairly simple to compute– Provides reasonable protection for short header

• Data CRC– Same 8-bit CRC– May be computed using same hardware/software as Header

CRC– Provides reasonable protection for short data lengths– For long packets of data additional protection may be necessary– Which must be supplied by the user application

• Galois version of CRC used– X8 + X2 + X1 + 1– Simple to implement in hardware

Page 37: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Access Registers with RMAP

Register Bank

Address DecoderUser

System

SpaceWire SpaceWireInterface

RMAPInterface

Destination ApplicationSpaceWire-RMAP Interface

Page 38: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Write to Memory with DMA

DataCtr = 000010hData

Data

DMA Controller Memory

SpaceWire MemPtr = 001000hSpaceWireInterface

RMAPInterface

Destination ApplicationSpaceWire-RMAP Interface

Page 39: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Read from Memory with Software

SpaceWireInterface

RMAP Interface

HostProcessor

MemoryMem Addr RegSpaceWire

SpaceWire-RMAP Interface Destination Application

Data Len Reg

Data FIFO

Dest Key Reg

ProcessorBus

Status Reg

Page 40: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Write to Mailbox with DMA

SpaceWireInterface

RMAPInterface

Mailbox DMA

Mailbox Base PtrMailbox Current PtrMailbox Max Size

Mailbox Status

Mailbox Data Size

Memory

Mailbox MemoryMailbox Memory

Mailbox Memory

SpaceWire-RMAP Interface Destination Application

Page 41: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Changes from Draft C to Draft D

• Galois version of CRC specified• Additional error code added

– Error code 12 – Invalid destination logical address– Informs the source that the destination logical address was not

the value expected by the destination.

Page 42: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Implementation in Router• We do not allow zeros in the source path address• Except leading zeros• E.g. for a single word source path address

0 0 0 1 and 0 2 3 4 are accepted source path address0 0 0 0 , 2 3 0 1 and 2 3 4 0 are not accepted

• This is because 0 routes to a configuration port• A configuration port should not be configuring other

configuration ports.• Hence reply/acknowledgement should not be routed to

port 0

Page 43: SpaceWire RMAP Protocolspacewire.esa.int/WG/SpaceWire/SpW-SnP-WG-Mtg4...protocol are posted operations • I.e. source does not wait for acknowledgement or reply to be received •

Summary

• RMAP provides:– A consistent means of reading and writing – Registers and memory– Over SpaceWire network– Is very flexible– Partial implementation permitted– Is being implemented in the ESA radiation tolerant Router ASIC

• Draft C of standard currently being reviewed by working group

• Will be included in ECSS-E50-12 Part 2