|
Программатор SMART-карт
Как работает такой программатор?
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).
Установите в нем тип программатора 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.
Простейший универсальный программатор смарт-карт
На текущий момент в обороте находится великое множество
карт - одночиповые , двухчиповые, с двумя PIC и т.д.
Чем они все отличаются?
С точки зрения их программирования они отличаются только методом подключение
выводов PIC : 13 - RB7 и 12 - RB6. Дело в том, что при программировании
PIC необходимо подавать данные на RB7, импульсы синхронизации - на RB6.
Если иметь в программаторе переключатель и знать устройство карты - можно
программировать самые разнообразные карты.
Во время работы карты ввод-вывод чипа осуществляется через RB7, а тактовая
частота снимается с вывода 16 - OSC , но в некоторых картах ввод-вывод
производится через RB6, соответственно этот вывод и подключен к ISO-площадке
I/O, а вывод RB7 - к какой либо из площадок ISO4 или ISO8. Однако, для
программирования карты тактовую частоту необходимо подавать на вывод 12
- RB6, а данные - на RB7. Для этих манипуляций в данной схеме и применен
DIP-переключатель.
Обратите внимание - если ввод/вывод
карты осуществляется через RB6 - нужно использовать соответствующую прошивку!
Характеристики
наиболее распространеннных карт и соответствующие установки
ключа DIP-ключа для различных карт (пустая ячейка - OFF)
Обратите внимание: В блоке DATA (с 1-го
по 4-ый ключ) одновременно может быть включен только один ключ! Тоже касается
блока CLOCK.
Тип карты |
Где в карте RB7
|
Где в карте RB6
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
1 PIC ввод/вывод через RB7 |
ISO7 |
ISO3 |
|
on |
|
|
on |
|
|
|
1 PIC ввод/вывод через RB6 |
ISO8 |
ISO7 |
on |
|
|
|
|
|
on |
|
1 PIC Wafer card ввод/вывод
через RB7 |
ISO7 |
ISO3 |
|
on |
|
|
on |
|
|
|
2 PIC RB6, Master PIC |
ISO8 |
ISO7 |
on |
|
|
|
|
|
on |
|
2 PIC RB6, Slave PIC |
ISO4 |
ISO7 |
|
|
on |
|
|
|
on |
|
MULTIMAC, PIC ввод/вывод
через RB7 |
ISO7 |
ISO3 |
|
on |
|
|
on |
|
|
|
MULTIMAC EEPROM |
|
|
on |
|
|
|
|
on |
|
|
MM2 Wafer, PIC ввод/вывод
через RB7 |
ISO7 |
ISO3 |
|
on |
|
|
on |
|
|
|
MM2 Wafer, EEPROM |
|
|
on |
|
|
|
|
on |
|
|
В заключение следует отметить, что таким программатором нормально программируются
карты, в которых к ISO-площадке I/O подключен 13-ый вывод PIC - RB7, а вывод
12 - RB6 подключен к площадке ISO Clock. Для других карт необходимо знать
их устройство и поставить DIP-переключатель - тогда можно будет программировать
различные карты.
Конечно, хорошо бы оснастить эту схему собственным кварцевым генератором,
источником питания для чипа, +12 вольт для программирования, формирователями
для RS232 - и у нас получится Smart Mouse
Interface, который более корректно работает с различными картами. SmartMouse
позволяет экспериментировать с другими смарт-картами - от сотовых телефонов,
таксофонными и т.п
Smart Mouse Interface
Интерфейс Smart-mouse позволяет подключить смарт-карту стандарта ISO 7816-1/2/3
к последовательному порту вашего компьютера для ее "исследования".
Этот интерфейс более аккуратно ведет себя со смарт-картой. Прием и передача
данных осуществляются по линиям TxD и RxD RS232, сигнал сброса карты MCLR
формируется линией RTS RS232. Тактовая частота карте подается с помощью
генератора на 74hc04 , в схеме использован кварц от телесистемы NTSC (частота
может быть в пределах 3.54 +/- 20 % - от этого зависит скорость обмена -
9600 бит/сек).
Исследовать карту можно различными способами, например, CardExplorer,
а можно написать свою программу, (замечу - Visual BASIC при этом не подходит,
так как его объект MSComm годится только для очень стандартных действий).
При этом обратите внимание на интерпретацию информационных байтов.
Обратите внимание: SmartMouse - это интерфейс
к карте, а не программатор. В нем отстутствует формирователь напряжения
программитрования +12 вольт, которое должно быть на контакте MCLR, чтобы
программировать память программ чипа , а вот встроенную EEPROM он переписать
может.
Из этой схемы легко сделать почти профессиональный считыватель. Для этого
нужно задействовать датчик наличия карты и подключить его через MAX232 к
линии CTS ( нет карты- CTS Off) и подавать питание на карту и тактовый генератор
по сигналу DTR от компьютера - DTR On - устройство включено.
|