QNX.ORG.RU
*
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: IRC канал проекта - #qor на irc.freenode.net (кодировка koi8-r)
 
   Начало   Wiki Помощь Поиск Войти Регистрация  
Страниц: [1]
  Печать  
Автор Тема: Определение оборудования  (Прочитано 1007 раз)
oder
Sr. Member
****
Offline Offline

Сообщений: 493



Просмотр профиля
« : Марта 01, 2010, 07:13:26 pm »

Привет

Возникла потребность определить набор установленных сетевух (для показа пользователю, чтоб он выбрал им варианты как грузить и грузить ли вообще).
pci,  вроде, выдает всё, что нужно, но парсить вывод, отформатированный для чтения человеком - некошерно.
enum-pci не показывает юзер-френдли имени железки.
Подумал самому сделать утилитку, но в хелпах не видно, чем название/vid/did выбрать и исходников pci/enum-pci нет.
Что посоветуете?
Записан
mike
QOR.Moderator
*****
Offline Offline

Сообщений: 662


Welcome to Lunatic Asylum.


Просмотр профиля WWW
« Ответ #1 : Марта 01, 2010, 07:57:29 pm »

базу vid/did можно стянуть отсюда http://www.pcidatabase.com/
Записан
lestat
QOR.Moderator
*****
Online Online

Сообщений: 554


I don't trust anything


Просмотр профиля WWW
« Ответ #2 : Марта 01, 2010, 09:36:09 pm »

Я базу всегда беру тут: http://pciids.sourceforge.net/ . В /etc/system/enum/devices есть списки PCI VID/DID всех поддерживаемых сетевых устройств, которые берёт enum-pci.

А вообще просканировать каждую PCI шину на предмет наличия устройств класса 0200 (Network Controller/Ethernet Controller), дело 5 минут. Если мне память не изменяет, то в хелпнике по PCI функциям есть пример кода сканирования всех устройств и поиска нужного.
Записан

lestat
QOR.Moderator
*****
Online Online

Сообщений: 554


I don't trust anything


Просмотр профиля WWW
« Ответ #3 : Марта 01, 2010, 09:40:08 pm »

http://www.qnx.com/developers/docs/6.4.1/neutrino/lib_ref/p/pci_find_class.html
Записан

oder
Sr. Member
****
Offline Offline

Сообщений: 493



Просмотр профиля
« Ответ #4 : Марта 01, 2010, 11:27:58 pm »

Ну это я видел. А что мне потом с этими bus и devfunc делать? Мне надо vid, did, pci index, io port, friendly name - то, что утилита pci печатает.  Неужто в неё база всевозможных устройств вкомпилирована?
Записан
mike
QOR.Moderator
*****
Offline Offline

Сообщений: 662


Welcome to Lunatic Asylum.


Просмотр профиля WWW
« Ответ #5 : Марта 02, 2010, 06:59:19 am »

вся база тут <hw/pci-full.h>
Записан
Basil-64
Jr. Member
**
Offline Offline

Сообщений: 63



Просмотр профиля
« Ответ #6 : Марта 02, 2010, 10:45:08 am »

Можно  коряво, но просто Smiley Пройти всю базу через pci_find_device
Записан

В жизни всегда есть место подвигу - главное быть подальше от этого места
lestat
QOR.Moderator
*****
Online Online

Сообщений: 554


I don't trust anything


Просмотр профиля WWW
« Ответ #7 : Марта 02, 2010, 11:31:51 am »

Можно  коряво, но просто Smiley Пройти всю базу через pci_find_device
Это не коряво, а именно так надо делать. Коряво - это брать из базы и искать эти vid/did.

Цитировать
Ну это я видел. А что мне потом с этими bus и devfunc делать? Мне надо vid, did, pci index, io port, friendly name - то, что утилита pci печатает.  Неужто в неё база всевозможных устройств вкомпилирована?

cat `which pci` | strings

а io port/mmio port получают из configuration space найденного PCI устройства.
Записан

