DLPortIO x64 and 64-bit Windows.

Unfortunately, there is no DriverLINX package (DLPortIO.sys + DLPortIO.dll) for x86-64 (AMD64, Intel64) Windows versions. I didn’t find it at least. Scientific Software Tools, Inc. (http://www.sstnet.com) discontinued the package support.
Fortunately, there is InpOut32 package (hwinterface.sys+inpout32.dll) and 64-bit version InpOutx64 with hwinterfacex64.sys driver.

If DLPortIO-compatible functions are added into InpOut32.dll and the library is renamed into DLPortIO.dll, the package will be a replacemant of DriverLINX for 64-bit OS (Windows XP 64, Vista 64, Windows 7 64). Like other AVR programmers avreal can use LPT-based adapters with modified library.

DLPortIO x64 from PonyProg support forum was made this way. But it has no block access functions like DlPortWritePortBufferUchar from original DLPortIO.dll. As a result, programs which requires such functions don’t work with this package. Starting from 1.28r2, avreal uses an internal function that calls DlPortWritePortUchar in loop if there is no the block-writing function in the library. That why avreal 1.28r2 or newer will work with DLPortIOx64 from PonyProg forum.

One of electronix.ru forum members added a block IO functions and rebuilt InpOut32.dll with full DLPortIO.dll emulation.

Downlowd

I tested avreal with both library versions. Here is a version with full emulation. Old avreal versions without intenal block-writing function also work with this library.

Some trait of 32-bit program under 64-bit Windows

64-bit Windows uses directory redirection for 32-bit applications. 32-bit installer from original DLPortIO package can’t install a driver in 64-bit system but it’s not required yet. While universal library odvport discussing (the library will be described later) someone suggested me how to install a driver by a simple command file. An identical file is used for 32-bit DLPortIO CLI-installer as well.

Installing DLPortIO emulator in 64-bit Windows XP.

  • Run DLPortIO_install.bat as administrator.
  • Agree with registry changes.
  • Restart the computer.

Installing DLPortIO emulator in 64-bit Windows 7.

Windows 7/64 requires digitally signed drivers. If you want to use unsigned driver you can turn off signature checking every time booting Windows by pressing F8 and selecting “DISABLE DRIVER SIGNATURE ENFORCEMENT” as it is described in named topic on PonyProg forum. In this case installation process is the same as for Windows XP.

Also there is a special Windows mode for driver developers — test signing mode. In this mode developers can use a driver with test signing so they need not to sign a driver under development after each modification. Read more on DSEO program page.
The program can be used for DLPortIO.sys test signing and enabling the test mode.

Thus:

  • Download DSEO program and run it as administrator (UAC need not to be turned off): press right mouse button on the program file name and select required option in context menu.
  • Sign a driver: select «Sign a System File», pres “Next”, put full driver file name in a dialog. For example, if installation archive is unpacked into D:\dlportio-64 directory, the full name will be D:\dlportio-64\DLPortIO.sys.
  • Enable test signing mode: select “Enable Testmode” and press “Next”.
  • Leave dseo.
  • Run DLPortIO_install.bat as administrator.
  • Agree with registry changes.
  • Restart the computer.

Driver installation and activation for Windows Vista is likely to be the same as for Windows 7/64 but I didn’t test that.


See also DLportIO and 32-bit Windows

10 Responses to “DLPortIO x64 and 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]