mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Performance UDP Wahl des Controllers


Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo allerseits,

ich habe vor ein kleines Projekt mit einem Controller durch zu führen. 
Hauptbestandteil dabei ist viele Daten über einen UPD Socket zu 
verschicken. Die einzelnen UDP Packete haben etwa eine größe von 50 
Bytes. Der Controller soll es schaffen weit über 1000 Telegramm zu 
empfangen zu bearbeiten und ca 50 Telegramm zu senden.

Jetzt habe ich schon ein Test mit Controller durch geführt und musste 
natürlich fest stellen das dieser meinen Anforderungen nicht genügt.

Um nicht noch maßig Zeit und Controller zu verschwenden würde ich gerne 
als nächstes einen Controller wählen der meinen Anforderungen genügt.

Derzeit überlege ich einen Dimm Pc mit ca 200 Mhz zu nehmen. Allerdings 
habe ich nicht einen blassen schimmer ob der es bringt.

Welches OS ist für solch eine Aufgabe geeignet. Bremsen mich Os wie 
yLinux oder WinCe 6.0 zu stark aus?.

Würde mich sehr über eure Antworten freuen.

Schöne Grüße

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Tom (Gast)

>verschicken. Die einzelnen UDP Packete haben etwa eine größe von 50
>Bytes. Der Controller soll es schaffen weit über 1000 Telegramm zu
>empfangen zu bearbeiten und ca 50 Telegramm zu senden.

Macht 50kB in RX Richtung. In welcher Zeit? Gleichzeitig?

>Derzeit überlege ich einen Dimm Pc mit ca 200 Mhz zu nehmen. Allerdings
>habe ich nicht einen blassen schimmer ob der es bringt.

???
So eine DIMM Speicherriegel kann man nicht ohen weiteres an einen uC 
anschliessen.

>Welches OS ist für solch eine Aufgabe geeignet. Bremsen mich Os wie
>yLinux oder WinCe 6.0 zu stark aus?.

Naja, kommt drauf an was sonst noch gemacht werden soll.

MFg
Falk

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wow das ging aber jetz mal schnell. Vielen Dank schonmal für die Antwort

-Macht 50kB in RX Richtung. In welcher Zeit? Gleichzeitig?

Ja richtig. Dies muss aber nicht unbedingt gleichzeitig sein!
mehr wäre mir aber lieber. Optimal wären 300KByte. Aber Achtung die 
Datenrate hängt stark von der größe der UDP Telegramme ab! D.h ein 
Controller der 1000KByte bei einer Datengröße von 1000 Byte schafft, 
schafft bei einer größe von 50 Byte eine wesentlich geringere 
Datenrate!!!

-So eine DIMM Speicherriegel kann man nicht ohen weiteres an einen uC
anschliessen.

Meinte keinen Speicher sonder einen Controller der auf eine Checkkarten 
großen Karte sitzt und auf einen Dimm Sockel gesteckt werden kann
wie z.B
http://de.kontron.com/index.php?id=82&cat=34

-Naja, kommt drauf an was sonst noch gemacht werden soll.

Schätzungsweise
-10 Task
-10 Queus
-10 Semaphoren
-4 UARTs mit Treiber
-Webserver
-ftp Server
-logik

sollte also noch ein bisschen Platz sein.

Kennt jemand Performance Statistiken von senden und empfangen von UDP 
Telegrammen? Wie berechnet man so etwas

Schöne Grüße

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Andi (Gast)

>-Macht 50kB in RX Richtung. In welcher Zeit? Gleichzeitig?

>Ja richtig. Dies muss aber nicht unbedingt gleichzeitig sein!

IN WELCHER ZEIT? 1 Sekunde oder eine Stunde?

>http://de.kontron.com/index.php?id=82&cat=34

Nett.

>Schätzungsweise
>-10 Task
>-10 Queus
>-10 Semaphoren
>-4 UARTs mit Treiber
>-Webserver
>-ftp Server
>-logik

Was sollen den die Task machen? Und was soll mit den 50kB UDP Daten 
passieren?

Ich würde mal schätzen, dass so ein 133MHz Mini-PC mit schlankem OS das 
recht gut hinbekommen sollte.

MFG
Falk

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>-Macht 50kB in RX Richtung. In welcher Zeit? Gleichzeitig?

>Ja richtig. Dies muss aber nicht unbedingt gleichzeitig sein!

Hi,

>-Macht 50kB in RX Richtung. In welcher Zeit? Gleichzeitig?

>Ja richtig. Dies muss aber nicht unbedingt gleichzeitig sein!

1 Sekunde. Sonst wäre es ja zu einfach

