GR740-UM-DS, Nov 2017, Version 1.7
160
www.cobham.com/gaisler
GR740
If the received packet is not an RMAP packet, the header CRC error indication bit cannot be used.
However, it is still possible to use the DC bit if the complete packet is covered by an appended CRC
checksum, which is calculated according to the RMAP standard [RMAP]. For all other packets, both
the HC and DC bits should be ignored.
13.4.4.9 Error handling
If an AHB error occurs during reception, the current packet is spilled up to and including the next
EEP/EOP and then the currently active channel is disabled and the receiver enters the idle state. A bit
in the channels control/status register is set to indicate this condition.
See also the AMBA ERROR propagation description in section 5.10.
13.4.4.10 Promiscuous mode
The port supports a promiscuous mode where all received data (excluding EOPs/EEPs) is stored to
the first enabled DMA channel regardless of the node address and possible early EOPs/EEPs. The
AMBA port DMA RX maximum length register is still checked and packets exceeding this size are
truncated.
RMAP commands are still handled by the RMAP hardware target when promiscuous mode is
enabled, if the RMAP enable bit in the AMBA port DMA control/status register is set. If the RMAP
enable bit is cleared, RMAP commands are stored to a DMA channel instead.
13.4.5 Transmitter DMA channels
The transmitter DMA engine handles the transmission of data from the DMA channels to the Space-
Wire network. Each receive channel has a corresponding transmit channel which means that there can
be up to 4 transmit channels. However, it is only necessary to use a separate transmit channel for each
receive channel if there are also separate entities controlling the transmissions. The use of a single
channel with multiple controlling entities would cause them to corrupt each other’s transmissions. A
single channel is more efficient and should be used when possible.
Multiple transmit channels with pending transmissions are arbitrated in a round-robin fashion.
13.4.5.1 Basic functionality of a channel
A transmit DMA channel reads data from the AHB bus and stores it in the transmitter FIFO for trans-
mission on the SpaceWire network. Transmission is based on the same type of descriptors as for the
receiver and the descriptor table has the same alignment and size restrictions. When there are new
descriptors enabled, the port reads them and transfers the amount of data indicated.
13.4.5.2 Setting up transmission
Four steps are needed to set up the port for transmission. First, the link interface must be enabled and
started by writing the appropriate value to the ctrl register. Then, the address to the descriptor table
needs to be written to the transmitter descriptor table address register and one or more descriptors
must also be enabled in the table. Finally, the txen bit in the DMA control register is written with a
one, which triggers the transmission. These steps are covered in more detail in the next sections.
13.4.5.3 Enabling descriptors
The descriptor table address register works in the same way as the one of the receiver, see section
13.4.4. Although the maximum size is 1024 bytes as for the receiver, it can only store 64 descriptors
because the size of each descriptor is now 16 bytes instead of 8 bytes.
To transmit packets, one or more descriptors have to be initialized in memory, which is done in the
following way: The number of bytes to be transmitted and a pointer to the data has to be set. There are
two different length and address fields in the transmit descriptors because there are separate pointers