Как операционная система Linux понимает базовое оборудование? - PullRequest
0 голосов
/ 08 января 2020

Я хочу узнать, как Linux ОС понимает базовое оборудование. Кто-нибудь может мне подсказать, с чего начать, чтобы получить это понимание, На данный момент я просто знаю, что подкаталог / dev играет в этом важную роль.

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

Я где-то читал, что демон Udev прослушивает сокет netlink, чтобы собрать это информация и диспетчер устройств Udev обнаруживает добавление и удаление устройств по мере их возникновения.

Но с этим я просто не удовлетворен мыслью о том, как Linux читает оборудование.

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

1 Ответ

3 голосов
/ 08 января 2020

Я думаю, что сначала вам нужно выяснить, как работает отображение памяти. Что такое адресное пространство и как оно связано с физической памятью. Затем вы можете прочитать о том, как аппаратное обеспечение отображается в адресном пространстве и как получить к нему доступ. Это большое количество документов для чтения. Часть этой информации содержится в Linux Проекте документации.

Кроме того, некоторые знания об электронике c будут полезны.

В целом - Linux для связи с устройствами нужен какой-то «канал» связи. Этот канал может быть, например, ISA, PCI, USB и др. c шина. Например, устройства PCI являются устройствами отображения памяти, и ядро ​​Linux связывается с ними через доступ к памяти. Поэтому сначала Linux необходимо увидеть данное устройство в некоторой области памяти, а затем он может сконфигурировать это устройство и установить с ним связь.

В случае USB-устройств это немного сложно, потому что USB-устройства не отображены в памяти. Сначала необходимо настроить USB-хост, чтобы иметь возможность общаться с USB-устройствами. Каждая связь с USB-устройством осуществляется через USB-хост.

Есть также устройства, которые не подключены через ISA, PCI или USB. Они подключены напрямую к процессору и видны под некоторым адресом памяти. Это решение обычно реализуется во встроенных устройствах. Например, процессоры ARM используют этот подход.

Что касается udev - это приложение пользовательского пространства, которое прослушивает события из ядра Linux и помогает другим приложениям распознавать добавление и настройку устройства.

...