lestat
QOR.Moderator
*****
Online Online

Сообщений: 554


I don't trust anything


Просмотр профиля WWW
« Ответ #8 : Марта 02, 2010, 11:40:24 am »

Ну это я видел. А что мне потом с этими bus и devfunc делать? Мне надо vid, did, pci index, io port, friendly name - то, что утилита pci печатает.

bus - в современных материнках их может быть и десяток (PCI шин).
vid и did тоже записаны в configuration space. Также необходимо часто вычитывать subvid и subdid, так как did/vid могут быть универсальные для целого класса устройств.
devfunc - это комбинация device id на этой шине и функции данного устройства. device id = (devfunc >> 3) & 0x1F. Функция - одно PCI устройство может нести в себе целую пачку устройств, например многоголовые сетевухи могут быть так устроены, на каждой функции свой ethernet controller.

тот pci index, что тебе нужен - это нумерация всех PCI устройств на всех шинах, которая представлена только QNX'ом.
Записан

oder
Sr. Member
****
Offline Offline

Сообщений: 493



Просмотр профиля
« Ответ #9 : Марта 02, 2010, 12:40:38 pm »

Ага... Кажись, понятно...
Спасибо - попробуем.
Записан
oder
Sr. Member
****
Offline Offline

Сообщений: 493



Просмотр профиля
« Ответ #10 : Марта 02, 2010, 04:29:31 pm »

Ещё маленькое уточнение, пожалуйста...
А busnum и devfuncnum из pci_find_class устройство идентифицируют однозначно?
Записан
ob1
Sr. Member
****
Online Online

Сообщений: 265


Perry Cox


Просмотр профиля WWW
« Ответ #11 : Марта 02, 2010, 04:43:52 pm »

Ещё маленькое уточнение, пожалуйста...
А busnum и devfuncnum из pci_find_class устройство идентифицируют однозначно?

Эти три параметра указывают на размещение устройства. В одном месте может быть только одно устройство. Но одинаковые устройства могут быть в разных местах. Иными словами, которые должны быть понятны любителям ооп, (bus, device, function) указывают адрес экземпляра устройства, но не его класс. ;-}
Записан

oder
Sr. Member
****
Offline Offline

Сообщений: 493



Просмотр профиля
« Ответ #12 : Марта 02, 2010, 09:11:14 pm »

Ура! Заработала!
Записан
@gn
Jr. Member
**
Offline Offline

Сообщений: 79


Просмотр профиля
« Ответ #13 : Марта 10, 2010, 05:14:48 pm »

...Что посоветуете?


Я бьi сделал так... аналогично определению какой там  UART:

I- Росьiскиваю книжку Протокольi инаформационно-вьчислительних сетей.
издательство Москва-радио и связь- 1990 г.
(я так по памяти - под руки ее нет сейчас).
II- Недельку потрачу чтоб рaзобратся в абревиатурах. Трудно очень та книжка читаетсая.
например:
OSI- Open System Interconect
ЕМВОС- Еталонная Модель Взаимодействия Откритих Систем.
ето одно и то же по моему, но чтоб дошло надо англицки разучить.
etc.
III- Читаю гл. 14.
Разбираюсь что такое IEEE.
Что такое ISA и что такое ISA.
IV- дальше даташит (или в справочниках разних) инфу надо найти для базовьх интегральних схем первьх двух уровнях OSI модели.
V- делаем предположение, что в чипсетах Huh? (БИС-большие ИС или СБИС-сверхбольшие ИС) всяких стандртьi  известние соблюдаются. Остальное считаем барахлом. Если закзчику очень сильно надо стандартов не соблюдать пусть глубже в карман залезет или искть себе Щтирлицов всяких.
VI- и так далее....
« Последнее редактирование: Марта 17, 2010, 06:09:51 pm от @gn » Записан

пьяный за комп не садиться (себя памятка)
Страниц: [1]
  Печать  
 
Перейти в:  

Powered by SMF 1.1.11 | SMF © 2006-2008, Simple Machines LLC