GR740-UM-DS, Nov 2017, Version 1.7
418
www.cobham.com/gaisler
GR740
35.6.6 The descriptor table address register
The internal pointer which is used to keep the current position in the descriptor table can be read and
written through the APB interface. This pointer is set to zero during reset and is incremented each
time a descriptor is used. It wraps automatically when the 1024 bytes limit for the descriptor table is
reached or it can be set to wrap earlier by setting a bit in the current descriptor.
The descriptor table register can be updated with a new table anytime when no transmission is active.
No transmission is active if the transmit enable bit is zero and the complete table has been sent or if
the table is aborted (explained below). If the table is aborted one has to wait until the transmit enable
bit is zero before updating the table pointer.
35.6.7 Error handling
Abort Tx
The DMA control register contains a bit called Abort TX which if set causes the current transmission
to be aborted, the packet is truncated and an EEP is inserted. This is only useful if the packet needs to
be aborted because of congestion on the SpaceWire network. If the congestion is on the AHB bus this
will not help (This should not be a problem since AHB slaves should have a maximum of 16 wait-
states). The aborted packet will have its LE bit set in the descriptor. The transmit enable register bit is
also cleared and no new transmissions will be done until the transmitter is enabled again.
AHB error
When an AHB error is encountered during transmission the currently active DMA channel is disabled
and the transmitter goes to the idle mode. A bit in the DMA channel’s control/status register is set to
indicate this error condition and, if enabled, an interrupt will also be generated. Further error handling
depends on what state the transmitter DMA engine was in when the AHB error occurred. If the
descriptor was being read the packet transmission had not been started yet and no more actions need
to be taken.
If the AHB error occurs during packet transmission the packet is truncated and an EEP is inserted.
Lastly, if it occurs when status is written to the descriptor the packet has been successfully transmitted
but the descriptor is not written and will continue to be enabled (this also means that no error bits are
set in the descriptor for AHB errors). See also the AMBA ERROR propagation description in section
5.10.
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 (with the LE bit set)
and the descriptor pointer is incremented. The link will be disconnected when the link error occurs but
the grspw will automatically try to connect again provided that the link-start bit is asserted and the
link-disabled bit is deasserted. If the LE bit in the DMA channel’s control register is not set the trans-
mitter DMA engine will wait for the link to enter run-state and start a new transmission immediately
when possible if packets are pending. Otherwise the transmitter will be disabled when a link error
occurs during the transmission of the current packet and no more packets will be transmitted until it is
enabled again immediately when possible if packets are pending.
35.7
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. This section describes the basics of the RMAP protocol and the target implementation.