LPT порт в современном системнике.

Лет десять назад тенденция развития ПК складывалась в сторону интеграции в мать контроллеров различных устройств, ранее исполнявшихся в виде карт расширения. Сейчас же с еще более стремительной эволюцией вычислительной техники, складывается тенденция исчезновения «устаревших» (в первую очередь с точки зрения скоростных характеристик) периферийных интерфейсов с системных плат. Такая судьба не так давно стала затрагивать и параллельные LPT порты. Но для радиолюбительской практики скоростная часть интерфейса зачастую имеет лишь второстепенную важность, на первом месте находятся иные характеристики, определяющие удобство применения интерфейса в нужных целях. И параллельный LPT порт до сих пор интересен и удобен в практическом использовании для радиолюбителя. Логичным выходом из сложившейся ситуации поначалу видится использование соответствующего адаптера на USB – благо количество этих «щелей» неуклонно растет. Но в случае с параллельным портом не так все просто – большинство таких адаптеров собраны на микросхеме pl2305 (или ей подобных), а она в свою очередь не выполняет полной эмуляции LPT порта (драйвер также не обеспечивает этого функционала) – вот и получается, что через этот преобразователь можно подключать только принтер. Следующая мысль – обратить взор в сторону карт расширения, их много, разных. Да вот незадача: классическая (до недавних пор) шина PCI уже тоже начала потихоньку выходить из обихода, и количество ее слотов на матерях стремительно уменьшается! А ведь большинству аппаратуры, даже после апгрейда компа, хватает ее пропускной способности, и менять или выкидывать карточки на PCI вовсе не хочется (например, у меня это и звуковая карта, и ТВ-тюнер, и RAID-контроллер) – поэтому и PCI слоты становятся уже дефицитными (ищешь новую мать где их побольше, и забиваются они полностью). Остается обратиться к новенькому интерфейсу, пока не столь распространенному по поддержке со стороны периферии, но повсеместно наличествующему на матерях – PCIe-x1. Устройств на него пока нет так много и стоят они несколько дороже чем соответствующие им PCI аналоги. В нашем случае – выбор тоже не велик, но он есть.

Небольшая оговорка – упаси вас брать продукцию под лейблом "Orient"! Эта шарага известного происхождения – видимо просто группа предприимчивых людей, далеких от техники и всего подобного, везущих всяко-разно из китая, не ленясь это перемаркировывать - продавать у нас. Сайт есть только русский да кривой и неинформативный. Товар так себе (STLab куда лучше) … Но самая задница не в качестве (китайское качество оно везде одинаковое) и не в завышении цены (хотя не без этого) – а в маркировке. Так, например, под одним торговым названием ORIENT XWT-PE2S1P могут продаваться три совершенно разных адаптера (на разных чипах). И продавцу нечего сказать, предъявить – по маркировке все совпадает (по фотке - нет), а тебе подсовывают совсем иное нежели ты ожидал … Общем еще раз – «чур» Вас от Ориента!

И так в этой статье мы поговорим о двух адаптерах PCIe-x1 to LPT: первый на базе чипа MCS9901 (тот, что был куплен неожиданно вместо ожидаемого MCS9835) и второй – OXPCIe952 (куплен не от хорошей жизни – а ввиду глючности драйверов первого).

И так. MCS9901 в исполнении Ориента. На матери с чипсетом AMD880G+SB850 работать корректно отказался – после установки драйвера система корректно не отключается и не перезагружается (на интеловской матери все нормально). Контроллер использует собственный драйвер и располагает свои регистры в «верхней» области карты портов (по нестандартным адресам) – см. рисунок.

OXPCIe952 (заказан через eBay из того же китая) – но стоит отметить что в отличии от первого данный чип разработан американской компанией.  Драйвер представляет из себя не более чем inf-файл – чип полностью и аппаратно эмулирует LPT-порт и работает со стандартным драйвером parport.sys, правда регистры также находятся по нестандартным адресам.

Отличия в значках на скриншотах обусловлены применением разных наборов иконок, а не аппаратными особенностями.

По результатам тестирования (проводимых специально написанной для этого на коленке программой – об этом ниже) осталось положительное впечатление об обеих карточках (правда, как я уже говорил у первой с совместимостью туговато – драйвер кривоват). Единственно, что нужно учитывать - нестандартные адреса регистров порта, а также то, что переключение режимов (SPP, PS2, EPP, ECP) происходит программно! По умолчанию выставляется режим совместимости – SPP (т.е. однонаправленный). Другими словами для своих разработок проблем при использовании подобных карточек (с архитектурной точки зрения) практически нет, а вот использовать их со старым софтом (без исходников) может оказаться проблематично. Это все был разговор про работу в среде WinXP. Для MCS9901 формально есть драйвер не только под линукс но и под ДОС (работоспособность не проверялась). Для OXPCIe952 только под линукс. Карточки также имеют дрова для работы в среде Win x64.

Тестирование портов LPT. LPTester.

Оказалось, что не существует (я не нашел) программ, позволяющих протестировать работу LPT порта, располагающегося по нестандартным адресам. Решил я тряхнуть стариной и сел кодить. Вобщем время на ее написание потратилось совсем немного – больше на косметическую отладку, прежде чем выкладывать ее в свет. Совместно с программой предполагается использовать вольтметр и резистор порядка 250 Ом (опционально удлинитель LPT порта разные распайки и крепежи – для удобства).

Картинка для программы позаимствована отсюда

Скачать последнюю версию программы LPTester ...

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

Из исходников секрета я не делаю – скрывать там нечего, на оптимальность не претендую … главное функционал (меня он более чем устроил для тех целей, которые передо мной стояли).

И немного о нюансах. Разумеется под WinXP и более новыми нельзя работать с портами ввода/вывода напрямую – нужен драйвер, висящий на нулевом кольце ОСи (модуль ядра). Раньше я использовал для этих целей DLPortIO - хотя в народе более популярным был почему-то UsePort (который, несовместим с расширенной 16 битной адресацией карты портов), и, стало быть, не применим для карточек на PCIe-x1. Но решение нашлось достаточно быстро – inpout32 (кстати, есть и версия этого драйвера под x64), плюс в отличие от предыдущих он не требует от пользователя к.л. действий по установке его в систему.

MiGeRA. (сентябрь 2011)

Заглавная » Радиоэлектроника » LPT порт в современном системнике