Корзина
(нет товаров)
 
(495) 500-7890
На главную Программаторы Панельки Загрузка ПО Магазин Поддержка Поиск панельки Карта сайта

Немного теории

В настоящее время рынок программаторов достаточно широк и продолжает интенсивно развиваться. Для любой сферы деятельности, где сейчас применяются микросхемы памяти или микроконтроллеры, предлагается огромный выбор самых разных программаторов, от простейших и узкоспециализированных, до супер сложных и дорогих универсальных программаторов. Как не ошибиться с выбором, тем более, что каждый производитель уверяет, что его детище самое лучшее. Этим проблемам посвящено множество статей, в которых подчеркиваются только достоинства той или иной конструкции, причем часто с точки зрения разработчика. Редко когда приводятся данные о надежности программаторов, о качестве записи микросхем. А это далеко не последний аспект при выборе программатора. В этой статье, не вдаваясь в глубоко схемотехнику и физику процессов программирования микросхем, я расскажу о некоторых таких проблемах, с которыми сталкиваются все разработчики программаторов. Кто-то честно пытается решить эти проблемы, усложняя схему и тем самым, увеличивая себестоимость, другие, в погоне за прибылью, умышленно скрывают их или, просто дезинформируют конечных пользователей. Я не хочу приводить здесь конкретные названия фирм и моделей программаторов, а также прошу извинения, если кто-то из разработчиков узнает тут свои изделия.


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

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

Другая разновидность первого варианта, когда компьютер управляет программатором, а точнее программируемой микросхемой через интерфейсы LPT или COM. Неоспоримый плюс такого изделия в том, что его себестоимость может стремиться к нулю. Но не будем кидаться в крайности и предположим, что между микросхемой и разъемом компьютера есть какое-то устройство способное формировать и коммутировать нужные напряжения и сигналы. Неважно, что это за устройство, 155ЛН3 или программируемая логическая матрица с набором ключей, в любом случае, при использовании такой схемы программатора мы получаем гигантский проигрыш по времени, так как помимо собственно данных приходится передавать и все сигналы управления. Да и к тому же пропускная способность интерфейсов LPT и особенно COM оставляет желать лучшего. LPT порт, конечно, значительно выигрывает по скорости, но мало кому понравится бронированный, в палец толщиной кабель, к которому прикручен программатор. Да и не у каждого имеется принтер с USB интерфейсом. А через всякие коммутирующие коробочки такие программаторы, как правило, не работают. Но это не самый главный недостаток таких программаторов.

Наверняка многие сталкивались с проблемой, что еще минуту назад нормально работавшая микросхема вдруг переставала шиться в программаторе или отказывалась работать в устройстве после очередной записи. Иногда после стирания и повторной записи все начинало работать, иногда – приходилось покупать новую микросхему. Некоторые производители программаторов называют это "старением микросхем" (и это после 5-10 циклов записи!!!). Редко кто называет истинные причины такого поведения микросхем. Если отбросить ошибки оператора (ошибки в конфигурационном слове, неправильная или некачественная установка микросхемы в панельку, для УФ микросхем – некачественное стирание), то виноват в этом только программатор. Причин тут может быть две. Первая. Аппаратная реализация программатора не позволяет стабильно и точно формировать временные и электрические характеристики, необходимые для записи микросхемы, но об этом мы поговорим несколько позже. Вторая причина - это главный недостаток любого канала связи, назовем его законом: передатчик всегда передает информацию без ошибок, а приемник всегда принимает эти же данные с ошибками. Поэтому, если между программируемой микросхемой и интерфейсом (в данном случае каналом связи) нет никакого устройства, способного оценить качество принятых данных, то мы получаем испорченную микросхему. Конечно, число таких ошибок сильно зависит от компьютера, установленного программного обеспечения, скорости работы. Но чтобы не говорили сторонники дешевых программаторов, вероятность такого события не такая уж и маленькая. А по известным законам это случается как раз в самый неподходящий момент.

Кроме того, интерфейсы LPT и COM разрабатывались для передачи данных, а не для управления быстродействующим устройством в реальном масштабе времени. Аппаратная реализация интерфейсов и протоколы обмена однозначно определяют, что на приемном конце должен находиться контроллер, способный анализировать и управлять потоком данных, поступающим от компьютера. Модемы, принтеры, даже простейшая мышь, с двумя датчиками и тремя кнопками имеет встроенный контроллер. И никому не приходит в голову сэкономить на этой микросхеме, повесив датчики и кнопки непосредственно на выводы порта, потому что в этом случае, добиться стабильной работы на разных компьютерах будет практически невозможно. Это связано не только с различиями в "компьютерном железе", хотя все оно полностью соответствует требованиям спецификаций на эти интерфейсы, а в первую очередь с многозадачностью и как следствие, большой неравномерностью работы современных операционных систем. Несмотря на высокие скорости современных процессоров, ни на одном из интерфейсов компьютера невозможно сформировать жесткую временную диаграмму, а тем более контролировать процесс записи, с разрешением хотя бы в несколько десятков микросекунд. А некоторые современные микросхемы требуют длительность импульса записи не более 1 микросекунды и завершают цикл в течение 10-50 микросекунд!

