2015-08-20 4 views
-2

, когда ядро ​​загружается (в частности, на устройстве с ручным управлением), как известно, какие устройства подключены к нему и какие драйверы прощупывают? можете ли вы обратиться к источнику ядра или привести пример .... СпасибоКак ядро ​​тестирует драйверы

+1

Я не вижу этот вопрос не по теме, так что это позор, он помечается как таковой, и я не могу добавить полный ответ. Вы можете прочитать об этом, например, в книге LDD3, в главе «Модель устройства Linux», раздел «Автобусы, устройства и драйверы». Вкратце, Linux использует абстракции «Автобусов» (например, PCI, USB и т. Д.), К которым можно подключить «Устройства». Каждое «устройство» может поддерживаться некоторыми «драйверами», которые имеют «обратный вызов» зонда. Автобусы будут вызывать эти обратные вызовы, пока какой-нибудь «водитель» не решит, что он будет обрабатывать это устройство. Автобусы могут использовать некоторые подсказки (например, идентификатор устройства) для запроса конкретных «драйверов» или могут выполнять итерацию по всем ним. –

+1

Также некоторые устройства, особенно встроенные системы (например, системы ARM), не подключены к каким-либо реальным шинам, которые могут обнаруживать аппаратное обеспечение. Такие устройства организованы в специальную абстрактную шину в Linux, называемую «платформа». В старые времена регистрация драйверов для этой шины была жестко закодирована в коде ядра, но сейчас ее в основном описывают специальные файлы конфигурации, называемые «Деревом устройств», которые поставляются в ядро ​​загрузчиком. Описание все еще статично, но оно не зависит от кода ядра, поэтому вы можете иметь несколько конфигураций (для немного разных плат) для одного изображения ядра. –

ответ

1

Ядро Linux узнает, что устройство подключено только через драйверы устройства. Список драйверов устройств, загруженных на основе конфигурации ядра Linux.

Когда драйвер включен во время компиляции ядра Linux, секция инициализации драйвера будет помещена в специальный раздел образа ядра.

Во время процесса инициализации ядра в start_kernel() драйверы статических устройств будут loaded one by one.

литературы о механизме инициализации вызова в ядре Linux

http://linuxgazette.net/157/amurray.html
http://lwn.net/Articles/141730/

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