Kann vom Benutzerbereich aus direkt auf die Hardware zugegriffen werden?

Kann vom Benutzerbereich aus direkt auf die Hardware zugegriffen werden?

Bei der Arbeit haben wir einige eingebettete Geräte, die von DOS-Software gesteuert werden. Mir wurde die Aufgabe übertragen, die Verwendung von Linux als Ersatzbetriebssystem für DOS auf einer Hardware der nächsten Generation zu beurteilen. Meine Recherchen führen mich zu dem Schluss, dass DOS einfach eine völlig andere Art von Betriebssystem ist, mit dem man potenziell gefährliche Dinge tun kann, wenn man das möchte. Meines Wissens nach müsste man einen benutzerdefinierten Treiber schreiben, wenn man direkt auf die Hardware zugreifen möchte. Um die Neugier meines Chefs zu befriedigen, muss ich Folgendes wissen:Ist es überhaupt möglich, direkt vom Benutzerbereich auf die Hardware zuzugreifen???

Ich vermute, das ist nicht der Fall, aber ich würde gern die Meinung von Leuten einholen, die weitaus mehr wissen als ich.

Antwort1

Ja, aber es ist selten nützlich. Auf 32-Bit-x86-Systemen können Sie den ioperm(2)Systemaufruf verwenden, um den aktuellen Prozess so einzurichten, dass er Port-E/A direkt ausführen kann. Ich glaube, das funktioniert auf 64-Bit-Systemen nicht. Sie können auch lseek/read/writeKombinationen dagegen verwenden /dev/port, und ich denke, das ist ebenfalls nicht sehr portierbar. Siehehttp://tldp.org/HOWTO/IO-Port-Programming-2.htmlfür weitere Einzelheiten. Beide Ansätze sind natürlich viel langsamer und weniger flexibel als das Schreiben eines Gerätetreibers ( /dev/portder langsamste von allen). Keiner dieser Userspace-Mechanismen erlaubt Ihnen natürlich die Handhabung von Interrupts oder ähnlichem. Wenn die Leistung ein Problem darstellt, werden Sie am Ende einen Gerätetreiber schreiben.

Antwort2

Ihre Vermutung ist richtig. Der Kernel ist die einzige Software, die Hardwareanforderungen senden kann. Das gilt nicht nur für Linux. Praktisch kein neueres Betriebssystem als DOS ermöglicht den direkten Zugriff auf die Hardware, da dies, wie Sie ebenfalls vermuten, ziemlich gefährlich ist.

Es ist jedoch kein Problem, einen eigenen Treiber zu schreiben, und es steht eine große Menge an Dokumentation zur Verfügung. Zum Beispiel:dieses Tutorial bei xatlantisscheint eine aktuelle (das ist wichtig!) und gute Quelle zu sein.

Antwort3

Es ist definitiv möglich, vom Benutzerbereich aus auf die Hardware zuzugreifen. Insbesondere, wenn die Hardwareregister im Speicher abgebildet sind. Siehe z. B.UIO.

verwandte Informationen