Treiber-Programmierung

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Mathias
Beiträge: 6209
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Treiber-Programmierung

Beitrag von Mathias »

Ist es möglich mit FPC einen Gerätetreiber zu entwickeln ?
Oder ist die noch einer der wenigen Vorteile von C gegenüber FPC ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

PascalDragon
Beiträge: 834
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Treiber-Programmierung

Beitrag von PascalDragon »

Das Problem bei Treiberentwicklung ist, dass ein Treiber nicht gegen die normale Umgebung linken kann (unter Linux die SysCall API bzw. die C-Bibliothek, unter Windows die Windows API), sondern gegen die Umgebung des Kernels linken muss (im Fall von Linux also die Schnittstelle des Kernels unter Windows die API, die vom ntoskrnl bereit gestellt wird). Hinzu kommt, dass du eventuell bestimmte Funktionalitäten nicht nutzen kannst, weil die in bestimmten Abläufen nicht möglich sind (zum Beispiel ist in manchen Leveln unter Windows es nicht möglich dynamisch Speicher zu allokieren; wenn man es trotzdem macht, kommt dann der berühmte Bluescreen mit „IRQ not less or equal”).

Für die Entwicklung eines Linux Moduls gab es mal hier ein Beispiel, das ist jedoch für eine ältere Version sowohl von Linux als auch FPC, es könnten sich also ein paar Dinge geändert haben.

Für Windows kannst du das NativeNT Ziel verwenden, allerdings existiert dieses aktuell nur für i386 (ich bin noch nicht dazu gekommen es für x86_64 oder gar Aarch64 zu portieren). Eventuell kannst du für deinen jeweiligen Anwendungszweck auch einen Treiber für das User Mode Driver Framework schreiben, wofür du deinen Treiber als normale Windows DLL schreiben kannst, allerdings musst du dafür erst die Header portieren.

TL;DR: ja, es ist möglich mit FPC Treiber zu schreiben, es ist nur nicht trivial (genauso wie Treiberentwicklung an sich nicht trivial ist).
FPC Compiler Entwickler

Mathias
Beiträge: 6209
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Treiber-Programmierung

Beitrag von Mathias »

TL;DR: ja, es ist möglich mit FPC Treiber zu schreiben, es ist nur nicht trivial (genauso wie Treiberentwicklung an sich nicht trivial ist).
Genau dies wollte ich wissen. Theoretisch möglich, aber mit einem extremen Aufwand.
Dies wäre bei den AVRs auch der Fall, wen es keine fpcupdeluxe geben würde.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

PascalDragon
Beiträge: 834
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Treiber-Programmierung

Beitrag von PascalDragon »

Mathias hat geschrieben:
So 27. Aug 2023, 13:13
TL;DR: ja, es ist möglich mit FPC Treiber zu schreiben, es ist nur nicht trivial (genauso wie Treiberentwicklung an sich nicht trivial ist).
Genau dies wollte ich wissen. Theoretisch möglich, aber mit einem extremen Aufwand.
Dies wäre bei den AVRs auch der Fall, wen es keine fpcupdeluxe geben würde.
Bei AVR geht es nur um die passende Einrichtung. Wenn man weiß wie, dann geht das auch ohne fpcupdeluxe entsprechend einfach. Treiberentwicklung muss aber erstmal so oder so aufwendig eingerichtet werden.
FPC Compiler Entwickler

Antworten