Простейший программатор смарт-карт
Почему я рекомендую программировать именно через RS232 ? - да потому, что спалить принтерный порт очень просто, а чтобы спалить RS232 требуется специальная подготовка. Если вам непонятно - как это получается - почитайте копию статьи Вадима Чеснокова - "Начнем от печки" из Компьютерной Газеты.
Как работает такой программатор?1. По линии DTR осуществляется передача данных в чип, по линии CTS - прием данных из чипа.
2. Линия RTS служит для приема - передачи стробирующих импульсов.
3. Линия TxD осуществляет формирование сигнала MCLR - общий сброс, который имеет низкий уровень непосредственно до начала цикла программирования, а в процессе цикла программирования сюда подается напряжение программирования +12 вольт, необходимое чипу для перепрограммирования памяти программ.
Питание чипа карты осуществляется от цепочки: TxD -> VD1 -> C1 + VZ1, которая накапливает на конденденсаторе и стабилизирует напряжение на уровне 5.6 вольт.
Эта схема собиралась мной и многократно повотрялась нашими читателями.
Проблема такого программатора заключается в том, что сигналы интерфейса RS232 плохо совместимы с TTL уровнями. Логическая "1" (high или mark) это -12V вольт относительно GND интерфейса, а логический "0" (low или space) это +12V вольт и все согласование уровней осуществляется резисторами, причем в цепочки согласования входят сопротивления самого RS232 - то есть в некоторых экземплярах может быть нечеткая работа.
Кроме того в этом программаторе маловато напряжение программирования - почти всегда это +9 - +9.5 вольт и некоторым экземплярам PIC может не хватить (примерно 0.5 %).
Какое программное обеспечение использовать ?
Лучше всего использовать PIX (MS-Dos). У меня он работал даже из-под Windows 95 ! Установите в нем тип программатора 9) Ludi и укажите COM-порт к которому он подключен.
Кроме того, можно порекомендовать PicProg 0.6 - эта программа под Windows, но она не имеет опции VERIFY, то есть проверить карту можно будет только на тюнере.
Обратите внимание - если вы установили защиту кода Code Protection или Cdp - VERIFY будет невозможен (чип не даст прочитать программу).
Для программирования следует использовать прошивку для PIC в которой ввод-вывод осуществляется через RB7 - обычно файлы с такими прошивками именуют с цифрой 7 в имени (стандартные пластиковые смарт-карты или wafer имеют как раз такое устройство).
Для тех кто использует 16F84 вместо 16С84 - в этом чипе для правильной работы должет быть включен Power UP Timer ( Enable). Это можно сделать в программаторе - если используется PIX, то предохранители (Fuses) нужно устоановить так: 3FF9 а именно: [O]sc XT [W]dt NO [P]wr YES [C]dp NO.
Можно оснастить этот программатор переключателем, с помощью которого производится выбор для программирования либо PIC, либо EEPROM.
В заключение следует отметить, что таким программатором нормально программируются карты, в которых к ISO-площадке I/O подключен 13-ый вывод PIC - RB7, а вывод 12 - RB6 подключен к площадке ISO Clock - такие, как показано на нашей страничке. Для других карт необходимо знать их устройство и поставить DIP-переключатель - тогда можно будет программировать различные карты.
Еще одна проблема - трудно найти ISO7816 слот для карты. В Санкт-Петербурге могу порекомендовать фирму "Крис", в Москве - "Бурый Медведь". На крайний случай - поставьте чипы на карте на панельки и соберите программатор по такой схеме - тогда можно будет, сняв чипы, отпрограммировать их и установить обратно в карту.
Конечно, хорошо бы оснастить эту схему собственным кварцевым генератором, источником питания для чипа, +12 вольт для программирования, формирователями для RS232 - и у нас получится Smart Mouse Interface, который более корректно работает с различными картами. SmartMouse позволяет экспериментировать с другими смарт-картами - от сотовых телефонов, таксофонными и т.п.
Редакция и оформление - ©Александр Борзов |