<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Windows Kernelmodetreiber echtzeitfähig?]]></title><description><![CDATA[<p>Hallo,</p>
<p>Es geht darum, Hardware über ein abgewandeltes I<sup>2</sup>C Protokoll zu testen.<br />
Der Bus soll dabei über die parallele Schnittstelle simuliert werden.</p>
<p>Da im vorliegenden Fall die Genauigkeit im Mikrosekundenbereich liegen muss<br />
(es soll getestet werden, ob sich die angeschlossene Hardware an die<br />
Spezifikation hält und die schreibt z. B. vor T1 = 50..1000 µsec vor),<br />
scheidet eine Anwendung im Usermode definitiv aus.</p>
<p>Das ganze sollte ohne Zusatzhardware unter WinXP laufen, da die Software an mehreren<br />
Rechnern zum Einsatz kommen soll und Platinen lassen sich so schlecht<br />
mittels Copy + Paste verteilen...</p>
<p>Hab leider noch nie einen Treiber geschrieben.<br />
Aber wenn ich mir das hier: <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-178708-and-highlight-is-driver.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-178708-and-highlight-is-driver.html</a><br />
bzw. auch MSDN durchles,<br />
dann müsste sich sowas doch in einer Interrupt Routine (=höchste Priorität) machen lassen.<br />
Man müsste halt in Kauf nehmen, dass der Rechner auf nichts anderes reagiert, solange der Test läuft.</p>
<p>Zusammenfassung:<br />
Ist es möglich, einen Pin vom Druckerport für z. B. 70 Mikrosekunden auf 'high' zu setzen.</p>
<p>Thx<br />
Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/180605/windows-kernelmodetreiber-echtzeitfähig</link><generator>RSS for Node</generator><lastBuildDate>Sat, 04 Jul 2026 00:06:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/180605.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 04 May 2007 14:28:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Windows Kernelmodetreiber echtzeitfähig? on Fri, 04 May 2007 14:28:07 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Es geht darum, Hardware über ein abgewandeltes I<sup>2</sup>C Protokoll zu testen.<br />
Der Bus soll dabei über die parallele Schnittstelle simuliert werden.</p>
<p>Da im vorliegenden Fall die Genauigkeit im Mikrosekundenbereich liegen muss<br />
(es soll getestet werden, ob sich die angeschlossene Hardware an die<br />
Spezifikation hält und die schreibt z. B. vor T1 = 50..1000 µsec vor),<br />
scheidet eine Anwendung im Usermode definitiv aus.</p>
<p>Das ganze sollte ohne Zusatzhardware unter WinXP laufen, da die Software an mehreren<br />
Rechnern zum Einsatz kommen soll und Platinen lassen sich so schlecht<br />
mittels Copy + Paste verteilen...</p>
<p>Hab leider noch nie einen Treiber geschrieben.<br />
Aber wenn ich mir das hier: <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-178708-and-highlight-is-driver.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-178708-and-highlight-is-driver.html</a><br />
bzw. auch MSDN durchles,<br />
dann müsste sich sowas doch in einer Interrupt Routine (=höchste Priorität) machen lassen.<br />
Man müsste halt in Kauf nehmen, dass der Rechner auf nichts anderes reagiert, solange der Test läuft.</p>
<p>Zusammenfassung:<br />
Ist es möglich, einen Pin vom Druckerport für z. B. 70 Mikrosekunden auf 'high' zu setzen.</p>
<p>Thx<br />
Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1278839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1278839</guid><dc:creator><![CDATA[anonymus]]></dc:creator><pubDate>Fri, 04 May 2007 14:28:07 GMT</pubDate></item><item><title><![CDATA[Reply to Windows Kernelmodetreiber echtzeitfähig? on Fri, 04 May 2007 15:31:26 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-1819.html" rel="nofollow">rüdiger</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-8.html" rel="nofollow">Rund um die Programmierung</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-4.html" rel="nofollow">WinAPI</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1278877</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1278877</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Fri, 04 May 2007 15:31:26 GMT</pubDate></item><item><title><![CDATA[Reply to Windows Kernelmodetreiber echtzeitfähig? on Sat, 05 May 2007 01:28:14 GMT]]></title><description><![CDATA[<p>{EDIT] <em>Müll :<br />
Ein Takrate von 50 us entspricht auf nem 3GHz Proz 167 CPU Takten - hier incl des INT und des IRET(!).</em><br />
[/EDIT]</p>
<p>Das heisst dass Du den IRQ Controller so programmieren musst das er nur noch das LPT-IRQ durchlässt - wenn die CPU nämlich gerade ein INT(R) abarbeitet sind alle anderen INTS blockiert ausse #2 ( = NMI ) und dann wärs schon zu langsam.</p>
<p>{EDIT] <em>Müll :<br />
ABER : Wie will Du das die Taktung über LPT überhaupt realisieren? Vielleicht sthe ich ja grad im Feld aber die hat doch viel höhrere Latenzzeiten, oder?</em>[/EDIT]</p>
<p>Grüsse</p>
<p>*this</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1278901</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1278901</guid><dc:creator><![CDATA[Gast++]]></dc:creator><pubDate>Sat, 05 May 2007 01:28:14 GMT</pubDate></item><item><title><![CDATA[Reply to Windows Kernelmodetreiber echtzeitfähig? on Fri, 04 May 2007 21:56:00 GMT]]></title><description><![CDATA[<p>3GHz == 3 Milliarden<br />
=&gt; Die CPU müsste doch im Nanosekundenbereich ihre Befehle abarbeiten?</p>
<p>Was die LPT angeht:<br />
Es existiert bereits ein DOS basiertes Tool, welches funktioniert.<br />
Ich muss zugeben, dass ich noch nicht nachgemessen hab, ob das wirklich auf<br />
die Mikrosekunde genau geht, aber es läuft zumindest ausreichend genau.<br />
Drum geh ich davon aus, dass die Geschwindigkeit der Schnittstelle das geringste<br />
Problem darstellt.</p>
<p>Dann läßt sich also sagen, dass es mit einem Kerneltreiber funktioniert,<br />
unter der Voraussetzung, dass die Schnittstelle mitspielt?</p>
<p>Werd mich dann mal in die Treibergeschichte einlesen und vielleicht um<br />
die eine oder andere Erkenntnis reicher werden.</p>
<p>Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1279019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1279019</guid><dc:creator><![CDATA[anonymus]]></dc:creator><pubDate>Fri, 04 May 2007 21:56:00 GMT</pubDate></item><item><title><![CDATA[Reply to Windows Kernelmodetreiber echtzeitfähig? on Fri, 04 May 2007 22:57:21 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title="*)"
      alt="😉"
    /> Windows (egal welche Version) ist ohne eigene &quot;Extensions&quot; nicht Echtzeitfähig. Mit einem Treiber kann man zwar die durchschnittlichen Latenzzeiten deutlich verkürzen, ändert aber Grundsätzlich nix.<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title="*)"
      alt="😉"
    /> Mikrosekundenbereich kannst du IMHO vergessen. Auf ~~1ms ja, vielleicht, mit Bauchweh, aber auch nur wenn nix wichtiges davon abhängt.<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title="*)"
      alt="😉"
    /> Mit selektierter Hardware und selektierten Treibern sollte deutlich weniger als ~~1ms möglich sein, ob man in den Microsekundenbereich kommt ... weiss nicht ... mich würde es wundern. Kritisch darf die Anwendung aber auch mit selektierter Hardware nicht sein.<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title="*)"
      alt="😉"
    /> Nicht selektierte PC Hardware ist - egal welches OS - nicht Echtzeitfähig, da es immer noch das BIOS gibt, und dieses oft den SMI (den du softwaremässig nicht maskieren kannst, zumindest gibt es keinen Standard dafür) verwendet um diverse Hardware Fehler auszubügeln.</p>
<blockquote>
<p>Dann läßt sich also sagen, dass es mit einem Kerneltreiber funktioniert,<br />
unter der Voraussetzung, dass die Schnittstelle mitspielt?</p>
</blockquote>
<p>Nein (siehe oben).<br />
EDIT:</p>
<blockquote>
<p>dann müsste sich sowas doch in einer Interrupt Routine (=höchste Priorität) machen lassen.</p>
</blockquote>
<p>Du brauchst keinen ISR, du brauchst wenn dann KeRaiseIrql(). Wenn du damit auf CLOCK_LEVEL oder sowas brutales hochgehst ist das so ziemlich das Beste was du mit Windows hinbekommen wirst.<br />
Aber selbst dann kannst du noch von diversen Dingen für (relativ) kurze Zeit unterbrochen werden.<br />
Wenn dann ein Interrupt getriggert wird, während dein Thread mit z.B. CLOCK_LEVEL läuft, dann wird der zuständige ISR zwar nicht ausgeführt, aber es kann sein dass der Interrupt Handler von Windows selbst noch angesprungen wird, und erst dort dann die Interrupts gesperrt, damit dein Thread weitermachen kann. Das erfordert ein paar Port Zugriffe, und die sind oft ordentlich langsam.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1279049</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1279049</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 04 May 2007 22:57:21 GMT</pubDate></item><item><title><![CDATA[Reply to Windows Kernelmodetreiber echtzeitfähig? on Fri, 04 May 2007 23:06:42 GMT]]></title><description><![CDATA[<p>probier's einfach aus:<br />
disable alle interrupts, toggle mit hoher frequenz den druckerport und schliess ein oszilloskop an (am besten eins, das auf anomalien triggerbar ist, wie verlängerte pulse oder pausen). wenn ein sauberes signal zu sehen ist, also ohne irgendwelche aussetzer, dann funzt es.<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
btw: i2c ist sowieso nicht besonders zeitkritisch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1279054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1279054</guid><dc:creator><![CDATA[pale dog]]></dc:creator><pubDate>Fri, 04 May 2007 23:06:42 GMT</pubDate></item><item><title><![CDATA[Reply to Windows Kernelmodetreiber echtzeitfähig? on Sat, 05 May 2007 01:16:37 GMT]]></title><description><![CDATA[<p>anonymus schrieb:</p>
<blockquote>
<p>3GHz == 3 Milliarden<br />
=&gt; Die CPU müsste doch im Nanosekundenbereich ihre Befehle abarbeiten?</p>
</blockquote>
<p>Aeehh, ja, kleiner Rechenfehler von mir...<br />
Vergiss also am besten mein Geschwätz von gestern. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Grüsse</p>
<p>*this</p>
<p>P.S.: Wer lacht da? Einstein hat sich afaik mal um über 60 Grössenordnungen verschätzt - bei mir waren's nur drei!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1279090</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1279090</guid><dc:creator><![CDATA[Gast++]]></dc:creator><pubDate>Sat, 05 May 2007 01:16:37 GMT</pubDate></item><item><title><![CDATA[Reply to Windows Kernelmodetreiber echtzeitfähig? on Sun, 06 May 2007 09:26:13 GMT]]></title><description><![CDATA[<p>Gast++ schrieb:</p>
<blockquote>
<p>anonymus schrieb:</p>
<blockquote>
<p>3GHz == 3 Milliarden<br />
=&gt; Die CPU müsste doch im Nanosekundenbereich ihre Befehle abarbeiten?</p>
</blockquote>
<p>Aeehh, ja, kleiner Rechenfehler von mir...<br />
Vergiss also am besten mein Geschwätz von gestern. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Grüsse</p>
<p>*this</p>
<p>P.S.: Wer lacht da? Einstein hat sich afaik mal um über 60 Grössenordnungen verschätzt - bei mir waren's nur drei!</p>
</blockquote>
<p>Sind denn 3GHz nicht 3 Milliarden Takte pro sekunde?<br />
kilo = tausend.<br />
mega = millionen<br />
giga = milliarden</p>
<p>1 Nanosekunde = 1000 Picosekunden = 10^-9 Sekunden<br />
also 3 Takte pro Nanosekunde. Oder verrechne ich mich auch?</p>
<p>oder etwa nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1279571</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1279571</guid><dc:creator><![CDATA[NisterX]]></dc:creator><pubDate>Sun, 06 May 2007 09:26:13 GMT</pubDate></item><item><title><![CDATA[Reply to Windows Kernelmodetreiber echtzeitfähig? on Sun, 06 May 2007 09:58:45 GMT]]></title><description><![CDATA[<p>Ja es sind genau 333,3... pikosekunden pro takt:<br />
3Ghz = 3.000.000.000 Hz<br />
1 Takt = 3,333... * 10^-10 sekunden | *1000<br />
1 Takt = 3,333... * 10^-7 ms | *1000<br />
1 Takt = 3,333... * 10^-4 µs | *1000<br />
1 Takt = 0,333... ns | *1000<br />
1 Takt = 333,3... ps</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1279583</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1279583</guid><dc:creator><![CDATA[Dennis123]]></dc:creator><pubDate>Sun, 06 May 2007 09:58:45 GMT</pubDate></item><item><title><![CDATA[Reply to Windows Kernelmodetreiber echtzeitfähig? on Sun, 06 May 2007 12:10:49 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title="*)"
      alt="😉"
    /> Windows (egal welche Version) ist ohne eigene &quot;Extensions&quot; nicht Echtzeitfähig. Mit einem Treiber kann man zwar die durchschnittlichen Latenzzeiten deutlich verkürzen, ändert aber Grundsätzlich nix.<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title="*)"
      alt="😉"
    /> Mikrosekundenbereich kannst du IMHO vergessen. Auf ~~1ms ja, vielleicht, mit Bauchweh, aber auch nur wenn nix wichtiges davon abhängt.<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title="*)"
      alt="😉"
    /> Mit selektierter Hardware und selektierten Treibern sollte deutlich weniger als ~~1ms möglich sein, ob man in den Microsekundenbereich kommt ... weiss nicht ... mich würde es wundern. Kritisch darf die Anwendung aber auch mit selektierter Hardware nicht sein.<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title="*)"
      alt="😉"
    /> Nicht selektierte PC Hardware ist - egal welches OS - nicht Echtzeitfähig, da es immer noch das BIOS gibt, und dieses oft den SMI (den du softwaremässig nicht maskieren kannst, zumindest gibt es keinen Standard dafür) verwendet um diverse Hardware Fehler auszubügeln.</p>
<blockquote>
<p>Dann läßt sich also sagen, dass es mit einem Kerneltreiber funktioniert,<br />
unter der Voraussetzung, dass die Schnittstelle mitspielt?</p>
</blockquote>
<p>Nein (siehe oben).<br />
EDIT:</p>
<blockquote>
<p>dann müsste sich sowas doch in einer Interrupt Routine (=höchste Priorität) machen lassen.</p>
</blockquote>
<p>Du brauchst keinen ISR, du brauchst wenn dann KeRaiseIrql(). Wenn du damit auf CLOCK_LEVEL oder sowas brutales hochgehst ist das so ziemlich das Beste was du mit Windows hinbekommen wirst.<br />
Aber selbst dann kannst du noch von diversen Dingen für (relativ) kurze Zeit unterbrochen werden.<br />
Wenn dann ein Interrupt getriggert wird, während dein Thread mit z.B. CLOCK_LEVEL läuft, dann wird der zuständige ISR zwar nicht ausgeführt, aber es kann sein dass der Interrupt Handler von Windows selbst noch angesprungen wird, und erst dort dann die Interrupts gesperrt, damit dein Thread weitermachen kann. Das erfordert ein paar Port Zugriffe, und die sind oft ordentlich langsam.</p>
</blockquote>
<p>Das macht natürlich wenig Hoffnung.<br />
Wenn da nicht weniger als eine Millisekunde drin ist.<br />
5-6 ms Reaktionszeit kriegt man ja schon im Usermode hin<br />
(gut, nicht garantiert, aber gemessen hab ich nie mehr...)</p>
<p>Von einem Treiber hätt ich mir doch einiges mehr erwartet.</p>
<p>Sorry, was ist &quot;selektierte Hardware&quot;? Google bringt mich ned wirklich weiter.</p>
<p>Najo, jetzt geht's erstmal a paar Tage nach Italien.<br />
Und dann mal schaun, wie's weitergeht.<br />
Aber schaut dann wohl ned so gut aus...</p>
<p>mfg<br />
Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1279630</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1279630</guid><dc:creator><![CDATA[anonymus]]></dc:creator><pubDate>Sun, 06 May 2007 12:10:49 GMT</pubDate></item><item><title><![CDATA[Reply to Windows Kernelmodetreiber echtzeitfähig? on Sun, 06 May 2007 21:00:46 GMT]]></title><description><![CDATA[<p>selektiert: ausgewählt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1279960</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1279960</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 06 May 2007 21:00:46 GMT</pubDate></item><item><title><![CDATA[Reply to Windows Kernelmodetreiber echtzeitfähig? on Mon, 07 May 2007 08:36:15 GMT]]></title><description><![CDATA[<p>gerade neue News bei tecchanel, da musste ich gleich hieran denken <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
<a href="http://www.tecchannel.de/news/themen/entwicklung/470000/index.html" rel="nofollow">http://www.tecchannel.de/news/themen/entwicklung/470000/index.html</a></p>
<p>schirrmie</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280106</guid><dc:creator><![CDATA[schirrmie]]></dc:creator><pubDate>Mon, 07 May 2007 08:36:15 GMT</pubDate></item><item><title><![CDATA[Reply to Windows Kernelmodetreiber echtzeitfähig? on Wed, 16 May 2007 10:34:25 GMT]]></title><description><![CDATA[<p>schirrmie schrieb:</p>
<blockquote>
<p>gerade neue News bei tecchanel, da musste ich gleich hieran denken <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
<a href="http://www.tecchannel.de/news/themen/entwicklung/470000/index.html" rel="nofollow">http://www.tecchannel.de/news/themen/entwicklung/470000/index.html</a></p>
</blockquote>
<p>Hab mich da mal a bissl eingelesen und das schaut ganz vernünftig aus.</p>
<p>Allerdings macht das von Hustbaer vorgeschlagene &quot;KeRaiseIrql()&quot;<br />
auch eine ganz gute Figur.</p>
<p>Da werd ich jetzt einfach mal viel lesen müssen.<br />
Anhaltspunkte hab ich jetzt zumindest schon mal.</p>
<p>Thx @all.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1286046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1286046</guid><dc:creator><![CDATA[anonymus]]></dc:creator><pubDate>Wed, 16 May 2007 10:34:25 GMT</pubDate></item><item><title><![CDATA[Reply to Windows Kernelmodetreiber echtzeitfähig? on Wed, 16 May 2007 12:54:30 GMT]]></title><description><![CDATA[<p>hallo</p>
<p>WIndows XP ist grundsätzlich nicht Echtzeitfähig, allerdings kann mit einigen Tricks schon sehr zeitkritische Anwendungen realisieren. Dein Problem sollte sich mit einem Kernelmodetreiber eigentlich locker realisieren lassen, sofern die Hardware mitspielt. Als beispiel kann man im Kernelmode Timer Initialisieren (XP), welche in 100 ns Intervall angegeben werden.<br />
Millisekunden sollten da ebenso möglich sein.<br />
Allerding ist die einarbeitung in dieses Thema schon recht aufwendig und die Dokomentatinen recht rar, ausser das Windows DDK.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1286162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1286162</guid><dc:creator><![CDATA[anonym]]></dc:creator><pubDate>Wed, 16 May 2007 12:54:30 GMT</pubDate></item><item><title><![CDATA[Reply to Windows Kernelmodetreiber echtzeitfähig? on Wed, 16 May 2007 14:08:39 GMT]]></title><description><![CDATA[<p>IIRC kann man zwar in 100ns Schritten das Timeout angeben, der Timer wird aber dadurch nicht genauer. D.h. die Genauigkeit mit der der dann feuert ist genauso durch die Frequenz mit der der Scheduler aufgerufen wird begrenzt. Also üblicherweise ~15ms bzw. minimal 1ms wenn man die Frequenz &quot;runterdreht&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1286220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1286220</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 16 May 2007 14:08:39 GMT</pubDate></item><item><title><![CDATA[Reply to Windows Kernelmodetreiber echtzeitfähig? on Wed, 16 May 2007 21:44:20 GMT]]></title><description><![CDATA[<p>Hab mir das Protokoll nochmal genauer angeschaut und muss sagen, dass es eigentlich keine Echtzeitimplementierung in dem Sinne ist, dass innerhalb einer bestimmten Zeit auf ein Ereignis reagiert werden muss.</p>
<p>Vielmehr ist es so, dass es (fast) egal ist (ca. 10 ms dürfen vergehen, und die sollte man sogar im Usermode hingekommen, zumindest warens über RS232 mal ~6ms) wann eine Funktion abgearbeitet wird,<br />
es muss nur sichergestellt sein, dass sie, wenn sie mal arbeitet, nicht mehr<br />
unterbrochen wird.<br />
Und das müsste mit dem &quot;KeRaiseIrql()&quot; doch möglich sein, mit allen Einschränkungen die sich draus ergeben (hab ein Dokument gefunden, wo drin steht,<br />
dass man z. B. drauf achten muss, dass man keinen Speicher verwendet, der<br />
ausgelagert werden kann, falls das Level höher als XX gewählt wird).</p>
<p>Was ich dann allerdings brauch ist eine Counter, den man abfragen kann, wieviel Zeit vergangen ist, so dass man in einer Schleife eine bestimmte Zeit warten kann.</p>
<p>Der Time Stamp Counter wäre zwar so ein Kandidat, aber was ich so gelesen hab, ist der nicht allzu verlässlich (grade in Systemen mit mehr als einem Kern weil dann zwei Counter laufen, die nicht zwingend gleiche Werte haben, auch Hyperthreading soll da schon Probleme machen... oder falls die Taktfrequenz von der Last abhängt)<br />
Auf der anderen Seite, wenn der Code nicht unterbrochen wird, dann müsste doch sichergestellt sein, dass er nur auf einem Kern läuft und somit müsste der TSC trotzdem OK sein.</p>
<p>APIC timer wäre evtl. eine Alternative, aber da hab ich noch nix gefunden, wie man da rankommt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1286539</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1286539</guid><dc:creator><![CDATA[anonymus]]></dc:creator><pubDate>Wed, 16 May 2007 21:44:20 GMT</pubDate></item><item><title><![CDATA[Reply to Windows Kernelmodetreiber echtzeitfähig? on Wed, 16 May 2007 23:35:23 GMT]]></title><description><![CDATA[<p>anonymus schrieb:</p>
<blockquote>
<p>APIC timer wäre evtl. eine Alternative, aber da hab ich noch nix gefunden, wie man da rankommt...</p>
</blockquote>
<p><a href="http://www.microsoft.com/whdc/system/CEC/mm-timer.mspx" rel="nofollow">http://www.microsoft.com/whdc/system/CEC/mm-timer.mspx</a><br />
<a href="http://rtg.informatik.tu-chemnitz.de/docs/vortraege/def-sa-wiet.pdf" rel="nofollow">http://rtg.informatik.tu-chemnitz.de/docs/vortraege/def-sa-wiet.pdf</a><br />
<a href="http://plan9.bell-labs.com/sources/plan9/sys/src/9/pc/apic.c" rel="nofollow">http://plan9.bell-labs.com/sources/plan9/sys/src/9/pc/apic.c</a><br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1286570</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1286570</guid><dc:creator><![CDATA[pale dog]]></dc:creator><pubDate>Wed, 16 May 2007 23:35:23 GMT</pubDate></item><item><title><![CDATA[Reply to Windows Kernelmodetreiber echtzeitfähig? on Thu, 17 May 2007 00:00:30 GMT]]></title><description><![CDATA[<p>Für &quot;muss in 10ms erledigt sein&quot; wird's KeRaiseIrql wohl tun, aber ganz &quot;ununterbrochen&quot; läuft man auch dann nicht - wenn ein Interrupt auftritt kann das schnell mal ein Unterbrechung von ein paar hundert oder tausend nanos sein, selbst wenn der Interrupt einen niedrigeren IRQL hat als der mit dem man gerade läuft. Nur zur Info. (Wie lange solche Unterbrechungen genau sein werden, und wie oft man damit rechnen muss kann niemand so genau sagen, das hängt u.A. auch von der verwendeten Hardware ab, und was das System gerade noch tut).</p>
<p>Vonwegen Timer ... warten kannst du mit KeStallExecutionProcessor (busy wait). Längere Zeiten kann man mit KeDelayExecutionThread warten, allerdings nur auf PASSIVE_LEVEL, und nur mit sehr grober Auflösung.</p>
<p>Ansonsten gibt es noch KeQueryInterruptTime (was wahrscheinlich zu ungenau sein wird) und KeQueryPerformanceCounter. Ob KeQueryPerformanceCounter für dich funktionieren wird kann ich nicht sagen, ich hab' mit dem performance counter auf jeden Fall schlechte Erfahrungen gemacht, allerdings war das im Usermode.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1286576</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1286576</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 17 May 2007 00:00:30 GMT</pubDate></item><item><title><![CDATA[Reply to Windows Kernelmodetreiber echtzeitfähig? on Mon, 25 Jun 2007 14:12:15 GMT]]></title><description><![CDATA[<p>kann mir jemand sagen was es mit den isa/pci-steckkarten auf sich hat die eigene timer haben? kann man die für sowas gebrauchen oder sind die nur zum zeitmessen da um den wert dann auszulesen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313391</guid><dc:creator><![CDATA[zorstn]]></dc:creator><pubDate>Mon, 25 Jun 2007 14:12:15 GMT</pubDate></item><item><title><![CDATA[Reply to Windows Kernelmodetreiber echtzeitfähig? on Mon, 23 Jul 2007 15:01:49 GMT]]></title><description><![CDATA[<p>Zur Info:<br />
Hab's jetzt nachgemessen:</p>
<p>Die Signalzeiten werden auf ca. 2µsec genau eingehalten.<br />
=&gt; gut so.</p>
<p>Falls die Reaktionszeit interessiert:<br />
Wenn sich an einem Pin der parallelen Schnittstelle ein Wert ändert,<br />
läßt sich innerhalb von 3µsec ein anderer Pin ändern.<br />
=&gt; auch gut.</p>
<p>Übrigens waren 3µsec auch die minimalen Signalzeiten, weniger war nicht möglich.</p>
<p>Dazu Interrupts mittels _asm{cli} deaktiviert, im Anschluss mit _asm{sti} wieder aktiviert.<br />
Ab IRQL 28 auch brauchbare Ergebnisse in ähnlicher Größenordnung,<br />
alles unter 28 ist grauenhaft <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
<p>mfg<br />
Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1330908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1330908</guid><dc:creator><![CDATA[anonymus]]></dc:creator><pubDate>Mon, 23 Jul 2007 15:01:49 GMT</pubDate></item><item><title><![CDATA[Reply to Windows Kernelmodetreiber echtzeitfähig? on Mon, 23 Jul 2007 17:12:36 GMT]]></title><description><![CDATA[<p>Windows (NT/W2k/XP) ist *nicht* Echtezeitfähig... somit kann es auch keine Treiber geben die Echtzeitfähig sind!!!</p>
<p>Die ganze Diskussion hier ist Sinnlos...</p>
<p>Echtzeit heisst *nicht* so schnell wie möglich, sondern es heisst &quot;deterministisch&quot;!!!!</p>
<p>Und das ist nun mal unter Windows (NT und höher) nicht gegeben!!!!</p>
<p>Wenn irgendjemand einen Treiber schreibt der (aus versehen) mal 10 Sekunden braucht (innerhalb CLI), dann haben die anderen Treiber halt Pech gehabt!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1331012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331012</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Mon, 23 Jul 2007 17:12:36 GMT</pubDate></item><item><title><![CDATA[Reply to Windows Kernelmodetreiber echtzeitfähig? on Mon, 23 Jul 2007 17:22:37 GMT]]></title><description><![CDATA[<p>Jochen Kalmbach schrieb:</p>
<blockquote>
<p>Windows (NT/W2k/XP) ist *nicht* Echtezeitfähig... somit kann es auch keine Treiber geben die Echtzeitfähig sind!!!</p>
</blockquote>
<p>kann es wohl. windows ist nicht allmächtig.</p>
<p>Jochen Kalmbach schrieb:</p>
<blockquote>
<p>!!!!<br />
!!!!</p>
</blockquote>
<p><a href="http://storage9.myopera.com/AlchemicalSecrets/albums/290842/omg1.png" rel="nofollow">http://storage9.myopera.com/AlchemicalSecrets/albums/290842/omg1.png</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1331022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331022</guid><dc:creator><![CDATA[Undertaker]]></dc:creator><pubDate>Mon, 23 Jul 2007 17:22:37 GMT</pubDate></item><item><title><![CDATA[Reply to Windows Kernelmodetreiber echtzeitfähig? on Tue, 24 Jul 2007 00:52:53 GMT]]></title><description><![CDATA[<p>Undertaker schrieb:</p>
<blockquote>
<p>Jochen Kalmbach schrieb:</p>
<blockquote>
<p>Windows (NT/W2k/XP) ist *nicht* Echtezeitfähig... somit kann es auch keine Treiber geben die Echtzeitfähig sind!!!</p>
</blockquote>
<p>kann es wohl.</p>
</blockquote>
<p>Ja, träum weiter, Kind. Dass hier ein WINDOWS Treiber gemeint war sollte wohl klar sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1331211</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331211</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 24 Jul 2007 00:52:53 GMT</pubDate></item><item><title><![CDATA[Reply to Windows Kernelmodetreiber echtzeitfähig? on Tue, 24 Jul 2007 02:01:11 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Dass hier ein WINDOWS Treiber gemeint war sollte wohl klar sein.</p>
</blockquote>
<p>du weisst nicht, das man mit code, der im ring0 ausgeführt wird, nahezu alles anstellen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1331221</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331221</guid><dc:creator><![CDATA[Undertaker]]></dc:creator><pubDate>Tue, 24 Jul 2007 02:01:11 GMT</pubDate></item><item><title><![CDATA[Reply to Windows Kernelmodetreiber echtzeitfähig? on Tue, 24 Jul 2007 09:47:00 GMT]]></title><description><![CDATA[<p>Undertaker schrieb:</p>
<blockquote>
<p>du weisst nicht, das man mit code, der im ring0 ausgeführt wird, nahezu alles anstellen kann?</p>
</blockquote>
<p>Und genau das ist das Problem!!! Ich glaube Du hast mein Post nicht richtig gelesen...</p>
<p>Wenn *Du* alles machen kannst, dann können *andere* auch alles machen und dann ist Dein determinismus wieder dahin!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1331358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331358</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Tue, 24 Jul 2007 09:47:00 GMT</pubDate></item><item><title><![CDATA[Reply to Windows Kernelmodetreiber echtzeitfähig? on Tue, 24 Jul 2007 11:42:21 GMT]]></title><description><![CDATA[<p>Undertaker schrieb:</p>
<blockquote>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Dass hier ein WINDOWS Treiber gemeint war sollte wohl klar sein.</p>
</blockquote>
<p>du weisst nicht, das man mit code, der im ring0 ausgeführt wird, nahezu alles anstellen kann?</p>
</blockquote>
<ol>
<li>
<p>Du kannst selbst in Ring 0 den SMI nicht loswerden, und das war's dann schonmal mit echtzeitfähig.</p>
</li>
<li>
<p>Was Windows angeht: klar kannst du alle Interrupt abdrehen und lala und lalubb, bloss andere können das auch.<br />
Dass ein OS echtzeitfähig ist heisst NICHT dass man es &quot;anhalten&quot; kann, damit man dann diverse blöde polling Schleifen laufen lassen kann während alles andere steht um eben &quot;echtzeit&quot; zu bekommen.<br />
Dass ein OS echtzeitfähig ist heisse dass man eben NICHT das OS anhalten oder sonstwie stören muss und TROTZDEM garantiert bekommt dass z.B. Interrupts mit einer max. Latenz aufgerufen werden. Und genau das geht unter Windows NICHT.</p>
</li>
</ol>
<p><strong>Windows<br />
ist<br />
&gt; NICHT &lt;<br />
echtzeitfähig</strong><br />
!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1331456</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331456</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 24 Jul 2007 11:42:21 GMT</pubDate></item></channel></rss>