Как бы то ни было, такой тип программаторов получил наиболее широкое распространение. В первую очередь, это связано с низкой себестоимостью и простотой реализации. Кроме того, в те годы, когда разрабатывалось большинство таких программаторов, в среде MS-DOS их работа была достаточно стабильна. От разработчика не требовалось глубоких знаний схемотехники и дополнительных усилий на разработку программ для микроконтроллеров, к тому же выбор этих микросхем был невелик и стоили они достаточно дорого. После появления операционной системы Windows у программаторов начались проблемы, а у производителей - головная боль. Некоторые производители внесли в программаторы аппаратные изменения, прекратив выпуск и поддержку старых моделей, другие - до сих пор работают в режиме эмуляции MS-DOS. Очередная волна проблем началась с выходом Windows XP, в ядре которой были изменены многие функции. Выход из этой проблемы один - сделать программатор менее чувствительным к капризам операционной системы.


Совсем другое дело, когда внутри программатора стоит какой-то процессор. Он обеспечивает работу с микросхемой, контроль входящих данных, устраняет возможные ошибки, сообщает компьютеру о своем состоянии. Интерфейсы при этом могут работать с любыми скоростями, в нормальных режимах, что позволяет устойчиво работать под любыми операционными системами и обеспечивает полную совместимость программатора с различными компьютерами, включая ноутбуки. При такой реализации значительно снижается трафик в канале связи (передаются только данные для программирования), упрощается программа на компьютере, увеличивается скорость работы с микросхемой. При этом быстродействие интерфейса уже не так сильно влияет на время записи микросхемы, что позволяет работать через COM порт практически без потери производительности. Конечно, если сравнить время передачи байта через LPT (2,5mks) и COM (100mks), разница впечатляет. Но с учетом длительности цикла записи, время программирования 27С512 составит 7 и 13 секунд, а PIC16F84 - чуть больше 10 секунд в обоих случаях. При чтении эта разница будет значительной, но для того и нужен процессор, чтобы не решать эту проблему в лоб.

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

Не важно какой процессор стоит внутри программатора. Большинство современных микроконтроллеров выполняют одну команду за время от 50ns до 500ns, что позволяет очень точно формировать временную диаграмму и работать с микросхемой на пределе ее возможностей. Остается только своевременно подгружать данные. Но длительность цикла записи микросхемы может меняться от ячейки к ячейке, не всегда может быть готов и компьютер. Как засинхронизировать их, как избежать потери данных и в конечном итоге, не повредить микросхему? Все эти проблемы легко решаются ясной логикой работы программатора и построением правильного протокола обмена. Во-первых, ни в коем случае нельзя совмещать по времени процесс приема данных и загрузку их в программируемую микросхему. Эта операция должна осуществляться в два этапа через промежуточный буфер. Сначала принимается и проверяется блок данных, после чего начинает программироваться микросхема. В противном случае, при потере связи возможно повреждение информации в микросхемах со страничной записью. Во-вторых, в протоколе обмена необходимо предусмотреть механизм обнаружения и коррекции ошибок, возможность настройки скорости обмена, защиту от ложного срабатывания, контроль состояния программатора и компьютера. Конечно, можно взять стандартный протокол обмена, но на его реализацию может потребоваться гораздо больше усилий, чем на разработку собственного. Я не буду приводить тут примеры таких протоколов, скажу только что их реализация, да и вообще, разработка программаторов этого типа, требует от разработчика гораздо больших знаний и усилий, ведь фактически приходится писать две программы - на компьютер и для процессора в программаторе.

Есть еще одно достоинство программаторов, построенных по такой схеме - это возможность автономной работы. В этом режиме тип интерфейса уже не важен, а скорость работы ограничивается только возможностями самой микросхемы. Фактически, такой программатор это тот же компьютер, с дисплеем, клавиатурой и собственной операционной системой, только разработанный для решения конкретной задачи. Современные автономные программаторы имеют мощный процессор, часто с возможностью обновления собственной программы, иногда дополнительное ОЗУ, большую энергонезависимую память, в которой может храниться от одного до нескольких десятков и даже сотен файлов прошивок. Они позволяют настраивать и запоминать различные установки и режимы работы, имеют простой и удобный интерфейс, что позволяет использовать для тиражирования микросхем менее квалифицированный персонал.

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


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

При воспроизведении материалов с этой страницы ссылка на источник обязательна.

ООО «ТЦ ТРИТОН»   (495) 500-7890