TCP/IP Netzwerkstack für Embedded DSP-Systeme

Die Netzwerkfähigkeit gewinnt in industriellen Anwendungen immer mehr an Bedeutung. Von der Anbindung an Datenbanken, über Browser-basierte Frontends für die Konfiguration und Parametrierung der Anlage bis hin zur Fernwartung ist eine Netzwerkanbindung erforderlich. Dabei darf der Netzwerkverkehr aber in keinem Fall die eigentliche Aufgabe des DSP-Systems, die Echtzeit-Verarbeitung der Prozessdaten, verzögern oder gar blockieren.
In einigen Anwendungen mag dies tolerierbar sein, z.B. bei der biometrischen Zugangskontrolle, sobald aber das DSP-System Teil einer Produktionsumgebung ist, wird eine Verletzung der Echtzeitverarbeitung unweigerlich zu Ausfällen und Fehlern führen.

Netzwerkstacks aus dem PC- und Microcontroller-Bereich

Ein präemptives Betriebssystem ist ein gute Wahl auf sehr leistungsstarken Prozessoren. Kleinere, oft spezialisierte Prozessoren, wie die C2000 Familie von Texas Instruments, bieten allerdings nicht genügend Speicher- und Rechenleistungs-Ressourcen für ein solches Betriebssystem. Diese kleineren DSPs werden - wenn überhaupt - mit kooperativen Betriebssystemen genutzt, die einen deutlich geringeren Ressourcenverbrauch aufweisen. Dies erfordert aber, wie der Name schon sagt, die Kooperation aller beteiligten Prozesse. Die vorhandenen Netzwerkstacks müssten erheblich überarbeitet werden, um in einem solchen System sicher einsetzbar zu sein.

Netzwerk Co-Prozessor

Auf den ersten Blick erscheint ein Co-Prozessor für das Netzwerk als die optimale Lösung. Prozessoren wie die Texas Instruments OMAP Familie kombinieren einen DSP und eine ARM CPU auf einem Chip und bieten sich für diese Realisierung an. Besonders die breite Softwarebasis für ARM Prozessoren mit Linux-Portierungen vereinfacht die Netzwerkprogrammierung erheblich. Im Detail zeigen sich allerdings doch Probleme: ARM und DSP teilen sich alle Ressourcen, vom externen Speicher bis zu den On-Chip Peripherien und Schnittstellen. Speicherintensive Operationen auf dem ARM blockieren die Datenpfade auf dem Chip und können dadurch immer noch auf der DSP-Seite unzulässig lange Verzögerungen und Echtzeit-Verletzungen hervorrufen. Nur mit sehr viel Erfahrung und Hintergrundwissen lassen sich solche Konflikte durch entsprechende Programmierung verringern.

Für viele kleinere DSP-Systeme ist diese Variante ohnehin nicht praktikabel, da keine On-Chip Co-Prozessoren zur Verfügung stehen und eine externe Anbindung an einen Controller aufgrund fehlender ausreichend schneller Bus-Interfaces nicht möglich ist.
Wenn große Datenmengen über das Netzwerk übertragen werden müssen, relativiert sich auch der Vorteil geringerer Prozessorauslastung: Die benötigte Zeit für die Übertragung der Daten an einen Co-Prozessor ist vergleichbar mit dem direkten Schreiben und Lesen eines Netwerk-Chips. Viele Netzwerk-Chips bieten schon integrierte Hilfsfunktionen wie die Berechnung von Prüfsummen, so dass der DSP nur noch wenig mit Protokoll-Overhead belastet ist.

optimierter TCP/IP Stack

Wir haben uns aus den oben genannten Gründen entschlossen, einen speziell für DSP-Systeme optimierten TCP/IP Netzwerkstack zu entwickeln, der als Hintergrund-Task nur die verbleibende Rest-Rechenzeit des Prozessors verwendet, und so das Echtzeit-Verhalten des DSPs nicht beinträchtigt. Der D.SignT TCP/IP Stack benötigt kein Betriebssystem, kann aber gleichwohl auch als eigenständige Task in einem RTOS, auch kooperativ, eingesetzt werden. Alle Funktionen sind nicht-blockierend und jederzeit durch Interrupts unterbrechbar.

Der Ressourcenverbrauch ist ebenfalls sehr gering. Anstatt Daten mehrfach umzukopieren wird die Applikationsschicht über Callback-Funktionen informiert, sobald neue Daten bereitstehen. Die Receive und Send Funktionen können bei Bedarf direkt auf die Datenfelder der Anwendung zugreifen, um die Anzahl der Speicheroperationen weiter zu minimieren.

Portierungen

