Frage

Ich erstelle einen Iokit -CFplugin -Treiber für OS X. Ich werde mit Netzwerkdaten arbeiten, die in MIDI -Daten übersetzt werden. Es ist keine andere Hardware als der eingebaute Flughafen. Ich habe Erfahrung mit Treibern auf Windows -Maschinen und Firmware, aber dies ist mein erstes Eintauchen, um es auf dem Mac zu tun. Soweit läuft es ziemlich gut, aber die Apple -Dokumentation SEZ: "Aus Sicherheitsgründen sollten Sie Ihren Treiber nicht auf Ihre Entwicklungsmaschine laden."

Ich habe nur einen Mac. Ich möchte wirklich nicht zwei Macs- Entschuldigung, Apple. Soll ich diese Warnung ernst nehmen? Gibt es Dinge, die ich wissen muss?

Danke, Tom Jeffries

War es hilfreich?

Lösung

Sie können auch in Betracht ziehen, OS X in einem VM als Testbett auszuführen. Es wäre sicherlich viel bequemer, dass ein separates Startvolumen ist.

Andere Tipps

Die Warnung ist ziemlich schlecht formuliert; Was Sie in Betracht ziehen sollten, ist die Verwendung eines separaten Startvolumens (Partition), um Ihren Treiber auszuprobieren, da es möglich ist, Ihr System willkürlich mit Ihrem Treiber zu verlegen. Wenn Sie Kernelentwicklung auf einem Betriebssystem durchführen, das nicht von Ihrem Hauptsystem isoliert ist (über eine VM, alternative Boot -Festplatte usw.), sind Sie verrückt!

Ein größeres Problem ist, dass Sie kein Kernel -Debugging durchführen können, da die einzige Option dafür die Verwendung von GDB auf einem Remote -OS X -System besteht. Dafür möchten Sie vielleicht berücksichtigen Ausführen von OS X in der Virtualisierung.

Sie möchten auf jeden Fall eine Möglichkeit haben, eine Fubar-Kext-Installation wiederherzustellen: ein bootfähiges externes Laufwerk oder etwas, von dem Sie schnell wiederherstellen können-dies ist der Hauptgrund für die Warnung von Apple vor dem Ausführen von Inentwicklungs-Kernel-Ausländern auf Ihrer Produktionsmaschine.

Nicholas ist recht, dass Sie zwei Maschinen benötigen, um mit GDB (nur im Kernelraum) zu debuggen. Ich habe noch nie versucht, ein VM zu verwenden, wie Coxy vorschlägt: Aber ich denke, es ist machbar (vorausgesetzt, Sie führen Ihren Kext auf der virtuellen Maschine aus und verwenden die reale Host -Maschine, um GDB auszuführen).

Mein Bevorzugte Methode zum Nachverfolgung und Debuggen im Kernel ist kPrintf () zu FireWire (auch bekannt als Firewire Kprintf (Man FWKPFV)). Dazu benötigen Sie zwei Maschinen mit Firewire -Anschlüssen.

Als alter Computermusiker frage ich mich schließlich, warum Sie einen MIDI -Synthesizer (oder Transformer) auf der Network -Stapelebene programmieren möchten. Ich vermute, dass Sie eine viel erfreulichere Erfahrung in Userland haben (wo Sie schwimmende Punktmathematik verwenden können ...)

Wenn Sie einige Hinweise oder Tipps benötigen, können Sie sich gerne in Verbindung setzen ...

| K

von dem ADC -Kernel -Programmierhandbuch

Die Kernel -Programmierung ist eine schwarze Kunst, die nach Möglichkeit vermieden werden sollte. Glücklicherweise ist die Kernelprogrammierung normalerweise unnötig. Sie können die meisten Software vollständig im Benutzerbereich schreiben. Selbst die meisten Gerätetreiber (zum Beispiel Firewire und USB) können eher als Anwendungen als als Kernelcode geschrieben werden. Ein paar Fahrer mit niedrigem Niveau müssen jedoch im Adressraum des Kernels ansässig sein, und dieses Dokument könnte geringfügig nützlich sein, wenn Sie Fahrer schreiben, die in diese Kategorie fallen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top