OpenOCD та FTDI-MPSSE

Зрідка щось пробуючи на LPC1766, вже доволі тривалий час не зазирав у новини OpenOCD. Як зібрав колись 6-тої версії, так і працював. Ще раніше, коли робив собі плату на FT2232H, трохи промахнувся і керування драйверами зробив несумісним з жодним з підтримуваних OpenOCD 6.x адаптерів. Тому для роботи з кортексами діставав напівмакетку (плата з FT2232D та шинником, перерізана на сумісність з Amontec JTAGkey).

А оце підтягнув git-ом свіжий стан, а там вже 8.0. А з 7.0 вже для FTDI/MPSSE підтримується довільне призначення службових виводів (reset, керування драйверами). Навіть краще, ніж в avreal, бо можна задати довільне своє ім’я сигналу, прив’язати його до ніжки і керувати ним командами OpenOCD — інтерактивно або з командного рядка. Додав у makefile в частині формування командного рядка вмикання червоного світлодіода на початку програмування і вимикання в кінці. Все чудово запрацювало, через FT2232H програма зашивається у півтора-два рази швидше, ніж через FT2232D, веріфікується у три-чотири рази швидше. І таке враження, що і через FT2232D свіжа версія OpenOCD працює відчутно швидше, ніж 6.x, але вже ніде перевірити, а спеціально збирати ліньки.

І дуже вчасно я сьогодні (хм… вже вчора) за це взявся — через хвилин двадцять після того, як зберіг на флешку конфігураційний файл та приклад makefile, подзвонив колега і сказав, що на роботі полетів J-Link. А там у мене точно така ж плата з FT2232H лежить.

Ошибка в синхронизации (MPSSE)

Обнаружена ошибка, из-за которой не проходит процедура пересинхронизации дополнительным импульсом SCK в следующих условиях:

  • программа в микроконтоллере выставляет на ножке SCK высокий уровень;
  • используется MPSSE-адаптер (FT2232, FT4232H, FT232H).

При работе через LPT-адаптер синхронизация проходит нормально, после стирания через него опять можно запрограммировать через USB-адаптер.

Ошибка обнаружена при работе с AT90S8515, на ATmega168 её воспроизвести не удалось.

Поисками займусь в ближайшие дни.


Ошибка исправлена в версии 1.28r13.

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

Изначально AVReAl/Linux работал с LPT напрямую, командами процессора для обращения к портам I/O. Для этого avreal должен запускаться с правами администратора. Позже была дописана поддержка работы с устройствами /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, которой не заменены vid/pid по умолчанию. Если используется адаптер с другими vid/pid, нужно добавить соответствующую строку в файл.

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

Attached Files:

FT2232C, FT2232L, FT2232D

Час від часу зустрічаю запитання по відмінностях між цими мікросхемами. В описах чи відкритих проектах в інтернеті згадується FT2232C, а в продажу зараз є FT2232D. Виникають сумніви у сумісності програм та адаптерів.
Як це часто буває, всі ці сумніви розвіюються при перегляді сторінки опису FT2232D. Але чомусь багатьом легше не подивитися на сайті виробника, а спитати на форумі чи набрати рядок «різниця FT2232C та FT2232D» в пошуковику. Ну що ж, ось він, цей рядок для нього, хай йому буде легше 🙂

Документації на старіші версії мікросхем на сайті вже немає, але безпосередньо на сторінці сказано:

The FT2232D is the 3rd generation of FTDI’s popular USB UART/FIFO IC. The FT2232D is an updated version of the FT2232C and its lead free version, the FT2232L. Please note that the FT2232D is not an new generation of device.

The FT2232D is lead free and pin compatible with the original FT2232C and FT2232L devices. All the original device features are supported with some additional features available including a CPU-style FIFO mode and an extended operating temperature range.

І що ж все це означає? » » »

AVReAl и MPSSE

Некоторые из микросхем фирмы FTDI имет встроенный аппаратный блок последовательных интерфейсов MPSSE, предназначенный для реализации интерфейсов JTAG, SPI, I2C. FT2232D и её более старые версии FT2232C, FT2232L поддерживают Full-Bandwidth USB и имеют верхнюю границу частоты сигнала TCK/SCK 6 МГц. Для микросхем, работающих в стандарте USB 2.0 Hi-Speed, т.е. для FT2232H, FT4232H, FT232H, граница выше — 30 МГц.

MPSSE определяет использование линий DBUS0..DBUS2 как сигналов TCK/SCK, TDI/MOSI и TDO/MISO. Для программирования микроконтроллеров AVR необходим сигнал RESET, для которого можно использовать линию DBUS3 (TMS/CS), что и сделано в AVReAl по умолчанию.

Использование MPSSE с AVReAl » » »

AVReAl update — 1.28r9

Вышла новая версия програматора avreal — v1.28r9 (Tue 2011-12-20).

  • Добавлена поддержка FT232H (режим MPSSE)
  • Изменена обработка задержек в Windows-версии: уменьшена загрузка процессора при работе с ключами -k/-K
  • Для всех микроконтроллеров изменён метод пересинхронизации (resync). Сначала делается одна попытка синхронизации импульсом RESET, после чего выполняется способ с дополнительным импульсом SCK.
    Больше про методы синхронизации.

AVReAl update – 1.28r1

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

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