Windows CE Ehternet

Gast #1985978
Lesenswert?

Hallo Spezialisten,
könnte mir einer eine Frage beantworten, ob man unter Windows CE 6.0 
eine Interrupt-Routine implementieren kann, so dass bei Eintreffen eines 
Ethernet Paketes diese Interrupt-Routine aufgerufen wird. Im normalen XP 
geht es leider nicht. Ich will nämlich ein eigenes 
Kommunikationsprotokoll auf Ethernet Basis entwickeln.
Vielen Dank
Gast #1986074
Lesenswert?

Danke aber dies ist nicht das was ich mir vorgestellt habe. Es muss in 
"Real Time" funktionieren. Ich will keinesfalls die Kommunikation  über 
TCP/IP aufbauen. Wie gesagt sobald ein Ethernet Paket ankommt, wird 
Interrupt ausgelöst, der seinerseits via DMA die Daten ausliest.
Gast #1986425
Lesenswert?

Ich muss ziemlich schnell die Soll-Werte an Motor-Controller senden.
Würde es gehen, wenn ich eine Isa Bus Karte mit entsprechendem 
Ethernet-Kontroller nehme und per Registeradressierung die Kommunikation 
gestallte?
Gast #1986431
Lesenswert?

Russe schrieb:
> Ich muss ziemlich schnell..
wie schnell denn? geht es im µs, ms oder sekunden? Und mal schnell ebend 
in die Treiber-Programmierung einsteigen und ein neuen Protokoll 
entwerfen was dan auch sofort stabiel läuft ist schon sportlich. Ich 
glaube was das du mit den normales Windows CE und UDP Programmierung 
besser dran bist.
Persönliche Seite #1986443
Lesenswert?

Russe schrieb:
> Ich muss ziemlich schnell die Soll-Werte an Motor-Controller senden.

Dafür gibt es Industrial Ethernet mit dafür optimierten 
Ethernet-Karten (die haben dann einen eigenen Rechner onboard, der sich 
um die timingkritischen Dinge kümmert)

> Würde es gehen, wenn ich eine Isa Bus Karte mit entsprechendem
> Ethernet-Kontroller nehme und per Registeradressierung die Kommunikation
> gestallte?

Einerseits wirst Du eine ISA-Karte kaum noch irgendwo hineinstecken 
können, andererseits kannst Du aus Usermode-Programmen nicht auf 
irgendwelche Hardware-I/O-Register zugreifen (außer mit Tricks à la 
giveio.sys) und obendrein kann ein Usermode-Programm nicht auf 
Interrupts reagieren oder gar irgendwelche DMA-gesteuerten Dinge machen.

Hinzu kommt noch, daß gerade der ISA-Bus so extrem langsam ist, daß der 
Ansatz Deine Geschwindigkeits-Idee konterkarieren würde.

Allerdings: Definiere "schnell". Vielleicht ist Dein Problem ja auch 
einfach nur ein Designfehler oder ein Missverständnis.
Gast #1986636
Lesenswert?

Ich soll auf 8 Antriebe in 300 µs mit Daten versorgen. Das System wird 
so aufgebaut, dass es keine Kollisionen entstehen  können. Somit 
entfällt der Overhead wie bei SERCOS oder ähnlichen Systemen.  Deswegen 
habe ich mir gedacht ich nehme Ethernet als Kommunikationsmittel.  100 
Mbit, Paketlänge 46 Byte.
Persönliche Seite #1986940
Lesenswert?

Russe schrieb:
> Kann mir jemand sagen,  ob unter WinCE oder einem anderen Betriebssystem
> ähnlich Vorgehensweise erlaubt ist.

Spätestens wenn Du einen eigenen Devicetreiber für die Netzwerkkarte 
schreibst, ja. Bei Windows gibt es das Konzept der "layered" Treiber, 
d.h. Du kannst einen Treiber entwickeln, der wiederum mit dem 
eigentlichen Netzwerkkartentreiber kommuniziert.

Für Reaktionsgeschwindigkeiten im Bereich unter 1 msec ist bei Windows 
sowieso nur noch auf Devicetreiberebene etwas zu erreichen.
Gast #1987174
Lesenswert?

Hmm, Du überlegst ein nicht echtzeitfähiges Betriebssystem zu nehmen, um 
auf einem nicht echtzeitfähigen Bussystem zuverlässig im 300µs Raster 8 
Teilnehmer mit Daten zu versorgen?

Das nenn ich sportlich :-)
Gast #1987309
Lesenswert?

Nunja, "Echtzeitfähig" ist ein weiter Begriff. Er sagt eigentlich nur 
aus daß ein System innerhalb einer Zeitspanne X reagiert.

Wie Rufus schon schrieb, liegt diese Zeitspanne X bei WinCE 
üblicherweise bei 1ms. Die allerdings auch nur wenn du alles richtig 
einstellst.
Um auf 300µs zu kommen musst du schon viel weiter unten schrauben.

An deiner Stelle würde ich für den Echtzeittask ein "echtes" embedded OS 
nehmen, z.B. das von dir erwähnte von Keil. Wenn Du wegen 
Bedienoberfläche oder was auch immer WinCE benötigst, dann mach zwei 
Systeme draus:
Eines mit dem embedded OS für die Echtzeitaufgaben, und eines mit WinCE, 
daß dein RT-System mit Daten versorgt.


Das mit dem Ethernet passt schon, wenn du sicherstellen kannst daß 
keiner Zwischenfunkt und du zwischen den Paketen genug Reserven 
einplanst für den Fall daß ein Paket nochmal gesendet werden muss. Damit 
musst du im Industriellen Umfeld aufgrund der möglichen Störungen 
rechnen.
Gast #1987390
Lesenswert?

>> SportlichSportlich
Danke.

Ungefähr so habe ich mir vorgestellt.
Wenn die Zeitvorgeben hier unten stimmen, dann kann ich in der Zeit 
locker schaffen.
http://www.keil.com/support/man/docs/rlarm/rlarm_ar_technical_data.htm
Gibt es Alternativen zum Keil OS? Vor allem bin ich nicht darüber nicht 
besonders glücklich, dass OS nur auf ARM basierten MCU  läuft.  Aber 
andere Hersteller geben leider keine definitiven zeitlichen Abgaben.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren