Схемы » Программаторы: Программатор
Добавил: | 1 февраля 2010 | Просмотров: 3405
Программатор

Классификация программаторов

По типу микросхем

* Программирующие микросхемы ПЗУ (ПЗУ с ультрафиолетовым стиранием, ППЗУ, флэш-память).
* Программирующие внутреннюю память микроконтроллеров.
* Программирующие ПЛИС.

Универсальные программаторы могут поддерживать все вышеперечисленные типы.

По сложности

Если нужно единожды запрограммировать микроконтроллерное устройство, радиолюбители обходятся простейшим программатором, подключаемым к COM- или LPT-порту. Например, самый простой программатор для микросхем AVR — это кабель из шести проводов и четырёх резисторов (так называемый программатор PonyProg).

Те любители, которые занимаются разработкой прошивок или производят свои схемы в больших количествах, используют программаторы посложнее — такие устройства часто содержат свой микроконтроллер. Подобные программаторы удобны тем, что после работы переводят свои выходы в Z-состояние, и запрограммированное устройство можно испытывать, не отключая программатора. Такие программаторы, как правило, работают с одним-двумя семействами микросхем.

Самодеятельным конструкторам программаторов известна «проблема курицы и яйца» — если программатор содержит запрограммированный микроконтроллер, то как его запрограммировать? Обычно или отдают микросхему профессионалам, или строят простейший программатор и идут к другу, у которого на компьютере есть соответствующий порт (всё больше современных компьютеров вообще не имеют COM- и LPT-портов).

В конструкторских бюро и лабораториях применяются универсальные программаторы. Поскольку в таких устройствах каждый из выводов разъёма (а этих выводов может быть до сотни) может подавать на микросхему напряжения от 0 до 27 В с точностью в 0,1 вольт и частотами до 40 МГц, универсальные программаторы бывают очень дороги — до нескольких тысяч долларов. Зато при появлении новой микросхемы достаточно добавить её поддержку на программном уровне.

По подключению микросхемы

* Параллельный.
* Внутрисхемный.

Параллельные программаторы содержат разъём, в который и вставляется программируемая микросхема. Внутрисхемные пригодны только для тех микросхем, в которых поддерживается внутрисхемное программирование, но позволяют прошивать микросхему, не вынимая её из устройства.

При покупке параллельного программатора стоит обратить внимание на качество разъёма, в который устанавливается микросхема. Обычный одноразовый разъём долго не прослужит; программатор должен иметь цанговые разъёмы — а ещё лучше ZIF. В дорогих программаторах есть несколько разъёмов — под разные виды корпусов.

По подключению к компьютеру

Первые программаторы были автономными — для набора прошивки имелась клавиатура или коммутационная панель. С распространением ПК такие программаторы были полностью вытеснены подключаемыми к компьютеру — специальная программа (которая также называется программатором) передаёт прошивку с компьютера, а программатору остаётся только записать её в память микросхемы.

Для подключения программаторов могут применяться:

* Последовательный порт.
* Параллельный порт.
* Специализированная интерфейсная плата (ISA или PCI).
* USB.

Стоит заметить, что в самых простых параллельных и последовательных программаторах управляющему ПО приходится напрямую управлять логическим уровнем на выводах порта (на жаргоне электронщиков «дрыгоножество» или bitbang). Такое прямое управление в Windows NT запрещено, это обходится установкой специализированного драйвера; через адаптеры USB>COM bitbang-программаторы работают крайне медленно (единицы-десятки байт в секунду). Микроконтроллерные программаторы полностью поддерживают протокол COM- или LPT-порта и поэтому свободны от этих недостатков.

Специализированные платы изредка применялись до появления USB, так как позволяли достичь максимальных скоростей обмена данными. Впрочем, одновременно они делали программатор стационарным.

Современные программаторы подключаются через USB (лишь простые дешёвые конструкции используют COM- или LPT-порты).

По дополнительным функциям

(Здесь указаны как аппаратные, так и программные функции.)

* Наличие программного обеспечения под распространённые платформы (обычно под Windows и Linux; остальные ОС среди разработчиков непопулярны).
* Проверка правильности подключения ещё до попытки стереть микросхему.
* Проверка исправности программатора.
* JTAG-адаптеры, пригодные одновременно как для программирования, так и для отлаживания прошивок.
* Полевые программаторы имеют компактные размеры и содержат внутреннюю память для хранения прошивки.[1] Такие программаторы предназначены для обслуживания техники прямо в местах её установки (подчас труднодоступных).
* Встроенный HEX-редактор, позволяющий откорректировать записанную в микросхеме информацию.
* Возможность самостоятельного обновления прошивки самого? программатора.
* Возможность одним нажатием кнопки выполнить некоторую последовательность действий — например, стереть, проконтролировать стёртость, записать, проверить правильность записи и установить конфигурационные биты (так называемое автоматическое программирование).
o В программаторах для массового программирования может применяться скриптовый язык, на котором можно реализовать, например, автоинкремент серийных номеров — таким образом, каждая микросхема будет иметь уникальный номер.

Программаторы — проблемы выбора

Прочитав название статьи каких-нибудь 10-15 лет назад, мы бы очень удивились: нам бы ваши проблемы. Работая на «ящиках», мы и понятия не имели, что в этом вопросе бывает какая-то неопределенность. Перечень разрешенных к применению микросхем был настолько «широк», что приходилось выбирать практически из одной позиции, да и вопрос с программаторами обстоял элементарно просто: тебе нужен программатор — сделай его сам. Каждая лаборатория с гордостью делала свой, самый лучший и надежный программатор. Каких устройств там только не было: начиная от простых, но очень надежных изделий на тумблерах, до очень сложных, занимавших половину рабочего стола и иногда работавших мощных программаторов. Их разработчики с любовью программировали каждый бит тех сложных устройств (благо устройства эти не были обременены большим количеством информации). Обычно пользоваться таким программатором мог только человек, давший ему жизнь, а весь процесс программирования со стороны воспринимался, как шаманский танец с бубном. Теперь мы, к великому сожалению, лишены всей прелести тех лет.

С падением железного занавеса выяснилось, что перечень программируемых интегральных схем в мире просто гигантский — это микросхемы памяти как с параллельным, так и с последовательным доступом информации (EPROM, EEPROM, FLASH); микроконтроллеры с внутренней памятью команд и данных; микросхемы программируемой логики (PLD). Причем, перечень таких изделий с каждым годом стремительно растет, имея тенденцию к усложнению изделий и к увеличению их гибкости. С другой стороны, как ответ на потребность использования этих микросхем, рынок наполняется большим количеством программаторов. Как не ошибиться и сделать правильный выбор при приобретении программатора? В этой статье мы попытаемся дать представление об устройстве программаторов и ответить на этот вопрос.

Рассмотрим классификацию программаторов по функциональным возможностям. Условно их можно подразделить на такие группы:

* программаторы, программирующие микросхемы памяти (EPROM, EEPROM, FLASH);
* программаторы, программирующие микросхемы памяти (EPROM, EEPROM, FLASH) и внутреннюю память микроконтроллеров;
* программаторы, программирующие микросхемы памяти (EPROM, EEPROM, FLASH), внутреннюю память микроконтроллеров, микросхемы программируемой логики (PLD);
* универсальные программаторы-тестеры.

Данную классификацию можно считать достаточно условной, жестких границ между программаторами разных групп не существует. Программаторы первой и второй групп наиболее простые и дешевые устройства. Программаторы третьей группы, обычно, аппаратно значительно более сложны и стоимость их, соответственно, более высокая. Это объясняется, в частности, особенностью работы с устройствами программируемой логики. Микросхемы программируемой логики вообще стоят несколько обособленно в ряду программируемых устройств. Если информацию по программированию микросхем памяти и внутренней памяти микроконтроллеров фирмы-производители микросхем, как правило, не скрывают и публикуют в своих каталогах, то информацию по программированию микросхем PLD можно получить только после заключения соответствующего соглашения с фирмой-производителем микросхем. Причем, некоторые производители PLD не стремятся увеличить число фирм-производителей программаторов, поддерживающих их устройства, главное для них — качество программирования и строгое следование предписанным процедурам программирования. Так, например, чтобы заключить соответствующие соглашения с фирмами AMD и Lattice московской фирме «Фитон» пришлось сдавать квалификационный экзамен.

Последняя функциональная группа программаторов — универсальные программаторы — наиболее сложные и дорогие устройства, но способные работать с очень большим перечнем микросхем. Стоимость таких устройств может достигать тысяч и десятков тысяч долларов.

Аппаратное устройство программаторов

В первую очередь коснемся той детали программатора, с которой приходится взаимодействовать больше всего — это колодка, куда помещается программируемая микросхема. Эта одна из самых важных деталей программатора, от качества и надежности которой зависит способность программатора выполнять свои функции. Любой программатор вне зависимости от его сложности, стоимости и функциональных возможностей обязательно должен быть снабжен специальной тестовой колодкой, обеспечивающей многократный надежный контакт с программируемой микросхемой. Фирмы, выпускающие такие сокеты, гарантируют надежный контакт при десятках тысячей операций установки в нее микросхем. Наиболее удобными для пользователя являются специальные сокеты с нулевым усилием (ZIF socket). Если программатор не снабжен специальными тестовыми сокетами, предназначенными для многократных установок микросхем, а вместо них стоят дешевые одноразовые колодки, то считайте, что Вы просто зря потратили свои деньги. Вы быстро сможете в этом убедиться, когда безвозвратно испортите микросхемы с однократным программированием из-за отсутствия контакта в колодке. В недорогих программаторах обычно устанавливаются универсальные (рассчитанные как на узкий, так и на широкий тип корпуса) ZIF DIP сокетки. В более дорогих образцах программаторов могут устанавливаться одновременно несколько видов ZIF сокеток, рассчитанных на разные типы корпусов микросхем (LCC, QFP и т. д.). Иногда программаторы снабжаются универсальными сменными головками под различные типы корпусов. Для программирования микросхем с корпусами, отличными от DIP и с большим числом выводов, программаторы снабжаются специальными адаптерами под соответствующий тип корпуса. В связи с тем, что на этих адаптерах также должны устанавливаться высоконадежные тестовые сокетки, стоимость таких адаптеров может оказаться довольно существенной.

Заглянем внутрь программаторов и в общих чертах попытаемся понять, чем же они отличаются друг от друга. Принципиально существует две концепции построения программаторов. Первая, и наиболее очевидная, заключается в построении программаторов на базе массива универсальных аппаратных драйверов. Универсальные драйверы подводятся к выводам тестовой сокетки и должны удовлетворять ряду специфических аппаратных требований по программированию микросхем. В перечень таких требований входят: способность подавать и считывать логические уровни, способность подавать сложные тактовые последовательности, способность подводить напряжение в диапазоне 0…27 В с точностью 0.1 В и т. д. и т. п. Удовлетворение всем этим требованиям приводит к колоссальным аппаратным затратам и избыточности всего устройства в целом. Количество драйверов универсального программатора должно соответствовать количеству выводов тестовой сокетки, например, 40 драйверов для сокетки DIP-40, или 84 драйвера для сокетки LCC-84. В результате, устройство становится очень сложным и дорогостоящим, но при этом абсолютно универсальным. Имея 40 универсальных драйверов и универсальную тестовую сокетку DIP-40 можно с уверенностью сказать, что удастся поддержать все существующие, а также любые новые, микросхемы в корпусе DIP (с числом выводов до 40) без дополнительных адаптеров. Именно по такой схеме строятся дорогие универсальные программаторы.

Вторая концепция заключается в том, что аппаратура программатора оптимизируется под предполагаемый перечень поддерживаемых микросхем. Программаторы этого класса, как правило, значительно дешевле универсальных программаторов, но такие изделия в известной степени теряют универсальные свойства. Добавление новых типов поддерживаемых программатором микросхем может быть сопряжено со значительными трудностями, а часто и с невозможностью расширения списка программируемых устройств.

Использую многолетний опыт разработки и производства программаторов, нами разработана и внедрена компромиссная концепция построения программаторов — универсальный драйвер разбивается на два функциональных блока: универсальный логический драйвер и устройство коммутации «высокого» напряжения. Такая архитектура программатора позволила в значительной степени сохранить преимущества универсального драйвера и существенно сократить аппаратные затраты и, как следствие, уменьшить себестоимость и цену конечных изделий.

Рассмотрим способ подключения программаторов к компьютеру. Наиболее распространенными способами подключения являются:

* подключение к принтерному порту;
* подключение к последовательному порту;
* установка специальной платы в компьютер.