Portierungen des D.SignT TCP/IP Stack stehen für die Texas Instruments C2000, C5000 und C6000 Familie zur Verfügung, für den TMS320VC33, sowie für den Analog Devices ADSP-21065 SHARC Prozessor.

Funktionsumfang
ZeroConf/Auto-IP automatic client configuration (IP address assignment)
ARP Address Resolution Protocol, resolves the IP address to a hardware MAC address. No user action is required. If an address is unknown, an ARP request is generated automatically.
IP Internet Protocol. All data transferred by DNS, DHCP, ICMP, UDP and TCP is automatically packed into IP packets.
ICMP Internet Control Message Protocol. The D.SignT.TCP/IP protocol stack responds to "ping" requests to test a connection
UDP User Datagram Protocol, provides a one-to-one or one-to-many connectionless data path. Data transmitted via UDP is not guaranteed to reach its destination. This protocol has very low overhead and is especially useful for transmitting non-critical data like audio and video streams, or any other realtime data where retransmissions cannot be tolerated.
TCP Transmission Control Protocol, provides reliable, connection-oriented, one-to-one connections. All data is acknowledged by the receiver and retransmitted automatically if required. This protocol should be used for critical data like software uploads, commands, etc.
DHCP Dynamic Host Configuration Protocol. This protocol has been developed to ease maintenance of a TCP/IP network. A DHCP server manages the allocation of IP addresses and provides additional network configuration data like gateways, DNS servers etc. The TCP/IP stack integrates the client functions required to obtain an IP address, DNS server, and gateway.
DNS Domain Name System. This protocol allows to use symbolic host names instead of numerical IP addresses. The TCP/IP stack integrates the client functions to query a DNS server to resolve a host name.
FTP  
HTTP Hypertext Transfer Protocol, based on TCP. We do provide a HTTP server framework, which passes GET and POST parameters to a user-defined callback function, hence providing the required flexibility for dynamic data. The DSP can send static HTML pages and images as well as inserting the current value of variables, generate images from data acquisition buffers, etc. on demand.
TELNET Terminal-based communications for maintenance and updates
SMTP Simple Mail Transfer Protocol. Send and Email message or notification
SNTP Simple Network Time Protocol. Obtain the current time from a network/Internet server
Ressourcenverbrauch

Die folgende Tabelle zeigt den typischen Ressourcenverbrauch auf verschiedenen DSP-Plattformen. Zugrunde liegt eine Implementierung mit ARP, IP, ICMP, UDP, TCP, DHCP und DNS.
Vereinfachte Konfigurationen vermindern den Ressourcenverbrauch weiter, z.B. um etwa 25% bei Verzicht auf DHCP und TCP.

DSP Code Size Data Size
TMS320F2812/28335 27.4K bytes 5.6K bytes + 604 bytes per socket
TMS320C5500 35K bytes 8K bytes + 640 bytes per socket
TMS320C6000 72K bytes 7.2K bytes + 604 bytes per socket
TMS320VC33 15K words 2.7K words + 151 words per socket
ADSP-21065 12.4K words 1.9K words + 224 words per socket
Testsysteme

Für die Evaluierung des D.SignT TCP/IP Stacks stehen neben den DSP-Modulen aus der D.Module Familie folgende preiswerte eZdsp und Starter Kits zur Verfügung:

  • TMS320F2812 eZdsp + eZdsk.91C111
  • TMS320F28335 eZdsp + eZdsk.91C111
  • TMS320C5502 eZdsp USB Stick
  • TMS320VC5509A DSP Starter Kit + DSK.91C111
  • TMS320VC5510 DSP Starter Kit + DSK.91C111
  • OMAP-L137/TMS320C6747 Floating Point Starter Kit
  • TMS320C6416 DSK + DSK.91C111
  • TMS320C6713 DSK + DSK.91C111
  • TMS320DM6437 DSK
  • TMS320DM6455 DSK
Lizensierung

Wir bieten unterschiedliche, an Ihre Anforderungen angepasste Lizensierungsmodelle an:

  • Test- und Evaluierungs-Lizenz
  • volumenabhängige Lizensierung
  • unbegrenzte OEM-Lizenz

Beim Kauf der Volumen- oder OEM-Lizenz unterstützen wir Sie kostenlos bei der Integration eines Netzwerk-Controllers in Ihre Schaltung.

Bestellinformationen
DS.TCPIP-xxxx Test und Evaluation
OL.TCPIP-xxxx unbegrenzte OEM Lizenz
QL.TCPIP-xxxx-10 volumenabhängige Lizenz, 10 Systeme
QL.TCPIP-xxxx-100 volumenabhängige Lizenz, 100 Systeme

xxxx = DSP Modul oder Prozessorbezeichnung