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

Программатор PGM02

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

С чего все началось ...

Я радиолюбитель "со стажем". Конструированием аналоговых устройств занимаюсь много лет. Но не так давно и меня заинтересовали устройства цифровые, чему немало поспособствовало наличие компьютера. И вот года два назад в журнале "Радио хобби" я увидел рекламу недорогого и (как следовало из описания) весьма практичного программатора - и я его купил (заказал по почте). Отдал я тогда за "все-провсе" около шестисот "деревянных". Внешний вид того, что мне прислали (в немного измененном виде) можно видеть на фотографии выше.
Поначалу я был очень доволен своим приобретением. Но со временем я понял, что очень многие ПЗУ, которые мне хотелось бы прошить - программатор не поддерживает. К тому же было неочень удобно то, что управляющая программа была только под DOS, да и интерфейс у неё, на мой взгляд неудобный (как у учебной программы студента-троишника). Я обратился к производителю по емылу с выше приведенными замечаниями, и выразил надежду, что производитель проапгредит софт. На первое письмо я ответа не получил, на второе тоже ... Программа не обновлялась и я писал еще ... Потом я получил ответ,  где назывался даже примерный срок выхода новой версии программы. Но с тех пор прошло уже очень много времени а обновлений до сих пор нет. Я отправлял и просьбы выслать мне исходный код программы, чтобы я ее доработал для себя и для других сам. Но был ответ, что некий неизвестный (общественности) автор этого программатора исходный код не распространяет (а беседу я вел надо понимать с менеджером ?).

А теперь собственно главное ...

Еще сразу взглянув на принципиальную схему я понял, что возможности программатора намного шире, чем те, что позволяет использовать все таже старая версия программы (другой-то нет). Включил я программатор запустил Паскаль и стал, глядя на принципиальную схему одним глазом - в справочники другим, пробовать писать нечто свое. Фактически сразу столкнулся с одной проблемой: "Что записанно в контроллере pic12c508, и как он функционирует". Посмотрев на схему повнимательнее стало понятно, что его задача состоит в  формировании произвольного значения на трех "выходах", в зависимости от определенной, надо понимать,   последовательности сигналов на двух "входах". Алгоритм понятное дело представлял из себя "черный ящик".
Была мысль и прочитать содержимое контроллера и я даже его аккуратно выпаял (как видно, сейчас он установлен в кроватке) - но он оказался защищенным от считывания. И тогда я понял - что это является своеобразным ключем защиты от копирования этого девайса. Да нужды в копировании и небыло. Меня интересовали входные последовательности для управления этим контроллером (его выходными линиями). И я вооружившись вольтметром и самопальной программой с генераторм случайных чисел стал тестить котроллер. На вход подавалась последовательность и по вольтметру отслеживалось изменение состояний выходов, как только наблюдаемый выход удавалось перебросить в противоположное состояние - последние элементы последовательности сохранялись. Далее шла работа по минимизации последовательности (очистки ее от элементов, не влияющих на результат). И так для каждого выхода. Работа очень крапотливая и результат носит вероятностный характер. Не один день я потратил на это. Но вот все позади и у меня есть те комбинации сигналов, которые нужно подавать на входы контроллера, чтобы изменить соответствующий выход, также была найдена последовательность сбрасывающая все выходы. Явной закономерности в управляющих комбинациях сразу я не нашел, уже потом я еще раз брался за вольтметр и довел дело до конца - подробное описание результатов смотри здесь 12c508a.txt (кодировка win-1251).
Далее была написана простенькая программка, читающая ПЗУ в файл. Затем я стал искать документацию по алгоритмам программирования ПЗУ. Стало ясно, что "железная" часть программатора тоже накладывает большие ограничения на применимость ряда алгоритмов и возможность работы с некоторыми ПЗУ. Для начала решив не повторяться, я отложил написание программы работы с микросхемами UVPROM (стандартная программа с ними работает не плохо). А стал я эксперементировать с микросхемами Flash - и начал я с имеющейся у меня в наличии MXIC 28F1000P (стандартная программа работать с ней не умеет). Достал документацию от производителя и стал писать. Все шло очень небыстро - софт для программатора пишу в первый раз ...
Но вот все написано и отлажено - УРА!!! Программатор PGM02 с успехом читает/стирает/пишет ранее не поддерживаемую микросхему MXIC 28F1000P.
Лежала рядом и другая микросхема AT49F002T и я взялся писать и для нее. Все работает - но программатор PGM02 явно не приспособлен для такого алгоритма: младние 12 линий адреса перебираются последовательно - а микросхема требует на запись кажного запись управляющих слов по разлтчным адресам. В результате запись оказывается неимоверно долгой (6 сек-128 байт).
Также неоднократно ругался на видимо тупого и недальновидного разработчика прграмматора. Иначе бы он не стал вешать свою защиту (@#$%) на линию #CE, котрую в некоторых флэшках надо дергать по несколько раз за один цикл записи байта. А тут один раз изменить линию #CE - нужно 15 циклов параллельного порта (LPT) - соответственно время записи сильно возрастает. Благо некоторые (далеко не все) микросхемы позволяют тактировать запись только сигналом #WE...
Между тем нашел тут драйвер прямого доступа к портам из под Windows, причем как 9x так и 2k. Переписал свою программу на Дельфе под Windows.

И что в итоге ?

И так - зачем создавался этот проект или для чего я все это писал ?

Я не призываю копировать этот программатор другим радиолюбителям - не по соображениям легальности - просто поверьте мне - это неудачный пример для подражания. (сущестуют более функциональные любительские разработки - например bidiPro)

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

Я буду рад если кто нибудь заинтересуется моим проектом и мы совместными усилиями его еще немножко продвинем - дабы помочь как себе, так и другим пользователям программатора PGM02.

Обсуждение этой темы на форуме здесь.

Исходники

Исходники модуля управления прграмматором PGM02 и программа работы с микросхемой MXIC 28F1000P (Pascal DOS)

Исходники модуля управления прграмматором PGM02 и программа работы с микросхемой MXIC 28F1000P (Delphi Windows)

Драйвер прямого доступа к портам в Win9x/Win2k

И еще - при наличии времени/настроения и новых видов микросхем - я буду дописывать мою программу (версию под Win2k). Так сейчас последняя версия полностью поддерживает и AT28C64. Пока я не смог разобраться, как программируются (во всех случаях) микросхемы серии 29Cxxx - если кто подскажет, то реализуем. Эту версию (самую последнюю) можно забрать по следующей ссылке (вместе с исходниками).

PGM02 & MXIC 28F1000P & AT28C64 (Win2k & Delphi)

Спрашивайте, что непонятно, напишем поподробнее для всех.

Последняя редакция 17.01.2004