Каждый из этих способов имеет свои преимущества и недостатки. Использование специальных плат, устанавливаемых в компьютер, значительно упрощает схемотехнику программатора. В этом случае, как правило, удается отказаться от специального, довольно мощного источника питания, воспользовавшись источником питания компьютера, а также использовать центральный процессор компьютера в качестве управляющего процессора программатора. При способе подключения программатора к компьютеру посредством встраиваемых в компьютер плат удается достигнуть довольно значительных скоростей обмена между компьютером и программатором за счет непосредственного управления последним. Но такая реализация программатора имеет и существенные недостатки. Во-первых, значительно снижается мобильность программатора, то есть возможность использования одного программатора на разных компьютерах (например, в приделах одной лаборатории), во-вторых, использование таких устройств с портативными компьютерами notebook сопряжено с необходимостью использования специальных карт сопряжения.

Другой вариант сопряжения программатора с компьютером — последовательный канал компьютера. Это вполне допустимый вариант сопряжения, допускающий работу программатора с компьютерами всех типов. К существенным недостаткам такого варианта сопряжения можно отнести невысокую пропускную способность канала. Максимальная скорость последовательного канала RS-232 ограничена значением 115 кБод, что существенно ограничивает обмен между компьютером и программатором, и, следовательно, снижает производительность последнего.

Подключение программатора к принтерному порту компьютера нам видится наиболее предпочтительным вариантом. Этот способ сочетает в себе достаточно высокую пропускную способность канала и не требует серьезных аппаратных затрат. При использование этого способа удается воспользоваться центральным процессором компьютера в качестве управляющего процессора программатора.

Теперь обратим внимание на ряд "второстепенных мелочей ", которые при активной работе с программатором могут либо серьезно попортить Вам жизнь, либо, при удачной реализации, значительно облегчат Вашу работу. К таким «мелочам» мы бы отнесли способ обновления версий программатора, способность программатора определять правильность установки микросхемы в колодке и проведение процедуры самотестирования при включении питания.

Способ обновления версии — это довольно существенный вопрос эксплуатации программаторов. Необходимость обновления версии может возникнуть по ряду причин, во-первых, при выявление ошибки работы программатора (увы, такое тоже встречается, все мы грешны), либо при расширение списка поддерживаемых программатором микросхем. Способ обновления версии программатора зависит от его аппаратного устройства. В одних изделиях алгоритмы программирования жестко «зашиты» в аппаратуру, в других — они являются загружаемыми. В первом случае для модификации версии требуется модификация самого устройства программатора (например, перепрограммирование ПЗУ самого программатора), а это сопряжено с рядом дополнительных неудобств по доставке изделия производителю или в региональный сервисный центр. Другое дело, если обновление версии осуществляется только обновлением программного обеспечения программатора. Именно по такой схеме построены программаторы с загружаемыми алгоритмами программирования. В таких программаторах Вы обновляете только программное обеспечение и работаете уже с новой версией. Второй способ видится нам наиболее удобным в эксплуатации, и именно по такой схеме строится обновление версий всех выпускаемых фирмой «Фитон» программаторов

Теперь обратим внимание на такую «мелочь», как способность программатора определять правильность установки микросхемы в тестовую колодку. При кажущейся незначительности этой опции, мы начинаем понимать всю ее важность только после выхода из строя микросхемы при неверной установки ее в колодку (а такое рано или поздно случается). И винить в этом случае некого — сами виноваты. Именно для предотвращения таких ситуаций и служит эта опция. Здесь необходимо указать, что полноценная реализация такой возможности требует от разработчика больших усилий и, порой, изобретательности. Дело в том, что необходимо протестировать микросхему в колодке в самом щадящем для нее режиме, при этом ни в коем случае не допуская выхода микросхемы из строя.

И в заключение обсуждения аппаратного устройства программаторов, на наш взгляд, необходимо упомянуть о настоятельной необходимости проведения программаторами процедуры самотестирования. Обычно эта процедура проводится после инициализации аппаратуры программатора. Цель этой процедуры — встроенными средствами провести проверку работоспособности всего оборудования устройства и принять решение о возможности полноценной работы программатора. К сожалению, встроенными средствами не всегда удается однозначно убедится в работоспособности всех узлов устройства, но тем не менее эта процедура обязательно должна проводится с целью минимизации вероятности эксплуатации неработоспособного оборудования.

Программное обеспечение программатора