>Schätzungsweise
>-10 Task
>-10 Queus
>-10 Semaphoren
>-4 UARTs mit Treiber
>-Webserver
>-ftp Server
>-logik

Was sollen den die Task machen? Und was soll mit den 50kB UDP Daten
passieren?

Task/Queus/Semaphoren sind für die UARTs und den eigentlichen Empfang 
und senden von Daten.(und noch ein paar andere Kleinigkeiten).

Es werden Daten von UDP über die seriellen Schnittstellen und umgekehrt 
gesendet. Dabei erfolgt noch ein bisschen Konvertierung der Daten mehr 
aber nicht!!

ftp und web sind mehr zur Konfiguration!

Schöne Grüße

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Andi (Gast)

>Task/Queus/Semaphoren sind für die UARTs und den eigentlichen Empfang
>und senden von Daten.(und noch ein paar andere Kleinigkeiten).

>Es werden Daten von UDP über die seriellen Schnittstellen und umgekehrt
>gesendet. Dabei erfolgt noch ein bisschen Konvertierung der Daten mehr
>aber nicht!!

Na wenn DAS ein 133 MHz Prozessor nicht gebacken kriegt dann weiss ich 
es auch nicht. Das ist 1 Paket/ms. Das sind 133000 Takte! Die UARTs 
sollten FIFOs haben, ist aber glaub ich heute selbstverständlich.

>ftp und web sind mehr zur Konfiguration!

Also Nebensache und kann eher langsam sein.

MFG
Falk

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

mhh ja rein Gefühls mäßig hätte ich das auch gedacht. Aber zum Beispiel 
der Beck IPC mit 96 Mhz
http://www.beck-ipc.com/de/products/sc2x/index.asp

schafft keine 1000 Telegramme pro Sekunde.

Das Probelm ist nun, bevor ich mir eine neue Plattform aussuche würde 
ich mir gern recht sicher sein, dass es funktioniert.

Schöne Grüße

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Andi (Gast)

>mhh ja rein Gefühls mäßig hätte ich das auch gedacht. Aber zum Beispiel
>der Beck IPC mit 96 Mhz
>http://www.beck-ipc.com/de/products/sc2x/index.asp

>schafft keine 1000 Telegramme pro Sekunde.

Naja. Was ist das denn für ein Prozessor? AFAIK ein 386er im 
Kleinformat. Kommt dann auch auf das OS und die restliche Software an, 
und, was denn genau mit den Paketen gemacht werden muss (volle UPD 
Verarbeitung, Prüfsummen etc.)
Naja, die frage ist nicht einfach zu beantworten.

>Das Probelm ist nun, bevor ich mir eine neue Plattform aussuche würde
>ich mir gern recht sicher sein, dass es funktioniert.

Wenn es soooo einfach wäre . . .;-)

MFG
Falk

