DLPortIO x64 и 64-bit Windows.

К сожалению, драйвера и библиотеки DriverLINX (DLPortIO.sys + DLPortIO.dll) не существует для версий Windows под архитектуру x86-64 (AMD64, Intel64). По крайней мере, я их не находил. Scientific Software Tools, Inc. (http://www.sstnet.com) прекратила поддержку этого драйвера, передала его другой фирме, но и там, кажется, есть только 32-битный вариант.
К счастью, существует комплект InpOut32 (hwinterface.sys+inpout32.dll), а также 64-битная версия InpOutx64 с драйвером hwinterfacex64.sys.

После добавления в библотеку InpOut32.dll необходимых для совместимости с DLPortIO.dll функций и смены имени на DLPortIO комплект на базе hwinterfacex64.sys становится заменой DriverLINX для 64-битных систем (Windows XP 64, Vista 64, Windows 7 64). avreal, как и други программаторы AVR, может работать через эту модифицированную библиотеку с адаптерами на порт LPT.

Именно такой комплект был выложен на форуме поддержки PonyProg под названием DLPortIO x64. Но в нём нет функций блочного доступа к портам типа DlPortWritePortBufferUchar и других, которые были в оригинальной DLPortIO.dll. Поэтому с ним не работают программы, нуждающиеся в таких функциях. Начиная с версии 1.28r2, avreal при отсутствии нужной функции в библиотеке испольует свою функцию, которая в цикле обращается к DlPortWritePortUchar. Таким образом, avreal 1.28r2 и более новые будут работать с вариантом DLPortIOx64 с форума PonyProg.

Один из участников форума electronix.ru дописал необходимые функции и пересобрал InpOut32.dll с максимально полной имитацией DLPortIO.dll.

Загрузка

Я проверил работу avreal с обеими вариантами библиотеки и тут выкладываю вариант с полной эмуляцией. С ним работают и более старые версии avreal без внутренней функции блочной записи и должны работать все программы, рассчитанные на DLPortIO.

Особенность работы 32-битних программ под 64-битной Windows

В 64-битных версиях Windows для 32-битных программ используется перенаправление каталогов. 32-битная программа-инсталлятор от DLPortIO не может установить драйвер в 64-битной системе, но в этом и нет нужды. На том же форуме при обсуждении универсальной библиотеки odvport (о чём несколько позже), было подсказано, как можно установить драйвер простым командным файлом. Аналогичный командный файл используется и для CLI-инсталлятора 32-битной DLPortIO.

Установки эмулятора DLPortIO в 64-битной Windows XP.

  • Запустите DLPortIO_install.bat от имени администратора.
  • Согласитесь с внесением изменений в реестр.
  • Перезагрузите компъютер.

Установки эмулятора DLPortIO в 64-битной Windows 7.

Windows 7/64 требует использовать только подписанные драйвера. Можно при каждой загрузке выключать проверку подписей, нажимая F8 и выбирая пункт «DISABLE DRIVER SIGNATURE ENFORCEMENT», как это описано в уже упомянутой теме на форуме PonyProg. В этом случае драйвер устанавливается так же, как и в Windows XP.

Также существует специальный режим Windows, предназначенный для разработчиков. В нем разрешается использование драйверов с «тестовой» подписью и именно это нужно сделать с данным драйвером. Подробнее об этом — на сайте разработчика программы DSEO.

Итак:

  • Загрузите програму DSEO и запустите её от имени администратора (UAC можно не выключать): нажимте правую кнопку мыши на файле программы и выберите сответствующий пункт из меню.
  • Подпишите драйвер: выберите «Sign a System File», нажмите кнопку Next, в строке наберите полное имя файла драйвера. Например, если инсталляционный архив распакован в каталог D:\dlportio-64, то нужно задать имя D:\dlportio-64\DLPortIO.sys.
  • Включите режим разрешения тестовых подписей выбором «Enable Testmode» и нажатием кнопки Next.
  • Выйдите из программи dseo.
  • Запустите DLPortIO_install.bat от имени администратора.
  • Согласитесь с внесением изменений в реестр.
  • Перезагрузите компъютер.

Установка и активация драйвера в Windows Vista/64 должны проходить аналогично Windows 7/64, но я сам этого не проверял.


Смотрите также DLportIO и 32-бит Windows

10 Responses to “DLPortIO x64 и 64-bit Windows.”

  1. Антон Гусев says:

    Привет, Александр!

    На электрониксе один товарищ отписал (https://electronix.ru/forum/index.php?showtopic=53528&view=findpost&p=1489458), что нашёл 64-битный драйвер подписанный. Вот ссылка сразу на драйвер:
    http://www.highrez.co.uk/downloads/inpout32/
    Может, пригодится.

    • ReAl says:

      Подписанній это хорошо, свежий тоже неплохо.

      «Вы будете смеяться»™, но прямо на этой странице вверху линк туда же, к этим же «немецким ребятам» (и у пони-прогов был ихний же комплект под другим названием), корни все от них. Тут выложено дополненное в том же 2010 году блочными функциями, линк на электроникс на ту же тему 🙂
      avreal в конечном итоге может работать и без этого дополнения — если dll не предоставляет функцию, используется своя аналогичная, которая дёргает dll ради каждого байта.

      А вот что касается не-64-битности… «Ничего не понимаю»™
      Выше у меня написано, что этот драйвер не становился в 64-ке, если пробовать устанавливать из-под 32-битной програмы (т.е., находясь в WoW-эмуляции 32-битного окружения), а как раз в честном 64-битии он становился.
      У меня есть отдельній винчестер с мелкими разделами FreeBSD, XP/32, XP64, W7/32, W7/64, «главным» линуксом и большим разделом для сохранения образов мелких разделов с теми ос. Перед тем, как я написал это сообщение, я несколько раз проверил установку и работу с чистого листа, т.е. восстанавливая образы XP/64 и W7/64, сделанные после инсталляции до установки нестандартных драйверов. Всё работало.
      Может, что-то в самих виндовсах поменялось?
      Будет время, найду тот винчестер, на нём посвежее 7-ку или поставлю рядом, или заменю старую и попробую ещё. К сачастью, у меня еще есть куда ткнуть pci-плату с LPT.

      • Антон Гусев says:

        «Мопед не мой, я просто разместил объяву»™ 🙂
        Но если ты в курсе про тот вариант – тогда всё в порядке.
        Процитирую твой ответ на электрониксе, ладно?

        • ReAl says:

          Было так — я нагуглил, кто-то дал линк, … — в итоге в конце 2009/в начале 2010 нашлось пони-проговское в теме про /64 и те «немецкие ребята». Оказалось, это одно и то же, но эмуляция DLPortIO была не полная (как видно по истории, они и в 2011 добавляли совместимость). В этой же теме на электрониксе я тогда написал, пока _pv допиливал недостающие функции, я решил при ошибке динамической линковки блочной функции из библиотеки подставлять свою. Проверил обе версии (оригинальную немецкую и допиленную) в двух разніх /64 оськах. Только потом выложил в общий доступ. Допиленную, на случай нужна кому-то не для avreal.
          Все последующие версии avreal я всегда проверял на всех осях из перечисленных, драйвера стояли как в 2010 поставил, avreal работал.

          Что и почему не работает сейчас — интересно, но не критично для меня, может полюбопытствую, когда будет время.
          Кто там что написал про меня — как-то с годами волнует все меньше, а в эти вот годы вообще практически не волнует.

          • Антон Гусев says:

            > Кто там что написал про меня — как-то с годами волнует все меньше, а в эти вот годы вообще практически не волнует.

            Ну тогда ладно:) Рад был пообщаться!

  2. Андрей says:

    Спасибо за коментарии.
    Хотелось бы ещё пару моментов уточнить.

    Ключ -v (если он записан в одной строке с другими ключами) производит сверку и области памяти с новым _n_ или только область памяти из *.hex?
    (Пока я перед строкой с -l2 просто считываю всё в xx.hex для проверки
    {n у меня – это HE число перезаписей}).

    • ReAl says:

      -nXXX пишется и верифицируется независимо от *.hex сразу после стирания,
      Потом пишется (и верифицируется) *hex (с наложенными на него -c*).

  3. Андрей says:

    Приветб Александр!

    Если записать строку вот так, то всё работает.

    @avreal32 +MEGA8 -p1 -as -o4000 -%% -e -w -n -c %HEXFILE% -c*serno4=1FE8,serno.txt -c*bytes4=1FF0,01020304 > output.txt

    Неплохо бы чтобы подобная строка гуглилась 🙂

  4. Андрей says:

    avreal/WIN32 – AVR controllers LPT programmer by Redchuk Alexandr
    v1.25rev1 (Jan 1 2005 18:47:12) ReAl@real.kiev.ua
    bug-reports, suggestions and so on mail to avreal@real.kiev.ua

    Command:
    +MEGA8 -p1 -as -o4000 -% -w -n3456 -v -c -c*serno4=1FE4,serno.txt -c*bytes4=1FE0,01020304 bzv.hex
    % LPT base port 0x378
    % assume that LPT data writes not faster then 1uS
    % Atmel adapter for STK*00 found
    % STK mode
    % osc = 4000kHz -> setup=1, hold=1,1
    File ‘-c*serno4=1FE4,serno.txt’ not found

    Что-то не могу понять, где у меня ошибка в синтаксисе.
    Если оставить только:

    -c*bytes4=1FE0,01020304

    то выскакивает ошибка, что File ‘-c*bytes4=1FE0,01020304’ not found.

    • ReAl says:

      Первый -c говорит взять следующий аргумент как имя файла. Нужно или так, с %HEXFILE%, или -c для файла в конец

      +MEGA8 -p1 -as -o4000 -% -w -n3456 -v -c*serno4=1FE4,serno.txt -c*bytes4=1FE0,01020304 -c bzv.hex

      или вообще без этого -c

      +MEGA8 -p1 -as -o4000 -% -w -n3456 -v -c*serno4=1FE4,serno.txt -c*bytes4=1FE0,01020304 bzv.hex

Leave a Reply

[flagcounter image]