Professional Documents
Culture Documents
Czytnik Programator Kart Chipowych, Część 1: Kit AVT 468
Czytnik Programator Kart Chipowych, Część 1: Kit AVT 468
P R O J E K T Ykart chipowych
Czytnik−programator kart
chipowych, część 1
kit AVT−468
Artyku³ prezentuj¹cy
konstrukcjÍ czytnika-
programatora kart chipowych
bÍdzie sk³ada³ siÍ z†dwÛch
czÍúci. W†pierwszej z†nich
przedstawiamy zasadÍ dzia³ania
kart chipowych, sposÛb ich dziej zaawansowa-
programowania oraz konstrukcjÍ ne wykorzystuj¹
elektryczn¹ urz¹dzenia. liczniki liczby
Za miesi¹c przybliøymy b³Ídnie podanych hase³,
sposÛb sterowania prac¹ a†zawartoúÊ najlepiej zabezpie-
programatora-czytnika oraz czonych kart jest chroniona przez
bardzo efektown¹, przyk³adow¹ mikrokontrolery zintegrowane
aplikacjÍ. Tematyka kart chipowych sta³a z†kryptokonrolerami, ktÛrych po-
siÍ w†ostatnich miesi¹cach bardzo konanie jest niezwykle trudne.
modna zarÛwno wúrÛd elektroni- Pomimo opracowania wielu
kÛw, jak i†ogromnej rzeszy ìsza- niez³ych standardÛw opisuj¹cych
rychî ludzi. Jest to efekt coraz strukturÍ fizyczn¹ i†sposÛb pracy
szerszego ich stosowania - kaødy interfejsu ³¹cz¹cego wnÍtrze karty
telefon komÛrkowy sieci GSM jest ze úwiatem, panuje w tej dziedzi-
wyposaøony w†tak¹ kartÍ, coraz nie doúÊ duøy ìba³aganî, ktÛry
wiÍksza liczba automatÛw telefo- w†znacznym stopniu utrudnia za-
nicznych ìwoliî pobieraÊ op³aty projektowanie uniwersalnego pro-
za rozmowy z†kart chipowych, gramatora do wszystkich typÛw
a†nie magnetycznych. Takøe po- kart chipowych. Dodatkow¹, na-
siadacze kont bankowych zostan¹ prawdÍ niebagateln¹, trudnoúci¹
wkrÛtce wyposaøeni w†takie karty. jest utajnienie fragmentÛw doku-
Z†wygl¹du karta chipowa przypo- mentacji przez producentÛw kart.
mina zwyk³¹ kartÍ kredytow¹ lub Dlaczego to robi¹? Produkcja
bankomatow¹, z†t¹ rÛønic¹, øe na kart to dobry biznes, ale ich
jej jednej stronie znajduj¹ siÍ ìrozkuwanieî jest jeszcze lepszym.
efektownie wygl¹daj¹ce z³ocone
pola stykowe. O†czym w†artykule nie
CÛø to wiÍc, tak naprawdÍ, jest bÍdÍ pisa³ i†dlaczego
ta ìkarta chipowaî? Wbrew pozo- Od razu siÍ zastrzegam - urz¹-
rom nie jest ³atwo odpowiedzieÊ dzenie prezentowane w†artykule
na to pytanie. Najprostsz¹ jest nie zosta³o opracowane z†myúl¹
odpowiedü, øe jest to karta wy- o†³adowaniu ìlewychî impulsÛw
posaøona w†uk³ad scalony, ktÛry do kart telefonicznych, czy teø
Podstawowe parametry i możliwości najczÍúciej spe³nia rolÍ elementu zapisywaniu sobie do karty kre-
programatora: pamiÍciowego. Rzadko jednak spo- dytowej nieograniczonych limitÛw
✓ programuje i odczytuje zawartość pamięci tyka siÍ karty integruj¹ce w†we- pieniÍdzy do wydania. Co wiÍcej
kart chipowych X76F100 i X76F640; wnÍtrznym chipie sam¹ tylko pa- - zapewniam Was, øe podejmowa-
✓ sterowany jest przez dowolny program miÍÊ. Zazwyczaj karty chipowe s¹ nie takich prÛb zdecydowanie nie
terminalowy; wyposaøone w†mniej lub bardziej ma sensu. Zastosowane we wspÛ³-
✓ wymiana danych odbywa się poprzez port
zaawansowane mechanizmy za- czesnych kartach zabezpieczenia
szeregowy RS232 (19200/8N1 lub 19200/
8N2); bezpieczaj¹ce ich zawartoúÊ. Naj- (bior¹c dodatkowo pod uwagÍ
✓ rozmiar bufora danych: 32B; prostsze takie rozwi¹zania polega- trudnoúci, a†w†zasadzie niemoø-
✓ czas programowania sektora pamięci (32 j¹ na zastosowaniu hase³ dostÍpu noúÊ, zdobycia kompletnej doku-
bajty): poniżej 11ms; do poszczegÛlnych blokÛw logicz- mentacji) zapewniaj¹ bardzo duøe
✓ zasilanie: 8..12VDC lub AC, pobór prądu ok.
20mA. nych (partycji) pamiÍci, nieco bar- bezpieczeÒstwo informacjom tam
sjach obudÛw. W†prezentowanym Xicor produkuje karty przysto- Jak widaÊ konstrukcja elekt-
urz¹dzeniu wykorzystywane bÍd¹ sowane do pracy w†temperatu- ryczna urz¹dzenia jest stosunko-
uk³ady w†obudowach standardo- rach standardowych (0..+70 oC) wo prosta. ìSercemî programatora
wych kart chipowych (pe³ne ozna- oraz rozszerzonych (-20..+85 oC), jest jeden z†najnowszych mikro-
czenie uk³adu X76F640Y), ale co jest cechowane liter¹ kontrolerÛw rodziny ST62, uk³ad
dostÍpne s¹ takøe uk³ady w†obu- E†w†oznaczeniu. DostÍpne s¹ tak- nosz¹cy oznaczenie ST62T30B
dowach: øe wersje pracuj¹ce z†niskimi (US1). Jest on wyposaøony w†du-
- SOIC8 (ozn. X76F640A); napiÍciami zasilania (2,7..3,6V). ø¹ pamiÍÊ programu (8kB), we-
- nieobudowanej struktury (ozn. S¹ one oznaczone dodatkowym wnÍtrzn¹ pamiÍÊ EEPROM, RAM
X76F640H i†W); sufiksem ì-2,7î. oraz szereg interesuj¹cych peryfe-
- 8-pinowego modu³u, bez obudo- ryjnych modu³Ûw wewnÍtrznych,
wy w†postaci karty noúnej (ozn. Opis urz¹dzenia spoúrÛd ktÛrych w†projekcie wy-
X76F640X). Moøemy teraz przejúÊ do omÛ- korzystano port komunikacji sze-
wienia tajnikÛw konstrukcji pro- regowej UART, timer oraz watch-
gramatora-czytnika. Jego schemat dog.
elektryczny przedstawiono na Program wpisany do pamiÍci
rys. 3. procesora odpowiada za popra-
wn¹ pracÍ ca³ego programatora,
konfiguracjÍ portÛw, obs³ugÍ prze-
rwaÒ (wykorzystano dwa spoúrÛd
dostÍpnych) itp. Na list. 1 przed-
stawiono fragment tego programu,
zawieraj¹cy procedurÍ inicjalizacji
rejestrÛw i†urz¹dzeÒ wewnÍtrz-
nych procesora oraz dwie proce-
dury przedstawiaj¹ce sposÛb reali-
zacji odczytu 32 bitÛw s³owa
Response To Reset, ktÛre umoø-
liwia rozpoznanie typu karty w³o-
øonej do czytnika. Kolejne odczy-
tane bajty s³owa RTR s¹ zwracane
przez procedurÍ read_byte w†aku-
mulatorze, a†procedura info_a (po-
miniÍto j¹, ze wzglÍdu na d³ugoúÊ
listingu) odpowiada za wysy³anie
komunikatÛw diagnostycznych do
komputera PC.
Poniewaø jednym z†najwaøniej-
szych problemÛw na jakie napo-
tykaj¹ konstruktorzy systemÛw
mikroprocesorowych jest popra-
wne wyzerowanie procesora po
w³¹czeniu zasilania i†blokadÍ jego
pracy przy napiÍciu o†nieprawid-
³owej wartoúci, w†programatorze
zastosowano scalony generator
sygna³u zeruj¹cego firmy Dallas,
ktÛry nosi oznaczenie DS1813
(US2). Schemat blokowy przybli-
øaj¹cy jego budowÍ wewnÍtrzn¹
przedstawiono na rys. 4. Moøli-
woúci tego uk³adu s¹ wiÍksze od
wymagaÒ aplikacji - poniewaø nie
jest wykorzystywany uk³ad wspo-
magaj¹cy zerowanie rÍczne. Ze
wzglÍdu na niemal identyczn¹
cenÍ uk³adu DS1813 z†uk³adami
DS1811 (i podobnymi) wybÛr pad³
na uk³ad bardziej elastyczny.
W†aplikacji wykorzystano tylko
8 linii I/O procesora. Zastosowa-
nie stosunkowo duøego procesora
z†rodziny ST62 moøe wywo³ywaÊ
Rys. 3. Schemat elektryczny urządzenia. wobec tego pewne w¹tpliwoúci.
Listing 1.
;*************************************************************** card3 set cs,drb
;* Czytnik kart chipowych z RS232 ld a,x
;*************************************************************** cpi a,4
.title “Chip_Card” jrz card2
.input “rejestry.a62” jp card5
.vers “st6230” card2 ldi drwr,rtr_err.w
.romsize 8 ldi y,rtr_err.d
.pp_on call info_a
.dp_on card6 res lederr,drd
.w_on call wait
set lederr,drd
rst .equ 4 ; portc call wait
insert .equ 5 ; portc jrs insert,drc,card6
cs .equ 4 ; portb card5 ret
sda .equ 5 ; portb
scl .equ 6 ; portb
ledprog .equ 6 ; portd ;***************************************************************
lederr .equ 7 ; portd ;* Procedura INFO - wysyla 16 znakow komunikatu przez RS232
;***************************************************************
info_a *******************
.section 1
.org 0h
;***************************************************************
;*************************************************************** ;* Procedura odczytu bajtu R_T_R
;* Inicjalizacja procesora ;* Odczytany bajt znajduje sie w A
;*************************************************************** ;* Informacje odbierane sa w kolejnosci: BYTE0 LSB..MSB, BYTE1...
begin ldi ddrd,11100000b ; wyjscie dla UARTa i LEDow ;***************************************************************
ldi ord,11100000b ; read_byte:
ldi drd,00000000b res ledprog,drd
clr a
ldi ddrc,00010000b ; ustala wyjscie dla RST set scl,drb
ldi orc,00010000b jrr sda,drb,b7_1 ; oznacza, ze odebrany bit jest rowny 1
ldi drc,00000000b set 0,a
b7_1 res scl,drb
ldi ddrb,01010000b ; wyjscia SCL, CS, set scl,drb
; SDA na razie “wejscie” jrr sda,drb,b6_1
ldi orb,01010000b ; zalezy od bitu PB5 set 1,a
ldi drb,00010000b b6_1 res scl,drb
set scl,drb
reti jrr sda,drb,b5_1
set 2,a
set 7,drd ; gasi LEDa ERR b5_1 res scl,drb
set 6,drd ; gasi LEDa PROG set scl,drb
jrr sda,drb,b4_1
ldi ior,00010000b ; wlacza przerwania set 3,a
ldi uartcr,00101001b ; ustala, ze: b4_1 res scl,drb
; - szybkosc: 19200b/s (8n1 lub 2) set scl,drb
; - aktywne przerwanie od RECEIVERa jrr sda,drb,b3_1
set 4,a
b3_1 res scl,drb
;*************************************************************** set scl,drb
;* Odczytuje z karty RESPONSE TO RESET i wysyla do PC jrr sda,drb,b2_1
;* Wykorzystany bufor TEMP i V, X! set 5,a
;*************************************************************** b2_1 res scl,drb
card res ledprog,drd ; opoznienie po wlaczeniu zasilania set scl,drb
call wait jrr sda,drb,b1_1
ldi x,0 ; zeruje bajt kontrolny czy set 6,a
00/FF b1_1 res scl,drb
set ledprog,drd set scl,drb
res cs,drb jrr sda,drb,b0_1
set rst,drc set 7,a
set scl,drb ; impuls zegara inicjujacy R_T_R b0_1 res scl,drb
nop ; niezbedne opoznienie (katalog!) set ledprog,drd
nop ret
nop
res scl,drb wait ldi v,0ffh
res rst,drc l2 ldi a,0ffh
ldi v,4 ; ilosc bajtow do odczytania l1 dec a
rd_rtr call read_byte jrnz l1
ld uartdr,a dec v
cpi a,0 jrnz l2
jrz dodaj ret
cpi a,0ffh
jrz dodaj .section 32
jp card1 .org 00h
dodaj inc x ; zwieksza stan licznika bajtow 00/FF jp uart_int ; skok do obslugi przerwania od REC UART
card1 jrr 6,uartcr,card1 ; wysyla odczytany bajt do PC
dec v .org 0eh
jrz card3 reset jp begin
jp rd_rtr
WybÛr na ST62T30B pad³ regowej transmisji danych jest wano oprÛcz elementÛw tworz¹-
z†dwÛch zasadniczych powodÛw. prosta, niezawodna i†moøliwe cych interfejs takøe pompÍ ³adun-
1.Ma on duø¹ pamiÍÊ dla progra- jest wykorzystanie stosunkowo kow¹, dziÍki ktÛrej napiÍcie 5V
mu, co pozwoli³o na doúÊ swo- duøych szybkoúci (do 38,4kb/s), jest przetwarzane do poziomu
bodne (czytaj rozrzutne) gospo- co jest niewykonalne w†przy- ±9..12V, co w†zupe³noúci spe³nia
darowanie ni¹. Program steruj¹- padku programowej emulacji in- wymagania stawiane przez stan-
cy po ìdoszlifowaniuî zajmuje tefejsu. dard RS232.
ok. 6,3kB, przy czym z†pewnoú- Tak wiÍc zwyciÍøy³a wygoda W†egzemplarzu modelowym
ci¹ da³oby siÍ go jeszcze nieco projektanta - co wzi¹wszy po ADM232L, ktÛry charakteryzuje
zmniejszyÊ, ale nie w†takim uwagÍ cenÍ uk³adu - jest wystar- siÍ wbudowanymi doskona³ymi
stopniu, aby zejúÊ poniøej kry- czaj¹cym uzasadnieniem w tym zabezpieczeniami antyprzepiÍcio-
tycznego progu 4kB (takie procesorze. wymi, niewielkim poborem mocy,
ìkwantyî pojemnoúci pamiÍci Uk³ad US3 spe³nia rolÍ kon- a†do poprawnej pracy wystarczaj¹
dostÍpne s¹ w†rodzinie ST62). wertera napiÍciowego, poúredni- mu cztery niewielkie kondensato-
2.Procesory ST62T30B maj¹ wbu- cz¹cego pomiÍdzy mikrokontrole- ry o†pojemnoúci ok. 1µF. Moøna
dowany sprzÍtowy port szerego- rem ST62T30B i†lini¹ RS232. oczywiúcie zastosowaÊ zamiast
wy, dziÍki czemu obs³uga sze- W†strukturÍ tego uk³adu wbudo- ADM232L dowoln¹ inn¹ wersjÍ
rem op-
tycznym jest dio-
da D4 (ozn. CARD),
Rys. 4. Budowa układu zerującego ktÛra swoim úwiece-
DS1813. niem sygnalizuje
w³oøenie karty (lub
tego popularnego uk³adu, ale wy- czegoú do niej me-
maga to zazwyczaj dobrania po- chanicznie podobne-
jemnoúci kondensatorÛw C12..15 go) do uchwytu Zl2.
(patrz uwagi w†wykazie elemen- Pozosta³e elemen-
tÛw). ty urz¹dzenia s¹ doúÊ
DoúÊ intryguj¹co (przyznacie typowe i†nie bÍdÍ ich
wszyscy) wygl¹da na schemacie szczegÛ³owo omawia³.
inwerter, wykonany w†oparciu Wartko jedynie zwrÛ-
o†tranzystor T1 i†dwa rezystory: ciÊ uwagÍ na fakt
R1, R2. Zastosowanie tego skom- zastosowania na we-
plikowanego uk³adu mia³o na júciu zasilania most-
celu zlikwidowanie niedorÛbki ka prostowniczego
(tak to niestety wygl¹da!) projek- w†uk³adzie Graetza,
tantÛw interfejsu UART w†uk³a- dziÍki czemu polary- Rys. 5. Rozmieszczenie elementów na płytce
dzie ST62T30B. NiedorÛbka ta zacja napiÍcia we- drukowanej.
polega na wysy³aniu na pin TxD júciowego moøe byÊ dowolna, sygnalizowane zewnÍtrznie zapa-
informacji w†postaci zanegowa- moøliwe jest takøe zasilanie na- leniem na chwilÍ diod ERR
nej, co zdecydowanie uniemoøli- piÍciem zmiennym. i†PROG, nastÍpnie zgaúniÍciem
wia pracÍ interfejsu. Tak wiÍc, diody ERR i†po chwili PROG.
po zastosowaniu inwertera przed Montaø i†uruchomienie Taka sekwencja oznacza, øe ini-
uk³adem AD232 problemy z†po- P³ytkÍ programatora zaprojek- cjalizacja procesora przebieg³a pra-
prawnoúci¹ transmisji danych towano jako dwustronn¹ z†meta- wid³owo. NastÍpnie naleøy pod-
zniknͳy. W†egzemplarzu modelo- lizowanymi otworami. Widok mo- ³¹czyÊ do programatora i†kompu-
wym zastosowano pojedynczy in- zaiki úcieøek obydwu stron p³ytki tera PC kabel RS232 i†uruchomiÊ
weter serii TinyLogic, ale ze przedstawiono na wk³adce we- dowolny program terminalowy.
wzglÍdu na trudny montaø (SMD) wn¹trz numeru, a†schemat mon- Doskonale do tego celu nadaje siÍ
i†stosunkowo wysok¹ cenÍ uk³adu taøowy p³ytki na rys. 5. Hyper Terminal (rys. 6), stano-
zdecydowanie lepszym rozwi¹za- Montaø urz¹dzenia nie ma spe- wi¹cy standardowe wyposaøenie
niem okaza³ siÍ inwerter tranzys- cjalnych wymagaÒ. Przed wluto- Windows 95 lub TERM95 (rys. 7),
torowy. waniem w†p³ytkÍ stabilizatora US4 ktÛry jest czÍúci¹ sk³adow¹ Nor-
Programator zosta³ wyposaøo- naleøy przykrÍciÊ do niego radia- ton Commandera. Programy termi-
ny w†cztery diody sygnalizacyjne tor, a†nastÍpnie przykrÍciÊ go do nalowe mog¹ pracowaÊ w†dowol-
LED, ktÛre w†pewnym stopniu p³ytki drukowanej. Po wykonaniu nym trybie znakowym z†wy³¹czo-
u³atwiaj¹ diagnostykÍ urz¹dzenia. tych czynnoúci moøna przyluto- nym echem lokalnym. Najlepszym
Dioda D1 (ozn. PWR) sygnalizuje waÊ koÒcÛwki stabilizatora do rozwi¹zaniem jest wykorzystanie
úwieceniem fakt do³¹czenia na- punktÛw lutowniczych. Bardzo trybu ANSI lub HEX.
piÍcia zasilaj¹cego do programa- waøne jest takøe - uwaga dla tych Parametry transmisji naleøy za-
tora. Zalecany dla niej kolor to CzytelnikÛw, ktÛrzy nie zakupi¹ daÊ nastÍpuj¹co:
zielony. Dioda D2 (ozn. PROG) zestawu - aby z³¹cze Zl1 by³o
informuje uøytkownika, øe proce- øeÒskie! Ze wzglÍdÛw bezpieczeÒ-
sor wymienia z†kart¹ informacjÍ, stwa warto zastosowaÊ pod uk³ad
w†zwi¹zku z†czym nie wolno jej US1 podstawkÍ.
wyjmowaÊ z†uchwytu Zl2. W†eg- Do uruchomienia uk³adu po-
zemplarzu modelowym zastoso- trzebny bÍdzie kabel 1:1 zakoÒ-
wano diodÍ o†øÛ³tym kolorze czony z³¹czami 9-stykowymi (z
úwiecenia. DiodÍ D3 (ozn. ERR) jednej strony mÍskim, z†drugiej
wykorzystano do sygnalizowania øeÒskim) oraz zasilacz o†napiÍciu
b³ÍdÛw wystÍpuj¹cych podczas wyjúciowym 8..15VDC i†wydajnoú-
pracy programatora. Najbardziej ci pr¹dowej min. 20mA.
ìlogicznymî kolorem tej diody Po w³¹czeniu zasilania proce-
jest oczywiúcie czerwony. Ostat- sor wykonuje prost¹ procedurÍ Rys. 6. Widok okna programu
nim zastosowanym sygnalizato- testow¹, ktÛrej wykonywanie jest Hyper Terminal.