2011-06-13 47 views
1

我正在为OS X构建一个IOKit CFPlugin驱动程序。我将使用将要转换为MIDI数据的网络数据。除了内置的机场以外不涉及任何硬件。我有Windows机器和固件上的驱动程序的经验,但这是我第一次在Mac上做到这一点。到目前为止,事情进展得很顺利,但Apple文档sez:“出于安全原因,您不应该在开发机器上加载驱动程序。”我需要两台机器来开发IOKit Mac驱动程序吗?

我只有一台Mac。我真的不想要两个Mac,对不起,苹果。我应该认真对待这个警告吗?有什么我需要知道的吗?

谢谢,汤姆杰弗里斯

回答

2

您也可以考虑在虚拟机内运行OS X作为测试平台。有一个单独的启动卷肯定会更方便。

+1

这就是它现在设置,虽然得到这个工作是另一个令人头疼的问题。感谢你的回答。 – TomJeffries 2011-07-21 23:39:00

2

该警告措辞相当糟糕;你应该考虑做的是使用一个单独的启动音量(分区)来尝试你的驱动程序,因为可以随意驱动你的系统。 如果你在任何不与主系统隔离的操作系统上(通过虚拟机,备用启动盘等)进行内核开发,那你就疯了!

可能更大的问题是您不能进行任何内核调试,因为唯一的选择是在远程OS X系统上使用GDB。为此,您可能需要考虑running OS X in virtualization

+0

谢谢,这看起来像一个更好的选择,而不是为另一个Mac弹出一个盛大或更多... – TomJeffries 2011-06-13 23:40:50

1

你肯定想要一些方法来恢复fubar kext安装:一个可引导的外部驱动器或你可以快速恢复的东西 - 这是苹果警告你在你的系统上运行开发内核扩展的主要原因生产机器。

尼古拉斯是正确的,为了使用gdb进行调试(内核空间的唯一方法),你确实需要两台机器。我从来没有尝试过使用虚拟机,因为Coxy建议:但我想这是可行的(假设你在虚拟机上运行kext并使用真正的主机运行gdb)。

用于在内核跟踪和调试我优选的方法是kprintf()路由到火线(又名火线kprintf(人fwkpfv))。为此,你需要两台带FireWire端口的机器。

最后,我自己是一位老电脑音乐家,我想知道你为什么要在网络堆栈层上编写MIDI合成器(或变压器)。我的猜测是,你将有一个更可喜的经验,在用户态的工作(在这里你可以使用浮点运算...)

,如果你需要一些提示或提示,随时取得联系...

| K <

ADC Kernel Programming Guide

内核编程是一门黑色艺术是 应该如果在所有可能避免。 幸运的是,内核编程通常不需要 。您可以在用户空间中完全编写大部分软件 。 甚至大多数设备驱动程序(例如FireWire和 USB)可以编写为 应用程序,而不是作为内核 的代码。一些低级驱动程序必须是 驻留在内核的地址 空间中,但是,如果您是 ,编写属于此类 类别的驱动程序,此文档 可能稍微有用。

+0

感谢您的评论。我使用虚拟机来设置它,但仍然有很多我需要弄清楚。实质上,我们使用iPhone通过MIDI数据与Mac上的应用进行通信,这就是我们使用网络驱动程序的原因。我以为我可以使用蓝牙,但事实证明这是禁止的。 – TomJeffries 2011-07-21 23:38:18

相关问题