www.mikrocontroller.net

Forum: PC-Programmierung Windows CE Ehternet


Autor: Russe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das kann man natürlich auch unter "normalem Windows XP", sieh Dir mal 
an, wie wireshark (http://www.wireshark.org) funktioniert.

Autor: Russe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Russe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Betriebsystem ist mir nicht wichtig. Es muss nämlich Real Time OS 
sein. Ich könnte mir auch mir der Keil OS anfreunden.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann kannst Du den Kram nach wie vor unter XP machen - Du wirst Dich nur 
mit der Devicetreiberprogrammierung anfreunden müssen.

Was hast Du großartiges vor?

Autor: Russe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Russe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Russe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es existiert doch Möglichkeit unter Keil OS Ethernet Interrupt zu 
implementieren.
Kann mir jemand sagen,  ob unter WinCE oder einem anderen Betriebssystem 
ähnlich Vorgehensweise erlaubt ist.


http://www.keil.com/support/man/docs/rlarm/rlarm_i...

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: SportlichSportlich (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

Autor: Russe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Laut Beschreibung soll CE echtzeitfähig sein. Ich erwarte kein 
Kollisionen, da ich nur einen Master habe, der die Daten sequenziell 
(mit Quittierung) an die Antriebe sendet.

Autor: SportlichSportlich (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Russe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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_a...
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.

Autor: Atmi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

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.