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:

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.

Подаруночок від 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»

Помилки в avreal 1.28r2 та 1.28r3

Виявилася доволі дивна помилка в avreal 1.28r2 та 1.28r3. При співпадінні умов

  • Використовується програматор на базі FT2232/FT4232
  • Зайняті верхні два байти флеш-пам’яті (кодом або лічильником стирань)
  • В одному виклику avreal виконується робота як з флеш пам’яттю, так і з ф’юзами
  • Присутній ключ верифікації -v

для деяких мікроконтроллерів після першої операції верифікації робота обривається на помилці synchronosation lost.

Continue reading ‘Помилки в avreal 1.28r2 та 1.28r3’ »

AVReAl update – 1.28r1

Вийшла нова версія програматора avreal – v1.28r1 (Sun 2010-01-31).

  • Додано підтримку FT2232H, FT4232H з можливістю використовувати для програмування обидва канали з MPSSE. Дозволені імена виводів перераховано в описові конфігурування.
  • Додано ключ -k для очікування натискання кнопки на адаптері програмування і відповідний конфігураційний запис key.
  • Додано модифікацію ключа -os для того, щоб задавати безпосередньо частоту SCK, а не частоту тактування мікроконтроллера.
[flagcounter image]