Guten Morgen, weiss jemand wie ein PC die RS232-Schnittstelle auf Treiberebene steuert? Greift das Betriebssystem auf BIOS-Funktionen zurück oder macht das Betriebssystem direkt den Zugriff auf den UART? Hintergrund der Frage ist dass ich auf der Suche nach entsprechendem Sourcecode bin, wie der UART angesprochen wird und Funktionen wie Hardware-Handshake etc. realisiert werden. Ralf
Das BIOS tut überhaupt nichts mehr, wenn es das Betriebssystem geladen hat. Das macht das OS alles selbst. Ausnahme: Krücken wie DOS und die alten DOS-basierten Windowse.
@Ralf, am besten einen Blick in den Linux Quellcode werfen. Gruss, Tobi
Hallo, @mechatroniker: Schade, hab ich befürchtet :( D.h. wenn ich basierend auf dem Quellcode eines OS einen UART ansteuere, heisst das nicht, dass es ein anderes OS genauso macht... @Tobi: Hört sich gut an, werd mich mal auf die Suche machen :) Danke an euch beide. Ralf
Hardware handshake ist eher was Triviales, sofern das UART 8250 kompatibel ist und einen Interrupt fuer eine Statusleitung generieren kann.
Langer Tag schrieb: > Hardware handshake ist eher was Triviales, sofern das UART 8250 > kompatibel ist und einen Interrupt fuer eine Statusleitung generieren > kann. Hallo, das Komplizierte daran ist, dass ja das System nicht stillgelegt werden darf, sondern eben alles über Interruptroutinen mit sehr kurzer Laufzeit abgewickelt werden muss - Warteschleife drehen bis ein Zeichen eintrifft ist absolut NoGo. Gruss Reinhard
@Rufus: Ich soll auf einem µC eine (echte) RS232-Schnittstelle implementieren, welche sich soweit wie möglich wie die Schnittstelle am PC verhält. Momentan ist noch nicht geklärt, ob der µC selbst die Signale generiert, oder ob evtl. ein 16550 kompatibler UART mit auf die Schaltung kommt. In beiden Fällen aber wäre der Sourcecode hilfreich, selbst wenn ich den Treiber komplett neu schreiben muss. Ralf
> welche sich soweit wie möglich wie die Schnittstelle am PC verhält.
Was soll das bedeuten? Die Schnittstelle am PC verhält sich so, wie sie
vom jeweiligen Programm und den vom OS verwendeten Devicetreibern
angesteuert wird - also schlimmstenfalls mal so, mal so und dann ganz
anders.
Hallo, so schlecht ist doch die Spezifikation von RS232 nun auch wieder nicht, daß man das nicht in Software nachbauen kann. Auch das Handshake ist letztlich kein Problem. Ist letztlich doch nur Bereitschaft melden, wenn zum Empfang bereit, schauen, ob die Gegenstelle zum Empfang bereit ist, wenn man senden will. Das muß nichtmal zwingend nach jedem Byte sein, alle üblichen UARTs schicken zwangsläufig ihren Buffer noch raus, wenn ihnen der Rechner mitteilt, daß die Gegenstelle nicht mehr will. Das passiert üblicherweise im Treiber, nicht in der UART-Hardware. Gruß aus Berlin Michael
http://wiki.osdev.org/Serial_ports http://www.easysw.com/~mike/serial/serial.html http://www.beyondlogic.org/serial/serial.htm http://www.linux.it/~rubini/docs/serial/serial.html http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=drivers/char/generic_serial.c Die Seiten haben mir sehr bei meiner UART-Implementierung geholfen.
Hallo, danke an alle für eure zahlreichen Antworten. Hört sich nicht so schwer an, wie ich zuerst dachte (lieber zittern als es zu locker nehmen grins). @Martin: Danke, da hab ich was zum Lesen :) Ralf
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.