OSDev

для всех
Текущее время: 09 май 2024, 11:00

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: 09 фев 2011, 15:56 

Зарегистрирован: 18 апр 2010, 15:59
Сообщения: 155
Здраствуйте.

На днях обнаружил, что на одном из моих компов нет DMA, System Timer и PIC. (сервер Compaq 2x Pentium Pro). Отсюда вопрос, как можно определить наличие\отсутствие такого рода аппаратуры на наиболее низком уровне?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 фев 2011, 18:11 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Эмпирическим методом наверно. Или декларативным (или типовым) - посмотреть тип компьютера в последнем байте BIOS, и судить по нему о конфигурации компьютера.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 фев 2011, 18:28 

Зарегистрирован: 18 апр 2010, 15:59
Сообщения: 155
Насколько я понимаю должны быть какие-то методы определения, что есть в системе и какой ввод-вывод использует наличествующая аппаратура. Что например, если DMA есть, но использует не порты 00-20h, а скажем 120-140h? Что если в системе 15 COM-портов. Как определить сколько их и какие порты использует каждый из них? Не полным же перебором со стороны каждого наличествующего драйвера всего диапазона портов/адресов ввода/вывода. На сколько я знаю, например устройства подключенные к шине PCI можно довольно спокойно перечислить и узнать/задать используемые ими окна ввода-вывода.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 фев 2011, 18:32 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
PCI изначально проектировалась для поддержки PnP, поэтому-то там и имеется перечисление устройств. Что же касается древнего оборудования, узнать о его наличии или отсутствии можно лишь средствами БИОС. Наизусть я не помню, что там можно узнать, а что -- нельзя. По идее, можно проверить тип компьютера, как Химик предлагает, и предполагать наличие древних контроллеров ПДП и прерываний, таймеров и т.п. только в том случае, если тип машины = ПЦ/АТ. Если тип другой, древнего железа может не быть вообще.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 фев 2011, 19:15 

Зарегистрирован: 18 апр 2010, 15:59
Сообщения: 155
Ну как бы PIC, DMA, системный таймер и Com-порты - это классика. И они есть и используются на любом современном ПК. Com-порты в частности - классический способ организации промышленных сетей компьютеров, контроллеров и датчиков. Именно, за счет того, что они деревянные -> под них проще проектировать и изготавливать железо и их проще программировать.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 фев 2011, 19:40 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Это не классика, а извращённый анахронизм, продукт безмозглых инженеров Интел (с точки зрения архитектуры хуже что процессоров, что периферии в природе не существовало; собсно, я четверть века был уверен, что хуже интеловской процессорной архитектуры в природе не существует, пока не столкнулся в конце прошлого года с 16-разрядными микроконтроллерами ПИК, сместившими Интел на второе место). Что касается контроллеров прерываний (ПИК) и ПДП (ДМА), то они в современных ОС _не_ используются: вместо ПИКа работает АПИК (без него невозможна поддержка многопроцессорных систем, а значит, любых многоядерных процессоров), ну а ПДП в ПСИ/ПСИ Ехпресс вообще совершенно по-другому работает, без централизованного дегенеративного контроллера.

Что же касается промышленных интерфейсов, то там куда чаще используется RS-485, а не RS-232 (который КОМ-порт ПК), а также CAN (который вообще никакого отношения к КОМ-порту не имеет, хотя тоже является последовательным интерфейсом). И, кстати говоря, эти интерфейсы используются в промышленности, но не дома/в офисе, где они практически умерли. Интел уже давным-давно на свои матери не лепит ни КОМ, ни ЛПТ; постепенно другие тоже отказываются...

В общем, если поддержка КОМ-портов смысл ещё имеет, то геморрой с древними схемами организации ПДП и прерываний -- никакого, поскольку все сколько-нибудь современные ПК основаны на шине ПСИ/ПСИ Ехпресс и имеют АПИК.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 фев 2011, 19:58 

