Wieder mal ein seltsames Problem hier: PCI-Messkarten mit für Windows 2000 geschriebenem Treiber erzeugen Hardware-Interrupts, wenn sie Daten haben usw. Unter Windows 2000 klappt das alles einwandfrei, man kann nebenbei noch das GBit-Ethernet bedienen. 50MByte/s über die Netzwerkkarte und etwa 8000 Interrupts pro Sekunde von 4 solcher PCI-Messkarten. Kein Thema, Windows macht das locker mit, alles läuft prima. Bei dem Versuch, die ganze Sache auf Windows XP zu portieren, passieren ulkige Dinge: Die 2000 Hz Messfrequenz (also 8000 Interrupts pro Sekunde) werden nicht mehr erreicht. Ab etwa 900 Hz friert das komplette System ein. Maus, Tastatur, Netzwerk, alles tot. Bleibt alles stehen und kommt auch nach Stunden nicht wieder. Macht man jetzt gleichzeitig noch Netzwerk-Verkehr, kann man mit den Messkarten gar nix mehr machen, selbst bei langsamsten Messfrequenzen schmiert das System völlig ab. Kein BSOD, keine Fehlermeldung, nix. Friert einfach ein. Leider haben wir keinen Treiber-Experten mehr im Haus. Der, der den Treiber damals geschrieben und ausgiebig unter 2000 getestet hat, weiß auch erst mal nix genaues. Weiß jemand, ob Windows XP mit so vielen Interrupts pro Sekunde nicht klar kommt?
Hängt immer auch davon ab, wie lange die Interruptroutine den Rechner lahmlegt. Ließ sich das nicht über DMA lösen? Die Frage ist ja, ob der Bus oder die CPU der Flaschenhals ist. Wenn der Bus schuld ist, kann das Betriebssystem nicht viel damit zu tun haben (außer evtl. die Chipsatztreiber). Wenn die CPU schuld ist, wäre DMA auf jeden Fall 'ne Lösung. Gruß Kai
Die Daten werden selbstverständlich per DMA übertragen. Von der Hardware kann ja kaum ein Flaschenhals sein, denn unter Windows 2000 funktioniert das alles prima ohne Fehler. Die Netzwerkkarte hängt an PCI-Xpress, ist also ein anderer Bus. Das System ist ein Industrie-PC auf einer PCI-Backplane mit CPU-Karte (Core 2 Duo, 2,66GHz, 4GB RAM und Dual GBit-Ethernet an PCI-Xpress) Irgendwie scheint ja XP den Interrupt-Controller anders zu bedienen als 2000....sehr komisch.
Wenn ich das richtig verstehe wird für jede einzelne Messung ein Interrupt ausgelöst - widerspricht das nicht dem DMA-Konzept? Vielleicht liegt das Problem ja auch in der weiteren Verarbeitung der ankommenden Daten - z.B. dass sie nicht schnell genug weggeschrieben/komprimiert werden können. Was sagt denn der Taskmanager zur CPU-Auslastung, wenn du dich dem kritischen Wert näherst? Insbesondere auch das Verhältnis zw. Gesamtauslastung und Kernel-Zeiten. Kann im Moment auch nicht mehr machen als raten...
DIe Messdaten werden zuerst in einem FIFO auf der PCI Karte gespeichert, anschließend bekommt das System einen Interrupt, und holt darauf hin die Daten per DMA ab. Taskmanager ist noch lange nicht bei 100%, in der Nähe der Belastungsgrenze so ca 20...30 Prozent. Ohne andere Interrupts geht das ja gerade noch, aber mit Interrupts von der Netzwerkkarte ist dann Ruhe, da lässt sich auch kein Taskmanager mehr angucken. Die CPU ist aber vorher nicht ausgelastet, das muss irgendwo im Interrupt-Controller oder sowas liegen. Wir raten auch nur. Wie gesagt, wir haben hier keinen Treiber-Spezi.
Teilen sich die PCI-Karten evtl. denselben IRQ? Oder ist der Aufbau/System/Ausstattung mit der vom ursprünglichen Win2000-System identisch?
Es ist die gleiche Hardware-Konfig, nur das Betriebssystem per Wechselfestplatte geändert. IRQ teilen sie sich auf beiden Systemen (sogar exakt gleich). Jedoch nicht die Messkarten untereinander, sondern immer mal eine Messkarte mit einem anderen Systemgerät. IRQ-Sharing wird sich eh nicht vermeiden lassen, da der Rechner 16 PCI-Slots hat und auch in bestimmten Fällen mit 16 dieser Messkarten bestückt wird. Aber es läuft ja schon mit 4 Karten nicht. Sogar bei einer Karte bekommt man das System zum Stillstand. Vielleicht hilft es ja, den Treiber nochmal mit einem neueren WDK zu übersetzen. Das müssen wir wohl mal besorgen.
Vielleicht kommt ja auch der Treiber der Netzwerkkarte damit nicht klar.
vielleicht mal mit dem Perfmon analysieren, da werden ja die Interrupts/s, % Rechenzeit in Ints und DPCs usw. angezeigt. In den Systemeigenschaften könnte man noch unter Erweitert/Systemleistung/Erweitert mal auf optimale Leistung für Hintergrunddienste umstellen. Oder mal die Netzwerkverbindung deaktieren? Oder unnötige Protokolle/Dienste von der Netzwerkverbindung abklemmen?
Perfmon werde ich morgen mal testen. Netzwerkverbindung kann nicht deaktiviert werden, das System läuft dann bei seinem Einsatzzweck ohne Monitor und wird vom netzwerk aus bedient, und die Daten werden mit der maximalen Netzwerk-Geschwindigkeit weggestreamt. Protokolle sind nur TCP/IP drauf. Hintergrunddienste hat auch nix gebracht. Vermutlich liegt das Problem doch am Windows 2000 Treiber der Mess-Karte, denn ich hab vorhin mal noch dieses Verifier Tool gestartet, der Treiber hat einen IO Error (WDM Error 21f) erzeugt. Also muss da mal jemand ran, der Ahnung von der Sache hat. Jetzt haben wir erst mal Win 2k im Einsatz, da geht das netzwerk eh schneller, ist sogar dahingehend auch besser.
Ich würde auf Probleme mit dem Kartentreiber tippen - einfrierende Systeme gehen nicht selten auf sowas zurück. Installiere doch mal den MS Driver Verifier auf der Kiste - der wird schon maulen, wenn da der Wurm drin ist...
Hab ich ja getan, siehe letztes Posting. Und er hat mir ja gesagt, dass der Treiber nicht OK ist. Nun muss ich jemanden finden, der sich damit auskennt, oder mich selber in Treiber-Programmierung einarbeiten. Mal sehen. Danke schonma für alle Tipps.
Hmm handelt es sich um zugekaufte hardware oder von euch eine eigenentwicklung ? gekauft => denkt mal drüber nach das geld einem anderen unternehmen zu geben ... eigen => jackpot eine treiber entwicklung am besten ohne richtige doku ist quasi unendlich teuer
Christian R. wrote: > Hab ich ja getan, siehe letztes Posting. Und er hat mir ja gesagt, dass > der Treiber nicht OK ist. Na ja, vor Präzision strotzen tut das nicht, was du dort abgelassen hast. > Vermutlich liegt das Problem doch am Windows 2000 Treiber der > Mess-Karte, denn ich hab vorhin mal noch dieses Verifier Tool > gestartet, der Treiber hat einen IO Error (WDM Error 21f) erzeugt. > Also muss da mal jemand ran, der Ahnung von der Sache hat. Das ist mit Sicherheit kein IO Error, denn mit solchem Kleinkram gibt sich Driver Verifier nicht ab. Der Treiber ich nicht kompatibel zu XP und die Fehlermeldung gibt Auskunft, was nicht stimmt.
es gehen in jedem fall deutlich höhere messraten .... hab in dem bereich mal praktikum gemacht und sehr feine dinge gesehen ;)
>eigen => jackpot eine treiber entwicklung am besten ohne richtige doku >ist quasi unendlich teuer ACK - hab's mir verkniffen ;)
Naja, ich bin eben erst dabei, mich da einzuarbeiten. Die PCI-Karte und der Treiber wurde von "uns" vor einigen Jahren entwickelt. Ist auch alles gut dokumentiert worden, der Quelltext steht mir auch zur Verfügung. Nur ist der Treiber-Entwickler schon lange nicht mehr bei uns. Also muss/darf ich jetzt herausfinden, was da nicht stimmt. Normalerweise schreibe ich Software für µC, sowie VHDL für FPGAs, höchstens mal kleine Windows-Programme, also nicht gleich schlagen. Naja, nun kam irgendjemand auf die geniale Idee, statt Windows 2000 könne man ja mal Windows XP einsetzen. Und ich hab den Salat jetzt. Ich hab die verifier.exe gestartet und auf den entsprechenden Treiber angesetzt. Nach dem fälligen Neustart kam sofort ein Bluescreen mit: "IO Error.... (WDM Error 21f)" und dann der Treibernahme mit der entsprechenden Adresse. Naja, weiter bin ich heut nicht gekommen. Jetzt muss ich wohl zuerst mal das WDK besorgen und den Treiber nach VS2005 samt aktuellem WDK migrieren, und mich in die ganze Geschichte einarbeiten.
0x21f bzw. 543 deutet normalerweise auf einen Stackfehler hin (ERROR_BAD_STACK).
Danke. Wo kann man da nachschauen? Hab gestern schon langegegoogelt, aber keine Liste gefunden.
Ist es überhaupt noch sinnvoll, eine Neu-Entwicklung für XP zu forcieren? War da nicht was mit Verkaufsstop in der Mitte diesen Jahres? Oder läuft auf den Kisten ein XP Embedded (wann wird das eigentlich mal ersetzt?)?
Windows XP soll wohl noch bis 2014 oder so unterstützt werden, ist also sinnvoll. Ich glaub kaum, dass sich Vista in Industrie-Anlagen durchsetzt. Auf dem PC läuft Windows XP Professional. Naja, jetzt Windows 2000. XP Embedded ist halt schwer zu konfigurieren. Außerdem ist es ja keine neuentwicklung, lediglich der Treiber scheint anpassungsbedürftig.
Länger unterstützt wird es sicherlich (obwohl ich den von dir genannten Zeitraum bezweifle), aber wie ist es denn mit den Lizenzen? Oder geht es hier nur um firmeneigene Rechner und das ist kein Produkt, das verkauft werden soll? Sollte das verkauft werden habt ihr ziemlich bald ein Problem.
Zum Support: http://www.heise.de/newsticker/meldung/86083 Und ja, das Zeug wird auch öfters mal verkauft, allerdings liefern wir in den meisten Fällen die Rechner mit dazu. PCs mit 16 PCI-Slots, redundante 1kW-Netzteilen usw. gibts ja nicht von der Stange. Mit den Lizenzen hast du allerdings Recht, das ist eine Frechheit von MS. Niemand wird sich in einem Stahlwerk Vista auf einen Rechner installieren wollen, der 24/7 sehr performant laufen muss. Da muss man halt notfalls Lizenzen horten. Kosten ja im Vergleich zur Hardware nix.
Okay, ich hatte mal von anderen Supportzeiten gehört, kann aber durchaus schon länger her sein. >Da muss man halt notfalls Lizenzen horten. Kosten ja im Vergleich zur >Hardware nix. Wenn das gemacht wird, ist es ja kein Problem. Man muss nur rechtzeitig daran denken und es der Geschäftsleitung klar verständlich machen, dass mal ein ganzer Schwung Lizenzen gekauft werden muss.
Naja, das ist aber nebensächlich. Die Mess-Karten sind absolute Exoten, da verkaufen wir nicht viele davon. Und wenn, dann installieren wir eh die gesamte Prüfanlage mit allem, was dazu gehört. Viel wichtiger ist jetzt erst mal, den Treiber wenigstens XP-Kompatibel zu machen. Vista kommt später. Eigentlich wollen wir die alte PCI-Karte eh mal durch eine mit PCI-Express ablösen, aber das wird noch eine Weile dauern.
muß das System denn die Messwerte wieder schnell ausgeben? Die A/D Wandlerkarten haben doch i.d.R. onBoard Speicher um die Daten zu Puffern? Das OS alle halbe ms zu stören kostet schon einige Zeit.
Es muss mit den Daten rechnen. Die FIFOs auf den Karten, die die Messwerte (80MHz Abtastrate) puffern sind nicht besonders groß, und nach jeder Messung müssen die Daten an das System zur weiteren Berechnung geschickt werden. Das Mess- und Auswerteverfahren lässt halt nix anderes zu. Unter 2000 geht das ja prima, sogar noch schneller, und Netzwerk nebenbei, das System kommt also durchaus damit klar. Nur der Treiber ist wohl nicht XP-tauglich.
Christian R. wrote: > Danke. Wo kann man da nachschauen? Hab gestern schon langegegoogelt, > aber keine Liste gefunden. http://msdn2.microsoft.com/en-us/library/ms681381%28VS.85%29.aspx Weitere Details gibt's afair nur im DDK bzw. aktuelleren WDK http://www.microsoft.com/whdc/devtools/ddk/default.mspx http://www.microsoft.com/whdc/devtools/tools/default.mspx
W2k arbeitet noch mit dem alten NT4-Treibermodell, mit XP begann die Einführung des WDM (Windows Driver Model). Für die Portierung wirst du den Treiberrahmen wohl ziemlich umschreiben müssen. Die beste Methode, das hinzubekommen ist, einen ähnlichen Treiber in den WDK-Beispielen zu suchen und dort deinen Anwendungscode einzubauen. Sieh dir mal das Toaster-Beispiel an...
@ Christian R. (supachris): Bist Du irgendwie weitergekommen ? Neues Treibermodell schon umgesetzt und Erfolg gehabt ? Gruß Sven
Also der Treiber war bereits WDM-kompatibel. Das Problem konnte auf die fehlende Mehrprozzesor-fähigkeit des Treibers eingekreist werden. Wird demnächst von einem externen Treiber-Spezi behoben.
>W2k arbeitet noch mit dem alten NT4-Treibermodell, mit XP begann die >Einführung des WDM (Windows Driver Model). Für die Portierung wirst du >den Treiberrahmen wohl ziemlich umschreiben müssen. So ein Quark. Selbst das rotzige Windows98 arbeitet mit dem WDM. Wo hast Du denn die Fehlinfo her?
Jo, das hatte mich auch gewundert. naja, der Treiber war ursprünglich für NT4 geschrieben, wurde dann für 2000 angepasst, auf WDM. Allerdings klappts eben mit aktuellen Mehrkernprozessoren nicht, bei hoher Systemlast (viele Hardware-Interrupts) kommt offensichtlich was durchnander und das System steht. Müssen wir halt machen lassen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.