AVReAl/Linux та права адміністратора

Від самого початку AVReAl/Linux працював з LPT напряму, командами процесора для доступу до портів вводу/виводу. Для цього потрібні права адміністратора і avreal встановлюється з параметрами власника та групи root та піднятим SUID-бітом. Пізніше було дописано підтримку роботи з пристроями /dev/parport, для доступу до яких достатньо включити користувача в групу lp. Все це описано у публікації AVReAl та LPT в Linux.

Коли в програму додалася підтримка роботи з FTDI MPSSE, я помітив, що без прав рута не виходить з’єднатися з мікросхемою FT2232. Але у мене на комп’ютері всі версії AVReAl працюють від імені адміністратора, бо час від часу робиться перевірка роботи з прямим доступом до LPT. Тому програма працювала з FT2232 і у мене не було потреби копати глибше.

Нарешті вирішив розібратися з цим питанням. Як це часто буває, щоб зробити правильно, досить лише зупинитися, знайти час трохи почитати та подумати.

Для того, щоб обійтися без привілеїв адміністратора при роботі з програматорами на базі мікросхем FTDI, потрібно в каталог /etc/udev/rules.d/ додати файл з іменем, наприклад, 55-ftdi.rules та наступним вмістом:

# FTDI-based devices
#
# FTDI vid=0403
# FT2232, FT2232H: pid=6010
# FT4232H:  pid=6011
# FT232H:   pid=6014
SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010|6011|6014", OWNER="root", GROUP="root", MODE="0666"

Якщо програматор було підключено, його слід відключити та знову підключити до комп’ютера. Перезавантажуватися непотрібно.

Правила написано з розрахунку на мікросхему FTDI, якій записом в конфігураційній EEPROM не замінено vid/pid за умовчанням. Якщо використовується адаптер з іншими vid/pid, треба додати відповідний рядок в цей файл.

Пакет OpenOCD містить в собі файл правил для всіх адаптерів, які він підтримує. При використанні з AVReAl з адаптером на мікросхемі FTDI з цього списку можна просто перенести файл правил OpenOCD в каталог /etc/udev/rules.d/. В правилах OpenOCD використано GROUP="plugdev", MODE="0664". Але я не бачу принципової різниці між цими двома варіантами на «десктопі», де всіх користувачів за умовчанням включено в групу plugdev, щоб вони могли підключати USB-флешки та переносні диски.

Звісно, щоб записати цей файл, права адміністратора знадобляться. Але після цього AVReAl працюватиме від імені будь-якого користувача.

Attached Files:

Windows7 vs WindowsXP vs Linux

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

AVReAl update — 1.28r6

Вийшла нова версія програматора avreal — v1.28r6 (Sun 2011-01-09).

  • Додано ATmega325A, ATmega329A.
  • Додано імена-синоніми для тих контроллерів з літерою «A», які не відрізняються від «не-A» кристалів:
        ATmega165A, ATmega645A, ATmega6450A
        ATmega169A, ATmega329PA, ATmega649A, ATmega6490A
  • avreal/Linux64, адаптери на FT2232*, FT4232H:
    Біблотека завантажується по імені libftd2xx.so.0, а не libftd2xx.so, як це було раніше. Це уможливлює встановлення на комп’ютері паралельно старої (потрібної для avreal/Linux64) та нової версій бібліотеки, наприклад, libftd2xx.so.0.4.16 та libftd2xx.so.1.0.0.
    avreal/Linux32 може працювати як зі старими, так і з новими версіями бібілотеки.
    Читати більше про проблеми з libftd2xx.so.1.0.0 в 64-бітному лінуксі.
  • Ключ -k/-K старту програмування по натисканню кнопки на адаптері отримав дві форми з різним порядком етапів роботи avreal.

avreal та LPT в Linux

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

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

Continue reading ‘avreal та LPT в Linux’ »

Подаруночок від FTDI

Подаруночок від FTDI виявився дуже цікавим.

У повній відповідності до принципу «дивись рисунок 1» вони взяли і замінили типи даних при переході від бібліотек libftd2xx.so версій 0.4.x до libftd2xx.so.1.0.0. Подаруночок впливає лише на роботу з 64-бітними варіантами бібліотек, з 32-бітними проблем нема.

Бібліотека ftd2xx народжувалася в Windows та ще й містить в собі функції FT_W32_ххх() для роботи з мікросхемами FTDI в стилі функцій роботи з COM-портом у WinAPI. Тому в ній використовуются стандартні для WinAPI типи даних DWORD, BYTE тощо. Щоб при написанні Linux-версії бібліотеки не міняти файл ftd2xx.h та всі тексти, в проект було додано файл WinTypes.h з означеннями потрібних типів. Загалом, крок логічний, але…

Continue reading ‘Подаруночок від FTDI’ »

avreal/linux and libftd2xx.so.1.0.0 64-bit

На початку грудня FTDI зробила нам невеличкий подаруночок — випустила версію 1.0.0 бібліотеки libftd2xx.so (попередня версія була 0.4.16). Щось там, мабуть, дуже сильно покращили, але 64-бітна версія avreal/linux перестала працювати. В чому причина, явні помилки десь, чи «просто неохайний» код, через який вилізли проблеми в avreal, доведеться ще розбиратися. Поки-що я на сторінці download виклав архіви попередньої версії libftd2xx, з якою avreal працює стабільно.


Більше про це тут: «Подаруночок від FTDI»

[flagcounter image]