【问题标题】:Do I need two machines to develop IOKit Mac drivers?我需要两台机器来开发 IOKit Mac 驱动程序吗?
【发布时间】:2011-06-13 20:22:54
【问题描述】:

我正在为 OS X 构建一个 IOKit CFPlugin 驱动程序。我将处理传入的网络数据,这些数据将被转换为 MIDI 数据。除了内置机场外,不涉及任何硬件。我对 Windows 机器和固件上的驱动程序有经验,但这是我第一次在 Mac 上做这件事。到目前为止,一切进展顺利,但 Apple 文档 sez:“出于安全原因,您不应将驱动程序加载到您的开发机器上。”

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

谢谢,汤姆·杰弗里斯

【问题讨论】:

    标签: macos networking drivers iokit


    【解决方案1】:

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

    【讨论】:

    • 这就是它现在的设置方式,尽管让它工作是另一组令人头疼的问题。感谢您的回答。
    【解决方案2】:

    警告措辞相当糟糕;您应该考虑使用单独的引导卷(分区)来试用您的驱动程序,因为可以使用您的驱动程序任意地对系统进行软管处理。 如果您在不与主系统隔离(通过虚拟机、备用启动磁盘等)的任何操作系统上进行内核开发,那您就疯了!

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

    【讨论】:

    • 谢谢,这看起来是比为另一台 Mac 安装一个或更多的更好的选择...
    【解决方案3】:

    您绝对希望有某种方法来恢复 fubar kext 安装:可引导的外部驱动器或您可以快速恢复的东西 - 这是 Apple 警告不要在您的生产中运行 in-development-kernel-extensions 的主要原因机器。

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

    我的首选的内核跟踪和调试方法是 kprintf() 路由到火线(又名火线 kprintf (man fwkpfv) )。为此,您确实需要两台带有火线端口的机器。

    最后,作为一名老计算机音乐家,我想知道您为什么要在网络堆栈级别上编写 MIDI 合成器(或转换器)。我的猜测是,你会在用户空间工作时获得更令人满意的体验(你可以使用浮点数学......)

    如果您需要一些提示或技巧,请随时与我们联系...

    |K

    来自ADC Kernel Programming Guide

    内核编程是一门黑魔法 应尽可能避免。 幸运的是,内核编程是 通常是不必要的。你可以写 大多数软件完全在用户空间中。 甚至大多数设备驱动程序(FireWire 和 USB,例如)可以写成 应用程序,而不是内核 代码。一些低级驱动程序必须是 驻留在内核的地址中 空间,然而,这个文件 如果你是,可能会有点用 编写属于此的驱动程序 类别。

    【讨论】:

    • 感谢 cmets。我使用虚拟机进行了设置,但还有很多事情需要弄清楚。本质上,我们使用 iPhone 通过 MIDI 数据与 Mac 上的应用程序进行通信,这就是我们使用网络驱动程序的原因。我以为我可以使用蓝牙,但结果证明这是禁区。
    猜你喜欢
    • 2015-04-09
    • 2016-06-02
    • 2011-01-11
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    相关资源
    最近更新 更多