Різні версії WinAVR поруч

Коли виходять нові версії компіляторів, у більшості випадків варто спершу спробувати нову версію в роботі, не відмовляючись остаточно від старої. Лише після перевірки перейти на нову версію, можливо навіть попроектно. Бажано залишити можливість повернення до попередньої.
Для цього необхідно встановити поруч кілька версій:

avr-gcc folders

Але ж треба якось вказати своїй системі програмування, яку саме версію використовувати. Звісно, при необхідності замінити версію витирати з кореня диску каталог C:\WinAVR та копіювати у нього один з каталогів компіляторів це «дещо незручно».
»»» Прочитати, як це можна зробити зручніше…

Windows7 vs WindowsXP vs Linux

Так-сяк закінчив переїзд більшості робіт на ноутбук. Але на «великому» комп’ютері у мене крім Ubuntu ще була жменя розділів по 4..8 гігабайт з 32- та 64- бітними версіями WindowsXP та Windows7 («виключно з метою ознайомлення нових версій avreal з середовищем, де їм доведеться працювати»). Ставити весь цей зоопарк на ноутбук бажання нема. Але у ноутбука є гніздо eSATA.
»»» Читати далі про мороку з завантаженням Windows

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

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

AVReAl @ XP/64, Windows7/32, Windows7/64

Не було б щастя, так нещастя допомогло.
Знайшов можливість самостійно перевірити роботу avreal під WindowsXP/64, Windows7/32, Windows7/64, досі я перевіряв лише під W2K та XP/32.
Поки-що лише для FTDI (FT2232) – з драйверами CDM 2.06.00 все працює. Найближчими днями буду розбиратися з LPT для перерахованих систем, перевірю різні драйвери та методи їх встановлення. Обговорення було на електроніксі десь з цього місця.

[flagcounter image]