Нужны ли мне две машины для разработки драйверов Mac Iokit?

StackOverflow https://stackoverflow.com/questions/6335862

Вопрос

Я строю драйвер CFPPLUGIN для OS X. Я буду работать с представленными сетевыми данными, которые будут переведены в MIDI Data. Никакое оборудование не связано, кроме встроенного аэропорта. У меня есть опыт работы с драйверами на машинах и прошивке Windows, но это мой первый падение, чтобы сделать это на Mac. До сих пор дела идут довольно хорошо, но Apple Documentation SEZ: «По соображениям безопасности вы не должны загружать своего драйвера на машину разработки».

У меня есть только один Mac. Я действительно не хочу два Macs- извините, Apple. Должен ли я серьезно относиться к этому предупреждению? Есть ли вещи, которые мне нужно знать?

Спасибо, Том Джеффрис

Это было полезно?

Решение

Вы также можете рассмотреть вопрос о запуске OS X внутри виртуальной машины в качестве испытательного стенда. Наверняка было бы гораздо удобнее, что наличие отдельного объема загрузки.

Другие советы

Предупреждение довольно плохо сформулировано; Вы должны рассмотреть вопрос о использовании отдельного объема загрузки (раздел) для опробования вашего драйвера, так как можно произвольно шлачать вашу систему с помощью вашего драйвера. Если вы делаете разработку ядра на любой ОС, которая не изолирована от вашей основной системы (через виртуальную машину, альтернативный загрузочный диск и т. Д.), Вы сумасшедшие!

Что может быть более крупной проблемой, так это то, что вы не можете провести какую -либо отладку ядра, потому что единственный вариант для этого - использовать GDB в удаленной системе OS X. Для этого вы можете рассмотреть Запуск OS X в виртуализации.

Вы определенно хотите получить какую-то способ восстановления установки Fubar Kext: загрузочный внешний диск или что-то, из чего вы можете быстро восстановить-это главная причина предупреждения Apple о запуске в разработке-кенле-экзиатах на вашей производственной машине.

Николас прав, что для отладки с помощью GDB (единственный путь в пространстве ядра) вам нужны две машины. Я никогда не пытался использовать виртуальную машину, как предлагает Кокси: но я думаю, что это возможно (при условии, что вы запускаете свой Kext на виртуальной машине и используете настоящий хост -машину для запуска GDB).

Мой Предпочтительным методом отслеживания и отладки в ядре является kprintf (), направленный в Firewire (он же FireWire Kprintf (Man FWKPFV)). Для этого вам нужны две машины с портами FireWire.

Наконец, будучи старым компьютерным музыкантом, мне интересно, почему вы хотите запрограммировать синтезатор MIDI (или трансформатор) на уровне стека сети. Я предполагаю, что у вас будет гораздо более приятный опыт работы в пользовательке (где вы можете использовать математику с плавающей запятой ...)

Если вам нужны подсказки или подсказки, не стесняйтесь связаться ...

| K.

от Руководство по программированию ядра АЦП

Программирование ядра - это черное искусство, которого следует избегать, если это вообще возможно. К счастью, программирование ядра обычно не нужно. Вы можете написать большинство программного обеспечения полностью в пространстве пользователей. Даже большинство драйверов устройств (например, FireWire и USB) могут быть написаны как приложения, а не как код ядра. Однако несколько низкоуровневых водителей должны быть проживающими в адресном пространстве ядра, и этот документ может быть незначительно полезен, если вы пишете драйверов, которые попадают в эту категорию.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top