Программатор
Программа́тор — аппаратно-программное устройство, предназначенное для записи/считывания информации в постоянное запоминающее устройство (однократно записываемое, флеш-память, ПЗУ, внутреннюю память микроконтроллеров и ПЛК[1]).
Классификация программаторов
По типу микросхем
- Программирующие микросхемы ПЗУ (ПЗУ с ультрафиолетовым стиранием, ППЗУ, флэш-память).
- Программирующие внутреннюю память микроконтроллеров.
- Программирующие ПЛИС.
Универсальные программаторы могут поддерживать все вышеперечисленные типы.
По сложности
Если радиолюбителю нужно единожды запрограммировать микроконтроллерное устройство, существует возможность обойтись простейшим программатором, подключаемым к COM-, LPT-порту или USB. Например, самый простой программатор для микросхем AVR — это кабель из шести проводов и четырёх резисторов (так называемый программатор PonyProg)[2].
Для радиолюбителей, занимающихся разработкой программ для микроконтроллеров, существуют более сложные программаторы — такие устройства часто содержат свой микроконтроллер. Подобные программаторы удобны тем, что после работы переводят свои выходы в Z-состояние, и запрограммированное устройство можно испытывать, не отключая программатора. Такие программаторы, как правило, работают с одним-двумя семействами микросхем[3]. При самостоятельном изготовлении программатора такого класса может возникнуть «проблема курицы и яйца» — если в схеме программатора присутствует микроконтроллер, то и его необходимо запрограммировать при отсутствии готового программатора[3]. Для её разрешения приходится отдавать микросхему владельцу готового программатора, либо изготавливать простейший программатор для подключения к COM- или LPT-порту компьютера.
В конструкторских бюро и лабораториях применяются универсальные программаторы. Поскольку в таких устройствах каждый из выводов разъёма (а этих выводов может быть до сотни) может подавать на микросхему напряжения от 0 до 27 В с точностью в 0,1 вольт и частотами до 40 МГц, универсальные программаторы бывают очень дороги — до нескольких тысяч долларов. Зато при появлении новой микросхемы достаточно добавить её поддержку на программном уровне.
По подключению микросхемы
- Параллельный.
- Внутрисхемный.
Параллельные программаторы содержат разъём, в который и вставляется программируемая микросхема. Внутрисхемные пригодны только для тех микросхем, в которых поддерживается внутрисхемное программирование, то есть позволяют прошивать микросхему, не вынимая её из устройства.
При покупке параллельного программатора стоит обратить внимание на качество разъёма, в который устанавливается микросхема. Обычный одноразовый разъём долго не прослужит; программатор должен иметь цанговые разъёмы — а ещё лучше ZIF. В дорогих программаторах есть несколько разъёмов — под разные виды корпусов.
По подключению к компьютеру
Первые программаторы были автономными — для набора прошивки имелась клавиатура или коммутационная панель. С распространением ПК такие программаторы были полностью вытеснены подключаемыми к компьютеру — специальная программа (которая также называется программатором) передаёт прошивку с компьютера, а программатору остаётся только записать её в память микросхемы.
Для подключения программаторов могут применяться:
- Последовательный порт.
- Параллельный порт.
- Специализированная интерфейсная плата (ISA или PCI).
- USB.
- Ethernet.
Стоит заметить, что в самых простых параллельных и последовательных программаторах управляющему ПО приходится напрямую управлять логическим уровнем на выводах порта (на жаргоне электронщиков «дрыгоножество» или bitbang). Такое прямое управление в Windows NT запрещено, это обходится установкой специализированного драйвера; через адаптеры USB→COM bitbang-программаторы работают крайне медленно (единицы-десятки байт в секунду). Микроконтроллерные программаторы полностью поддерживают протокол COM- или LPT-порта и поэтому свободны от этих недостатков.
Специализированные платы изредка применялись до появления USB, так как позволяли достичь максимальных скоростей обмена данными. Впрочем, одновременно они делали программатор стационарным.
Современные программаторы подключаются через USB (лишь простые дешёвые конструкции используют COM- или LPT-порты). Высокопроизводительные промышленные программаторы используют Ethernet [пример?].
По дополнительным функциям
(Здесь указаны как аппаратные, так и программные функции.)
- Наличие программного обеспечения под распространённые платформы (обычно под Windows и Linux; остальные ОС среди разработчиков непопулярны).
- Проверка правильности подключения ещё до попытки стереть микросхему.
- Проверка исправности программатора.
- JTAG-адаптеры, пригодные одновременно как для программирования, так и для отлаживания прошивок.
- Автономные (полевые) программаторы имеют компактные размеры и содержат внутреннюю память для хранения прошивки. Такие программаторы предназначены для обслуживания техники прямо в местах её установки (подчас труднодоступных).
- Встроенный HEX-редактор, позволяющий откорректировать записанную в микросхеме информацию.
- Возможность самостоятельного обновления прошивки самого́ программатора.
- Возможность одним нажатием кнопки выполнить некоторую последовательность действий — например, стереть, проверить стирание, записать, проверить правильность записи и установить конфигурационные биты (так называемое автоматическое программирование).
- В программаторах для массового программирования может применяться скриптовый язык, на котором можно реализовать, например, автоинкремент серийных номеров — таким образом, каждая микросхема будет иметь уникальный номер.
См. также
Примечания
- Программаторы и компьютеры в роли программаторов (недоступная ссылка), 2008
- http://atmel.moy.su/publ/13-1-0-89; не указаны токоограничивающие резисторы (на всех проводах, кроме GND) и внешнее питание (обычно берётся с USB).
- fischl.de — USBasp — USB programmer for Atmel AVR controllers