Зарегистрирован: 18 апр 2010, 15:59
Сообщения: 155
SII писал(а):
Что касается контроллеров прерываний (ПИК) и ПДП (ДМА), то они в современных ОС _не_ используются: вместо ПИКа работает АПИК (без него невозможна поддержка многопроцессорных систем, а значит, любых многоядерных процессоров), ну а ПДП в ПСИ/ПСИ Ехпресс вообще совершенно по-другому работает, без централизованного дегенеративного контроллера.

Однако всех этих устройств я не смог найти только в сервере, которому около 15 лет. На любом современном компе я эти детали найти могу. Более того до сих пор наличествуют процы ничего не знающие про APIC (например мой ноутбучный Pentium-M). Более того APIC состоит из двух частей: Local (на проце) и Global - на мамке. И насколько я понимаю, все современные Global APIC-и эмулируют интерфейс Local-APICа. Более того PATA контроллеры производят дисковые операции с помощью DMA.

SII писал(а):
Что же касается промышленных интерфейсов, то там куда чаще используется RS-485, а не RS-232 (который КОМ-порт ПК), а также CAN (который вообще никакого отношения к КОМ-порту не имеет, хотя тоже является последовательным интерфейсом). И, кстати говоря, эти интерфейсы используются в промышленности, но не дома/в офисе, где они практически умерли. Интел уже давным-давно на свои матери не лепит ни КОМ, ни ЛПТ; постепенно другие тоже отказываются...

Стандарты RS-232 и RS-485 отличаются только электротехническим исполнением. Для пользователя и программиста - это просто COM-интерфейс (проще говоря они регламентируют первый уровень модели OSI).

В общем вопрос не теряет своей актуальности.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 фев 2011, 20:49 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Локал АПИК существует у любого процессора, начиная с первых Пентиумов, так что я очень сомневаюсь, что в Вашем Пентиуме-М его нет (хотя теоретически допускаю такую возможность). Глобал АПИКов в природе не существует вообще, есть ИО АПИК, который работает не сам по себе, а совместно с Локал АПИКами. Вот он действительно может отсутствовать на самых примитивных матерях.

Что касается наличия древнего оборудования на современных компах и отсутствия на старом сервере, то всё здесь очень просто. Специализированные серверы -- это не обычные ПК, и там вполне могут быть серьёзные отклонения от стандартного набора оборудования. Надо полагать, это именно тот случай.

Никакого штатного способа узнать о существовании или отсутствии древних контроллеров прерываний и ПДП не существует: их наличие предполагалось в _обязательном_ порядке. Единственное, что, возможно, здесь можно сделать, -- это проверить тип машины (по идее, ради приличия БИОС должен сообщить, что это не ПЦ/АТ, а что-то совершенно другое, чтобы ПО, рассчитанное только на АТ, поняло, что здесь ему делать нечего). Что касается КОМ-портов, то у БИОСа есть штатные средства узнать об их существовании, но, кажется, только для первых четырёх портов. На практике большего количества и не бывает, всё остальное реализуется внешними по отношению к материнке способами и определяется способом, зависящим от шины подключения.

Кстати говоря, если в предыдущем поколении матерей (на чипсетах X58, P55 и т.п.) наличие UEFI было редкостью (сей стандарт поддерживался всеми матерями Интел, несколькими моделями АСУС и ещё кем-то там), то в последнем поколении (P67/H67) УЕФИ есть уже почти везде (во всяком случае, из восьми попавших мне плат он был в шести, причём разных производителей -- Интел, АСУС, Гигабайт, МСИ, остальных сейчас не помню). Тоже симптоматично; по всей вероятности, года через три он станет абсолютно обязательным, а ещё лет через 5-7 БИОС умрёт окончательно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 фев 2011, 21:43 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Я тоже за вариант с проверкой типа машины. Если не ошибаюсь, то AT-идентификатор имеет значение 0xFC. Что касается ПАТА, то мне кажется, что тут вы ошибаетесь. "ДМА" в ПАТА имеет совсем другую природу. Лично я оригинальный ДМА использую только для флоппиков.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 фев 2011, 21:46 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Угу, ошибается. Это первоначальный ИДЕ пользовался стандартным контроллером ПДП, но по той причине, что никакой шины ПСИ тогда ещё не было.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 77


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB