1

OS X 用の IOKit CFPlugin ドライバーを作成しています。受信したネットワーク データを MIDI データに変換して作業します。組み込みの Airport 以外にハードウェアは関与しません。私は Windows マシンのドライバーとファームウェアの経験がありますが、Mac でそれを行うのはこれが初めてです。これまでのところ順調に進んでいますが、Apple のドキュメントには次のように書かれています。「安全上の理由から、開発マシンにドライバをロードしないでください。」

私はMacを1台しか持っていません。私は本当に 2 台の Mac は必要ありません。申し訳ありませんが、Apple。この警告を真剣に受け止めるべきですか? 知っておくべきことはありますか?

ありがとう、トム・ジェフリーズ

4

3 に答える 3

2

警告の言葉遣いはかなり不十分です。考慮すべきことは、ドライバーを試すために別のブート ボリューム (パーティション) を使用することです。これは、システムにドライバーを任意に接続できるからです。メイン システムから (VM、代替ブート ディスクなどを介して) 分離されていない OS でカーネル開発を行っているとしたら、あなたは気が狂っています!

より大きな問題は、カーネルのデバッグを行うことができないことです。そのための唯一のオプションは、リモートの OS X システムで GDB を使用することです。このため、仮想化で OS X を実行することを検討することをお勧めします。

于 2011-06-13T21:06:11.207 に答える
2

VM 内で OS X をテストベッドとして実行することも検討できます。別のブート ボリュームを持つ方がはるかに便利です。

于 2011-06-14T00:27:10.420 に答える
1

fubar kext のインストールを回復する何らかの方法が絶対に必要です: 起動可能な外部ドライブまたはすぐに復元できるものです。これが、実稼働マシンで開発中のカーネル拡張機能を実行することに対する Apple の警告の主な理由です。

Nicholas の言うとおり、gdb (カーネル空間で唯一の方法) を使用してデバッグするには、2 台のマシンが必要です。私は、Coxy が示唆するように VM を使用したことはありませんが、実行可能だと思います (仮想マシンで kext を実行し、実際のホスト マシンを使用して gdb を実行すると仮定します)。

カーネルでトレースおよびデバッグするための私の推奨方法は、firewire (別名 firewire kprintf (man fwkpfv) ) にルーティングされる kprintf() です。このためには、firewire ポートを備えた 2 台のマシンが必要です。

最後に、私自身コンピューター ミュージシャンの経験があるので、なぜネットワーク スタック レベルで MIDI シンセサイザー (またはトランスフォーマー) をプログラムする必要があるのだろうかと思います。私の推測では、ユーザーランド (浮動小数点演算を使用できる場所...) で作業する方がはるかに満足のいく経験になると思います。

ヒントやヒントが必要な場合は、お気軽にお問い合わせください...

|K<

ADCカーネルプログラミングガイドから

カーネル プログラミングは黒魔術であり、可能な限り避けるべきです。幸いなことに、通常、カーネル プログラミングは不要です。ほとんどのソフトウェアは、完全にユーザー空間で作成できます。ほとんどのデバイス ドライバー (FireWire や USB など) でさえ、カーネル コードではなく、アプリケーションとして記述できます。ただし、いくつかの低レベル ドライバーはカーネルのアドレス空間に常駐する必要があります。このカテゴリに分類されるドライバーを作成している場合、このドキュメントはわずかに役立つ可能性があります。

于 2011-07-07T11:43:41.857 に答える