вопросы о встроенном драйвере устройства Linux от linux newbie - PullRequest
3 голосов
/ 04 октября 2011

Я недавно изучал драйвер Linux, Как сказано в тех статьях, которые я читал, модули драйверов устройств, вероятно, будут автоматически загружаться ядром по требованию, поэтому мне интересно узнать, как ядро ​​определяет, какой модуль загрузить для конкретного устройства (звуковая карта, устройство I2C / spi, и т.д.), я также не могу полностью представить, как ядро ​​обнаруживает каждое аппаратное устройство во время загрузки.

ответы, относящиеся к встроенному Linux, являются предпочтительными, ПК Linux также приветствуются!

3Q

1 Ответ

8 голосов
/ 04 октября 2011

Я думаю, вы смешиваете две разные вещи: обнаружение оборудования и загрузку модуля по требованию.

В некоторых случаях ядро ​​явно выполняет запрос модуля. Однако в большинстве случаев само ядро ​​не выполняет никакой загрузки по требованию.

Но подождите, вы должны ошибаться, если я подключу свою новую блестящую веб-камеру, не так ли? модуль автоматически загружается?

Да, но не ядром. Все, что делает ядро, - это вызывает программу пользовательского пространства с так называемым «событием горячего подключения» или «событием» в качестве аргументов. На ПК с Linux эта пользовательская программа обычно называется udev, но во встроенной системе вы можете использовать, например, mdev. Вы можете найти более подробное объяснение здесь и здесь

Что касается второй части вашего вопроса, ядро ​​выполняет обнаружение аппаратного обеспечения только в том случае, если обнаруживается аппаратное обеспечение. Примером обнаруживаемого оборудования является USB и PCI. Примером не обнаруживаемых шин Harwdare является SPI или I2C.

В последних случаях присутствие определенного устройства на данной шине либо кодируется непосредственно в ядре, либо передается ему загрузчиком. Google для "дерева устройств" для примера последнего.

Подводя итог: обнаружение оборудования выполняется ядром, а загрузка модуля - пользовательским пространством с информацией, предоставляемой ядром.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...