OSDev http://osdev.su/ |
|
Определение наличия "классической" аппаратуры http://osdev.su/viewtopic.php?f=6&t=400 |
Страница 1 из 2 |
Автор: | ZarathustrA [ 09 фев 2011, 15:56 ] |
Заголовок сообщения: | Определение наличия "классической" аппаратуры |
Здраствуйте. На днях обнаружил, что на одном из моих компов нет DMA, System Timer и PIC. (сервер Compaq 2x Pentium Pro). Отсюда вопрос, как можно определить наличие\отсутствие такого рода аппаратуры на наиболее низком уровне? |
Автор: | Himik [ 09 фев 2011, 18:11 ] |
Заголовок сообщения: | Re: Определение наличия "классической" аппаратуры |
Эмпирическим методом наверно. Или декларативным (или типовым) - посмотреть тип компьютера в последнем байте BIOS, и судить по нему о конфигурации компьютера. |
Автор: | ZarathustrA [ 09 фев 2011, 18:28 ] |
Заголовок сообщения: | Re: Определение наличия "классической" аппаратуры |
Насколько я понимаю должны быть какие-то методы определения, что есть в системе и какой ввод-вывод использует наличествующая аппаратура. Что например, если DMA есть, но использует не порты 00-20h, а скажем 120-140h? Что если в системе 15 COM-портов. Как определить сколько их и какие порты использует каждый из них? Не полным же перебором со стороны каждого наличествующего драйвера всего диапазона портов/адресов ввода/вывода. На сколько я знаю, например устройства подключенные к шине PCI можно довольно спокойно перечислить и узнать/задать используемые ими окна ввода-вывода. |
Автор: | SII [ 09 фев 2011, 18:32 ] |
Заголовок сообщения: | Re: Определение наличия "классической" аппаратуры |
PCI изначально проектировалась для поддержки PnP, поэтому-то там и имеется перечисление устройств. Что же касается древнего оборудования, узнать о его наличии или отсутствии можно лишь средствами БИОС. Наизусть я не помню, что там можно узнать, а что -- нельзя. По идее, можно проверить тип компьютера, как Химик предлагает, и предполагать наличие древних контроллеров ПДП и прерываний, таймеров и т.п. только в том случае, если тип машины = ПЦ/АТ. Если тип другой, древнего железа может не быть вообще. Ну и в порядке лирики. А зачем поддерживать весь этот древний хлам? Не лучше ли ориентироваться на современное железо и поддерживать только и исключительно его? |
Автор: | ZarathustrA [ 09 фев 2011, 19:15 ] |
Заголовок сообщения: | Re: Определение наличия "классической" аппаратуры |
Ну как бы PIC, DMA, системный таймер и Com-порты - это классика. И они есть и используются на любом современном ПК. Com-порты в частности - классический способ организации промышленных сетей компьютеров, контроллеров и датчиков. Именно, за счет того, что они деревянные -> под них проще проектировать и изготавливать железо и их проще программировать. |
Автор: | SII [ 09 фев 2011, 19:40 ] |
Заголовок сообщения: | Re: Определение наличия "классической" аппаратуры |
Это не классика, а извращённый анахронизм, продукт безмозглых инженеров Интел (с точки зрения архитектуры хуже что процессоров, что периферии в природе не существовало; собсно, я четверть века был уверен, что хуже интеловской процессорной архитектуры в природе не существует, пока не столкнулся в конце прошлого года с 16-разрядными микроконтроллерами ПИК, сместившими Интел на второе место). Что касается контроллеров прерываний (ПИК) и ПДП (ДМА), то они в современных ОС _не_ используются: вместо ПИКа работает АПИК (без него невозможна поддержка многопроцессорных систем, а значит, любых многоядерных процессоров), ну а ПДП в ПСИ/ПСИ Ехпресс вообще совершенно по-другому работает, без централизованного дегенеративного контроллера. Что же касается промышленных интерфейсов, то там куда чаще используется RS-485, а не RS-232 (который КОМ-порт ПК), а также CAN (который вообще никакого отношения к КОМ-порту не имеет, хотя тоже является последовательным интерфейсом). И, кстати говоря, эти интерфейсы используются в промышленности, но не дома/в офисе, где они практически умерли. Интел уже давным-давно на свои матери не лепит ни КОМ, ни ЛПТ; постепенно другие тоже отказываются... В общем, если поддержка КОМ-портов смысл ещё имеет, то геморрой с древними схемами организации ПДП и прерываний -- никакого, поскольку все сколько-нибудь современные ПК основаны на шине ПСИ/ПСИ Ехпресс и имеют АПИК. |
Автор: | ZarathustrA [ 09 фев 2011, 19:58 ] |
Заголовок сообщения: | Re: Определение наличия "классической" аппаратуры |
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). В общем вопрос не теряет своей актуальности. |
Автор: | SII [ 09 фев 2011, 20:49 ] |
Заголовок сообщения: | Re: Определение наличия "классической" аппаратуры |
Локал АПИК существует у любого процессора, начиная с первых Пентиумов, так что я очень сомневаюсь, что в Вашем Пентиуме-М его нет (хотя теоретически допускаю такую возможность). Глобал АПИКов в природе не существует вообще, есть ИО АПИК, который работает не сам по себе, а совместно с Локал АПИКами. Вот он действительно может отсутствовать на самых примитивных матерях. Что касается наличия древнего оборудования на современных компах и отсутствия на старом сервере, то всё здесь очень просто. Специализированные серверы -- это не обычные ПК, и там вполне могут быть серьёзные отклонения от стандартного набора оборудования. Надо полагать, это именно тот случай. Никакого штатного способа узнать о существовании или отсутствии древних контроллеров прерываний и ПДП не существует: их наличие предполагалось в _обязательном_ порядке. Единственное, что, возможно, здесь можно сделать, -- это проверить тип машины (по идее, ради приличия БИОС должен сообщить, что это не ПЦ/АТ, а что-то совершенно другое, чтобы ПО, рассчитанное только на АТ, поняло, что здесь ему делать нечего). Что касается КОМ-портов, то у БИОСа есть штатные средства узнать об их существовании, но, кажется, только для первых четырёх портов. На практике большего количества и не бывает, всё остальное реализуется внешними по отношению к материнке способами и определяется способом, зависящим от шины подключения. Кстати говоря, если в предыдущем поколении матерей (на чипсетах X58, P55 и т.п.) наличие UEFI было редкостью (сей стандарт поддерживался всеми матерями Интел, несколькими моделями АСУС и ещё кем-то там), то в последнем поколении (P67/H67) УЕФИ есть уже почти везде (во всяком случае, из восьми попавших мне плат он был в шести, причём разных производителей -- Интел, АСУС, Гигабайт, МСИ, остальных сейчас не помню). Тоже симптоматично; по всей вероятности, года через три он станет абсолютно обязательным, а ещё лет через 5-7 БИОС умрёт окончательно. |
Автор: | phantom-84 [ 09 фев 2011, 21:43 ] |
Заголовок сообщения: | Re: Определение наличия "классической" аппаратуры |
Я тоже за вариант с проверкой типа машины. Если не ошибаюсь, то AT-идентификатор имеет значение 0xFC. Что касается ПАТА, то мне кажется, что тут вы ошибаетесь. "ДМА" в ПАТА имеет совсем другую природу. Лично я оригинальный ДМА использую только для флоппиков. |
Автор: | SII [ 09 фев 2011, 21:46 ] |
Заголовок сообщения: | Re: Определение наличия "классической" аппаратуры |
Угу, ошибается. Это первоначальный ИДЕ пользовался стандартным контроллером ПДП, но по той причине, что никакой шины ПСИ тогда ещё не было. |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |