2017-02-16 28 views
0

Предположим, у вас есть встроенное устройство (например, малиновый pi) с встроенным Linux и вы хотите общаться с внешним модулем.Когда вы решили написать программное обеспечение в kernelspace, а не в пользовательском пространстве?

  • В каких случаях вы решили установить связь с устройством, написав драйвер ядра?

  • В каких случаях вы могли бы просто обмениваться данными с устройством, написав программное обеспечение в пользовательском пространстве?

ответ

3

Если у вас есть выбор по этому вопросу, общайтесь с устройствами в пользовательском пространстве. Драйверы пользовательского пространства гораздо проще разрабатывать, упростить защиту и меньше использовать обновления для новых ядер.

ситуации, когда драйвер ядра может быть неизбежно включает в себя:

  • Если ваше оборудование обеспечивает стандартные услуги, которые будут потребляться другими частями ядра - например, если это блочное устройство или сетевое устройство. Устройства ввода и видеоустройства могут также попадать в эту категорию в зависимости от того, как вы планируете их использовать.

  • Если ваше устройство имеет необычно жесткие требования к срокам, которые не могут быть удовлетворены приложением для пользовательского пространства, или если для этого требуются компоненты драйвера, которые доступны только в пространстве ядра, например аппаратные таймеры.

  • Если вы взаимодействуете с аппаратным обеспечением, которое напрямую не распространяется на пользовательское пространство, например, на устройство PCI. (Несмотря на это, может быть ситуативно уместно написать «тонкий» драйвер ядра и выполнить остальную часть работы в пользовательском пространстве.)

+0

Благодарим вас за ответ, сэр. Не могли бы вы, пожалуйста, объяснить немного больше точки nr. 1? – jithophipr

+0

@trilolil Я имею в виду видеовыход. Графические карты и тому подобное. – duskwuff

 Смежные вопросы

  • Нет связанных вопросов^_^