Autor: Bobby (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na dann mach mal....

1000 Telegramme ist schon einiges,
aber die Kenndaten spielen ja auch noch mit:
Wie schnell ist denn Dein Ethernet ?
Wer ist noch auf dem Segment unterwegs ?

Wenn die Rahmenbedingungen nicht stimmen,
dann kannst Du nicht sicher sein, dass es überhaupt so
funktioniert.

Lass Dich aber nicht entmutigen, vielleicht geht es ja doch.

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Falk,

du hast recht die Frage ist eben nicht ganz einfach zu beantworten!

Welche Prozessor im Beck Ipc enthalten ist weiß ich leider nicht!

Um das ganze mal ein bisschen einzuschränken. Sagen wir mal die CPU soll 
nach empfang eines UDP Telegramms dieses koppieren und sofort wieder 
über UDP verschicken.

Um das UDP Protokoll an sich möchte ich mich eigentlich nicht kümmern. 
Das soll das OD machen. WinCE oder Linux.

Schöne Grüße

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Andi (Gast)

>Um das UDP Protokoll an sich möchte ich mich eigentlich nicht kümmern.
>Das soll das OD machen. WinCE oder Linux.

Dann hilft nur eins. System kaufen und messen.

MFg
Falk

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

oje genau das wollte ich eigentlich vermeiden. Es ist nämlich ganz 
billig solch ein Board zu kaufen.

Hat sonst noch jemand eine Idee?

Schöne Grüße

Autor: ARM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,


du könntest einen ARM9 benutzen. z.B. die von ATMEL. Sind für solche 
Spielereien auf alle Fälle ausreichend.

Hier gibt es fertige Boards:

http://www.taskit.de/produkte/portux/index.htm

Am besten suchst du mal nach AT91RM9200 und schaust ob z.b. Linux für 
das Board portiert wurde.

Autor: ARM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag:

Ich meinte im Netz nach anderen Boards suchen !

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ja gut. Aber reicht nun Arm mit 200Mhz und Linux für die Anwendung??? 
Das ist meine Frage.

Schöne Grüße

Autor: JojoS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es hängt auch viel von dem OS ab. Wenn man das umgeht und die Pakete 
selber verschickt schafft man auch 2000 pro s auf einem 386er mit 25Mhz 
(das sind die Eckdaten einer Customhardware die wir einsetzen). Mit 
WindowsCE auf X86 Basis klappt das auch ganz gut, aber auch hier gehts 
schneller wenn man nicht durch den OS IP Stack laufen muß.
Wenn man kleine Pakete hat die in einen Ethernetframe passen und man 
sich nicht um Fragmentierung kümmern muß ist es auch nicht so schwierig 
die UDP Datagramme selber zu bauen.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Andi (Gast)

>ja gut. Aber reicht nun Arm mit 200Mhz und Linux für die Anwendung???
>Das ist meine Frage.

Die wird sie kaum jemand wirklich beantworten können.

MfG
Falk

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo JojoS,

intressant!!!! Vielen Dank schonmal für die Informationen vor weg. Ich 
glaube das hat mir ganz schön geholgen: Dennoch habe ich nun einiege 
Fragen.

-Was ist Fragmentierung
-Woher weißt Du das??
-Wenn Packete selber verschickt und erstellt, dann muss es doch das OS 
auch unterstützen selber Packete zu verschicken uns zu senden oder?
Wie programmiert man so etwas. Kennst Du Beispiele für zum Beispiel 
linux oder Win CE?
-Was macht das Os dann noch, dass das direkte schicken so viel schneller 
ist

Vielen Dank schonmal für die Beantwortung der Fragen und Schöne Grüße

Autor: ARM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Andi (Gast)

>ja gut. Aber reicht nun Arm mit 200Mhz und Linux für die Anwendung???
>Das ist meine Frage.

- 1000 x 50 Byte INPUT
- work
- 50 x 50 Byte OUTPUT

Was machst du mit den empfangenen Daten ? Wenn das nicht soo viel ist 
reicht mit Sicherheit auch eine andere 32bit CPU mit weniger MHz. Du 
solltest vorher noch abklären ob du Fließkomma-Berechnungen benutzt und 
in welchem Umfang.

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ARM,

Fließkomma benötiege ich nicht. Alles nur Bit und Byte Operationen. 
Diese sollen wie schon gesagt im wesentlichen dann auf die UARTs 
gesendet werden.

Was mich aber nun doch noch mehr intressiert ist die Wahl des OS. 
Derzeit hatte ich vor ein recht gut ausgebautes Os zu nehmen wie Linux 
oder WinCe. Damit mit ich zum Beispiel mit dem FTP bzw Web Server nicht 
so viel ärger haben.

Warum ich immer noch ein bisschen zweifle ist wegen der BeckIpc 
geschichte.

Wenn Jojos wirklich recht hat und durch das um gehen des Betriebssystems 
wesentlich mehr UDP Telegramme gesendet/empfangen werden können 
intressiert mich dies schon enorm. Die Frage ist nur wie macht man das?


Schöne Grüße und Vielen Dank für die guten und hilfreichen Antworten

Autor: ARM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,


ich habe keine guten Erfahrungen mit dem BeckPC. Die Programmierung war 
damals sehr eigen. Man brauchte ein uralt BorlandC und der Netzwerktest 
war dann auch nicht so berauschend (vor ~3Jahren).

Falls du Linux benutzen willst,  schau ob es ein BSP (Board Support 
Package) gibt und welche Anwendungen (ftp/www ...) schon mit bei sind. 
Linux/Windows Entwicklungsumgebung/Compiler .... . Falls du alles selber 
bauen musst, kann das sehr abendfuellend werden und ist einem Anfänger 
nicht zu empfehlen ! Wenn deine Wahl auf WinCE fällt, kannst du dich 
schonmal drauf einstellen für die Entwicklungsumgebung etwas Geld zu 
bezahlen.

Autor: ARM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag:

>Wenn Jojos wirklich recht hat und durch das um gehen des Betriebssystems
>wesentlich mehr UDP Telegramme gesendet/empfangen werden können
>intressiert mich dies schon enorm. Die Frage ist nur wie macht man das?

Das kann ich mir beim BeckIpc gut vorstellen.

Autor: JojoS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das UDP ist z.B. im Wikipedia einfach beschrieben. Ist eben 'nur' eine 
Struktur von Headerdaten die man richtig ausfüllen muß. Beim UDP gibt es 
ja kein Handshake oder irgendeine Fehlerkontrolle. Man bekommt höchstens 
auf IP Level eine Antwort das die Gegenstelle keine Daten auf Port xy 
erwartet wenn man ein System anfunkt wo keiner auf dem Port lauscht.
Die Fragmentierung kann bei der Weiterleitung der Pakete entstehen, z.B. 
ist bei IP über ein Analogmodem die MTU kleiner als bei Ethernet und die 
grösseren Frames müssen dann in kleinere aufgeteilt werden. Aber bei 
reiner Ethernet Verbindung dürfte das keine Rolle spielen.
Im OS steckt im IP Stack eine ganze Menge mehr, z.B. die Prüfung der 
Felder auf gültige Daten. Früher wurde das weniger gecheckt bis dann die 
ganzen berühmten 'Denial of Service' Attacken kamen die solche Lücken 
ausgenutzt haben. Dann gehen die Pakete ja evtl. noch durch eine 
Firewall, werden verschiedenen Protokollen angeboten, werden vielleicht 
mehrfach umkopiert usw.

Autor: ARM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich komme mit 64Mhz 32Bit CPU/100Mbit Netz bei einer TCP-Verbindung auf 
über 1MByte/sek. . Aja, Linux-Kernel 2.4.XX. . Ich sehe nur Probleme bei 
sehr wenig Speicher, schlechter Netzwerkhardwareanbindung oder einer 
sehr sehr langsamen CPU.

Autor: 6632 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was willste denn von einem OS ? Es sind im Wesentlich nur I/O 
operationen. Vorne an den UDP noch einen Header dranpfriemeln sollte 
nicht so schwer sein. Sollte eigentlich mit einem 20MHz AVR machbar 
sein. Der macht in einer milisekunde 20k operationen. Da sollte man doch 
noch 2 packete zu je 50 bye herumschieben koennen.

Autor: 6632 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich vergass, an den AVR einen SMC9196 oder so mit parallel interface.

Autor: ARM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weil es den Anforderungen von Tom nicht genügt ?

> Was mich aber nun doch noch mehr intressiert ist die Wahl des OS.
> Derzeit hatte ich vor ein recht gut ausgebautes Os zu nehmen wie Linux
> oder WinCe. Damit mit ich zum Beispiel mit dem FTP bzw Web Server nicht
> so viel ärger haben.

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

also vielen Dank für die vielen Antworten



@6623
-Ich werde auf alle Fälle ein Board mit fertigem OS nehmen, damit ich 
wenig äger haben und Threads, Queues, Semaphoren, Web, Ftp, DHSP, 
etc....

@Arm
-"ich komme mit 64Mhz 32Bit CPU/100Mbit Netz bei einer TCP-Verbindung 
auf
über 1MByte/sek. . Aja, Linux-Kernel 2.4.XX. . Ich sehe nur Probleme bei
sehr wenig Speicher, schlechter Netzwerkhardwareanbindung oder einer
sehr sehr langsamen CPU."

Das schafft der Beck Ipc auch bei extrem großen Datenpacketen. Wie groß 
sind Deine Packete die Du verschickst?


@JojoS
Ok verstanden habe ich das jetzt. Was mir noch nicht ganz klar ist wie 
die Implementierung erfolgt. z.B. bei Linux oder Win Ce. Denn das Os 
wird ja keine Funktion haben wie send_raw_ip_packet oder? Wie kommt man 
also direkt an die Schnittstelle ran ohne über den TCP/IP Stack zu 
gehen. Kannst Du mie zum Beispiel für Linux ein Beispiel 
geben/Literatur/Web links


Vielen Dank schonmal für eure Antworten und Schöne Grüße

Autor: JojoS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bei WindowsCE muß man sich da mit NDIS und Miniport Treibern 
beschäftigen. Wir haben das von einer externen Firma entwickeln lassen 
und ich kenne die Details auch nicht. 
http://msdn2.microsoft.com/en-us/library/ms895493.aspx ist vielleicht 
ein Anfang, aber die CE Entwicklung ist nicht ganz trivial und man 
braucht ein Board Support Package vom HW Hersteller. Der sollte auch 
Tipps in Richtung Entwicklungsresourcen geben können.
Mit Linux kenne ich mich so gut wie garnicht aus, da müssen dir andere 
weiterhelfen.
Und es gibt noch Libpcap / Winpcap, das sind Paket Capture / Sende 
Funktionen für Linux und XP. Mit der C# Variante sharp-pcap baue ich 
gerade einen Analyzer für die schnelle zyklische Datenübertragung mit 
UDP. In der WinPCap Variante ist auch ein Beispiel für das Senden von 
UDP Daten.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.