Дадим общее представление о возможных способах реализации программного обеспечения (ПО) программатора. Первое, на что нужно обратить внимание, — это под управлением какой операционной системы работает программатор. Большинство программного обеспечения программаторов реализовано под управлением DOS и не предъявляет к компьютеру специфических требований. Обычно, это программы, разработанные довольно давно. В последние несколько лет стали появляться программаторы, работающие под управлением операционной системы Windows. Это современные продукты, которые, как правило, выглядят гораздо элегантнее, имеют более дружественный интерфейс и обладают большим числом сервисных возможностей.

Рассмотрим архитектуру программного обеспечения программаторов. Наиболее распространенной является архитектура, в которой в качестве ядра программатора выступает промежуточный буфер данных. Все операции в программаторе выполняются с этим буфером. Для программирования микросхемы необходимо загрузить файл в буфер, запрограммировать данные из буфера в микросхему, сравнить содержимое микросхемы и буфера. При чтении данные из микросхемы записываются в буфер. Размер промежуточного буфера данных, обычно, коррелирован с размером текущего типа микросхемы. Многолетний опыт разработки и производства программаторов позволил выработать концепцию оригинальной многобуферной архитектуры ПО программаторов с неограниченным количеством буферов. Такая архитектура позволяет работать с неограниченным количеством независимых наборов данных, проводить их анализ и редактирование. Например, Вы можете воспользоваться двумя буферами для считывания в них двух разных микросхем, проведения анализа этих наборов данных и, на их базе, создания нового массива данных в третьем буфере для последующего программирования его в микросхемы памяти или сохранения на диске.

Стандартным набором функций программаторов обычно являются следующие функции: чтение, запись, сравнение, контроль на чистоту, стирание (только для электрически перепрограммируемых устройств) микросхем. Некоторые программаторы имеют функцию автоматического программирования. Эта функция позволяет осуществить часто используемую комбинацию действий для конкретного типа микросхемы. Обычно, такая комбинация состоит из такого набора: стереть микросхему, проконтролировать стертость, запрограммировать, сравнить запрограммированные данные с оригиналом, установить защиту. Удобство этой функции заключается в том, что весь «джентльменский» набор активизируется одним нажатием.

Отдельно остановимся на редакторских функциях программаторов. Наиболее распространенным перечнем редакторских функций являются: редактирование данных в шестнадцатеричном формате, возможность заполнения буфера данных константой и подсчет контрольной суммы. Этого простого набора редакторских функций вполне достаточно для простых приложений. Для профессионального использования программаторов необходимы расширенные возможности редактирования. К ним можно отнести:

* возможность редактирования данных не только в шестнадцатеричном формате, но и в двоичном,

восьмеричном и десятичном представлении;

* заполнение массива строкой данных;
* поиск и замена строки данных;
* инвертирование данных;
* копирование массива данных как внутри одного буфера, так и между разными буферами;
* подсчет контрольной суммы;
* конвертирование шин адреса и данных.

Еще одна особенность ПО программаторов, на которой стоит остановится отдельно, — это пакетный режим работы. Очень в немногих программаторах такой режим реализован. А преимущество такого режима просто очевидно — это автоматизация работы. Использую пакетный режим работы, можно создавать сценарии работы с программатором, автоматизируя всю рутинную работу. Наиболее интересны устройства, где пакетный режим работы практически не имеет ограничений, в нем доступны все ресурсы программатора. В пакетном режиме можно загружать файлы, запускать программирование, манипулировать параметрами программирования, окнами на экране, выводить графические данные и т. д., и т. п. В качестве иллюстрации использования пакетного режима работы программатора можно привести задачу программирования партии микросхем, в каждой из которых должен быть запрограммирован серийный номер. На специальном языке создается сценарий работы программатора, который заключается в следующем: оператор указывает начальное значение серийного номера партии микросхем и запускает процедуру программирования, программатор программирует микросхему с текущим серийным номером и вычисляет серийный номер следующей микросхемы, помещая его в соответствующий раздел памяти, далее процедура циклически повторяется. В приведенном примере пакетный режим работы значительно облегчает работу оператора и исключает свойственные оператору ошибки.
 
 
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
    Обсудить статью можно на Форуме

Другие новости по теме:
 (голосов: 6)
В Закладки: | Мыслей вслух: (0) |    


 Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.

© 2010 Radio-Korolev.Ru. Все права защищены.