Overview

The XMOS TCP/IP component provides a IP/UDP/TCP stack that connects to the XMOS ethernet component. It enables several clients to connect to it and send and receive on multiple TCP or UDP connections. The stack has been designed for a low memory embedded programming environment and despite its low memory footprint provides a complete stack including ARP, IP, UDP, TCP, DHCP, IPv4LL, ICMP and IGMP protocols.

The stack is based on the open-source stack uIP with modifications to work efficiently on XMOS architecture and communicate between threads using XC channels.

The TCP stack interfaces to the 5-thread XMOS ethernet stack via a pair of channels. Alternatively, an integrated 2-thread Ethernet plus TCP/IP is available for use in resource limited applications.

5 thread Ethernet plus separate TCP/IP stack properties

  • Layer 2 packets can be sent and received independently of layer 3
  • Integrated support for high priority Qtagged packets
  • Integrated support for 802.1 Qav rate control
  • Packet filtering in an independent threads
  • Works on a 400 MHz part

Two thread ethernet plus integrated TCP/IP stack properties

  • Uses only 2 threads
  • High throughput
  • Uses lower memory footprint
  • Only TCP/IP sourced packets can be transmitted
  • 500 MHz parts only (MII thread requires 62.5 MIPS)

Component Summary

Functionality

Provides a lightweight IP/UDP/TCP stack

Supported Standards

IP, UDP, TCP, DHCP, IPv4LL, ICMP, IGMP

Supported Devices

Requirements

XMOS Desktop Tools

v10.4 or later

XMOS Ethernet Component

2v0

Licensing and Support

Component code provided without charge from XMOS. Component code is maintained by XMOS.

The resource requirements for the XTCP stack alone are:

Resource | Usage

Channels

1 per client

Memory

Between 20 and 45 KBytes

Timers

2

Clocks | 0

When used with the single thread ethernet MII module, the combined usage is:

Resource | Usage

Channels

3 plus 1 per client

Memory

Between 26 and 50 KBytes

Timers

4

Clocks | 1

The memory usage depends on the selection of different options at compile time, and on the amount of buffering chosen.