Archive for the ‘LPT-based’ Category.

avreal та LPT в Windows

З точки зору AVReAl поняття «Windows» розпадається на дві родини операційних систем.

Системи родини Windows 9X, наприклад, Windows 98, не вимагають встановлення драйвера доступу до LPT. При роботі в такій системі avreal працює з портами напряму.

Як досі поширена Windows XP, так і Windows 7 належать до другої родини — Windows NT. Для них потрібен драйвер DLPortIO, встановлення якого описано раніше окремо для 32-бітних та 64-бітних систем.

Для всіх версій Windows в командному рядку необхідно вказувати номер LPT або базову адресу порта, наприклад, -p1, -p378. При цьому номер порта є лише скороченням стандартної адреси, як це сказано в описові ключа -p. Вважається, що LPT1/2/3 мають адреси 378/278/3BC.

Якщо LPT-порт знаходиться на нестандартних адресах, наприклад, використовується плата розширення PCI-LPT (PCI-Express LPT, PCMCIA-LPT), базову адресу можна дізнатися у властивостях порта в диспетчері пристроїв.

»»» Як дізнатися адресу LPT у Windows XP, Windows 7

avreal та LPT в Linux

На відміну від Windows лінійки NT, для роботи avreal з LPT-адаптерами в Linux/x86 (32- та 64-бітних) немає потреби в спеціальному драйвері на зразок DLPortIO.sys. На відміну від Windows 98, в Linux будь-яка програма не може просто так працювати з портами вводу-вводу, для цього необхідно налаштувати дозвіл на таку роботу.

Є два варіанти роботи — безпосередній доступ до портів вводу-виводу та робота з пристроєм паралельного порта parport. Безпосередній доступ до портів дає дещо вищу швидкість програмування, але вимагає використання привілеїв адміністратора системи під час запуску avreal, що не завжди зручно чи можливо.

Continue reading ‘avreal та LPT в Linux’ »

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.

»»» Як встановити DLPortIO в 64-бітній Windows

DLPortIO та 32-bit Windows.

Для Windows NT, Windows 2000 та 32-бітних Windows XP, Windows 7 встановлення драйвера DLPortIO.sys та бібліотеки DLPortIO.dll можна провести як звичним для більшості користувачів Windows GUI-інсталятором, так і інсталятором CLI (Command-Line Inteface), через командний файл. Враховуючи те, що користувачі avreal не цураються командного рядка, рекомендую використовувати інсталяцію з командним файлом, архів якої має майже в десять разів менший розмір — близько 17КБ замість близько 170КБ. Воно наче і несуттєво при «нинішніх інтернетах», але ембеддерам звично не розбазарювати ресурси без потреби :-) Та й сам процес встановлення мало відрізняється, адже командний файл вже написано, треба лишень його запустити.

»»» Як встановити DLPortIO в 32-бітній Windows

DLPortIO 32, DLPortIO x64 for Windows XP, Windows 7

avreal нормально працював під 64-бітними версіями Windows і раніше. Хто знав, що і як треба робити — ставив собі потрібний драйвер і програмував AVR-ки. Я вже досить давно практично постійно працюю під лінуксом, тому мене ця тема мало цікавила. А час, то є річ ще дивніша, ніж мед у Вінні-Пуха. Як тільки він є — так його відразу нема.
Нарешті я знайшов час і місце2 для того, щоб власноруч перевірити встановлення та роботу звичного для Windows 2000 та Windows XP драйвера DLPortIO під 32-бітною Windows7 та замінника цього драйвера для WindowsXP/64 та Windows7/64. Без цього мені просто важко було б викладати щось у себе на сайті. Програма dd попрацювала як слід, відновлюючи розділи з образів для чергових перевірок встановлення на «чисту» систему тим чи іншим (в тому числі правильним чи неправильним) способом.

В результаті вчора я виклав на сторінці download архіви для двох методів інсталяції DLPortIO-32 (графічний інтерфейс та командний рядок) та архів з DLPortIO-64 (командний рядок). Вже можна викачувати, ставити і працювати.
А я найближчим часом напишу про все це трохи детальніше.

місце2 — це не зноска, це піднесення до другого степеня. Треба було знайти і місце в сенсі комп’ютера, над яким так позбиткуватися, і місце на його жорсткому диску.


Написав:
DLPortIO та 32-bit Windows.
DLPortIO x64 та 64-bit Windows.

LPT та PnP в Windows.

Під ОС Windows avreal іноді нестабільно працює з LPT. Програмування зрідка може пройти нормально, а може в будь який момент дати збій, наприклад, synchronisation lost.

Причиною таких збоїв може бути періодичне опитування підсистемою Plug-and-Play (PnP) операційної системи Windows порта LPT з метою виявлення підключених пристроїв. Таке опитування проводиться під час завантаження системи, що добре видно по перемигуванню світлодіодів на адаптері програмування, але воно може відбуватися і під час роботи ОС. Біда в тому, що драйвер DLportIO.sys не блокує доступ до LPT від інших програм під час роботи з портом клієнта цього драйвера і підсистема PnP щиро впевнена, що порт не зайнято, тому спокійно лізе перевіряти стан LPT і порушує роботу avreal.

В одному особливо «цікавому» випадку у мене програма стабільно встигала записатися в мікроконтроллер, видати привітання на рідкокристалічний індикатор на HD44780 і почати працювати, але далі в довільні моменти часу перезапускалася. Я пару годин шукав помилку у себе в програмі — непроініціалізований вказівник на функцію чи необроблене преривання, доки не помітив, що перезапуску програми передує перемигування світлодіода активності на адаптері Altera ByteBlaster. Windows при звертанні до порта видавала таку послідовність, яка активувала виходи адаптера, видавала імпульс RESET і знову вимикала адаптер. І в цьому випадку не допомогло б наіть блокування LPT драйвером на час роботи програми, адже avreal в цей час вже завершив роботу.

Щоб позбавитися спричинених PnP проблeм завантажте файл disable-lpt-poll.reg та запустіть його на виконання. Як видно з вмісту файлу, він прописує в реєстрі Windows ключ, який забороняє опитування (poll) під час роботи системи:

REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Parport\Parameters]
"DisableWarmPoll"=dword:00000001
[flagcounter image]