Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Определение устройств  (Прочитано 10892 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Mayor
Специалист

ru
Offline Offline

« : 23-01-2005 07:05 » 

Насколько я понимаю еще до загрузки драйвера ядро должно определить наличие устройства...

я после винды не могу понять линукс, вроде без всяких проблемм   можно получить листинг вирт. ( или как там их) устройст в папке /dev , но не могу понять какое устройство какой драйвер обрабатывает - как определить на какой драйвер ссылается /dev/ файл ?
и соответсвенно обратная задача - у меня как ни странно работает lsmod - как по имени драйвера ( модуля - ну трудности у меня с терминалогией) получить файл в dev чтение запись через который этот драйвер обрабатывает?
можетли драйвер обрабатывать более одного файла-устройства?

и еще если физ устройство оказывается для Лин нестандартным, создается ли для него вирт устройство (файл в /dev ) ?

как получить список pnp устройств в pci ? (  есть стандартная процедура чтение с pci шины которая считает инфу с любого pnp устройства ? pnpdump ничего не находит Жаль   )
Записан

1n c0de we trust
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 23-01-2005 18:14 » 

Цитата
Насколько я понимаю еще до загрузки драйвера ядро должно определить наличие устройства...
Прежде всего это зависит от стандарта, под которое это устройство сделано. Напр. не-pnp isa устройства находятся только сканированием по предпологаемым ресурсам, или прямым указанием этих ресурсов (io,mem,irq,dma). В то же время pci устройства более легко и безопасно находятся сканированием шин.

Mayor, расскажу что знаю:
1) драйвер != модуль.
Модуль - подгружаемый исполняемый файл и может содержать любое число драйверов, равно как и 0.
Драйвер может быть собран как включенный в ядро, так и вынесенный в модуль. Некоторый драйвера могут быть только в модуле, или только в ядре.
lsmod выдает список загруженных модулей.
В /proc/devices можно посмотреть, для каких устройств драйвера уже загружены.

2) /dev и драйвера устройств.
Драйвера регистрятся на majon number и тип (char,block) устройств. Драйвер может зарегистрить несколько major number-ов. Первичен драйвер и зарегистрированные им major, а файлы устройст вторичны - они лишь имена (кстати, эти файлы не привязаны к /dev и тем именам, что традиционно им даются).
Есть специальный драйвер, занимающий major 10 и предоставляющий возможность другим драйверам регистрить у него minor number.
Драйвера сетевых устройств к char/block устройствам отношения не имеют - у них другой механизм.

3) pci и pnp
Обнаруженные pci устройства можно просмотреть в /proc/pci .
Под pnp понимается "isa pnp". Для работы с ней есть пакет isapnptools с утилитами pnpdump и isapnp.
С usb устройствами в Linux-е почтине работал - в чем то могу ошибаться.
Должно быть загружено: поддержка usb, драйвер usb-портов, демон поиска usb-устройств. При подключении девайса он автоматом находится и, если есть драйвер для него, то он загружается.

Обрати внимание на утилиту kudzu - она умеет что-то находить и прописывать в конфигах.
« Последнее редактирование: 23-01-2005 19:03 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Mayor
Специалист

ru
Offline Offline

« Ответ #2 : 24-01-2005 18:18 » 

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

Нельзя ли поточнее:
допустим есть устройство, приложениям наверное позволено выполнять стандартные операции чтения записи на этом устройстве, -> как приложение получает дескриптор данного устройства инными словами как устройство  находит, как потом система или ядро передает этот запрос драйверу?


Жаль может быть есть че нить вроде Inside Windows 2000 только про Linux ?
Записан

1n c0de we trust
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 24-01-2005 20:04 » 

Файл устройства, по сути, обычный файл, только без данных, но у него имеется два 8-мибитных числа - major и minor. Когда выполняется системный вызов open() для такого файла, ядро проверяет наличие зарегистрированного для major-номера драйвера и передает ему управление. С остальными файловыми ф-иями - read,write,close,ioctl,seek,mmap и т.д. - аналогично. Драйвер может поддерживать не все ф-ии из этого набора.

Посмотри в разделе файлов - там есть книга по программированию драйверов для Linux-а.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines