Ist es möglich mit FPC einen Gerätetreiber zu entwickeln ?
Oder ist die noch einer der wenigen Vorteile von C gegenüber FPC ?
Treiber-Programmierung
-
- Beiträge: 6210
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Treiber-Programmierung
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- 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
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).
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
-
- Beiträge: 6210
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Treiber-Programmierung
Genau dies wollte ich wissen. Theoretisch möglich, aber mit einem extremen Aufwand.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).
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
Mit Java und C/C++ sehe ich rot
-
- 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
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.Mathias hat geschrieben: ↑So 27. Aug 2023, 13:13Genau dies wollte ich wissen. Theoretisch möglich, aber mit einem extremen Aufwand.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).
Dies wäre bei den AVRs auch der Fall, wen es keine fpcupdeluxe geben würde.
FPC Compiler Entwickler