´ UCEN ˇ ´I TECHNICKE ´ V BRNE ˇ VYSOKE BRNO UNIVERSITY OF TECHNOLOGY
FAKULTA ELEKTROTECHNIKY ˇ ´ICH TECHNOLOGI´I A KOMUNIKACN ´ ˇ RIC ˇ ´I TECHNIKY USTAV AUTOMATIZACE A ME FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION DEPARTMENT OF CONTROL AND INSTRUMENTATION
´ ´ SPRAVA ´ ˇ ´ ´ U ˚ VZDALEN A JEDNOCIPOV YCH SYSTEM REMOTE MAINTENANCE OF THE MICROCONTROLLER SYSTEMS
´ PRACE ´ DIPLOMOVA MASTER’S THESIS
´ AUTOR PRACE
´ Bc. MARTIN VAGNER
AUTHOR
´ VEDOUC´I PRACE SUPERVISOR
BRNO 2010
Ing. Pavel Kuˇcera, Ph.D.
ABSTRAKT Pr´ace ˇreˇs´ı problematiku vzd´alen´e spr´avy pamˇeti programu (firmware) jednoˇcipov´ych syst´em˚ u zaloˇzen´ych na mikrokontrol´erech ˇrady Atmel AVR prostˇrednictv´ım rozhran´ı Ethernet a protokol˚ u TCP/IP. Komunikaci zprostˇredkov´av´a embedded server NE-4100T. V u´vodu jsou rozebr´any vlastnosti pouˇzit´eho embedded serveru a zp˚ usoby programov´an´ı mikrokontrol´er˚ u Atmel AVR. Zvolen´ym ˇreˇsen´ım u´lohy je pak metoda bootloaderu, pro niˇz byl navrˇzen komunikaˇcn´ı protokol, softwarov´e vybaven´ı mikrokontrol´eru a obsluˇzn´y program pro PC. Po hardwarov´e str´ance ˇreˇsen´ı zahrnuje n´avrh obvod˚ u pro propojen´ı serveru NE-4100T s modulem mikrokontrol´eru, sniˇzuj´ıc´ıho mˇeniˇce napˇet´ı, obvodu hodin re´aln´eho ˇcasu a pˇr´ısluˇsn´e desky ploˇsn´ych spoj˚ u. V projektu se podaˇrilo splnit poˇzadavky na vzd´alenou spr´avu pamˇeti programu mikrokontrol´eru, ale nebylo nalezeno dostateˇcn´e ˇreˇsen´ı stran zabezpeˇcen´ı proti neopr´avnˇen´emu pˇr´ıstupu a napaden´ı syst´emu.
ˇ ´ SLOVA KL´ICOV A Vzd´alen´a spr´ava, mikrokontrol´er, z´apis a maz´an´ı pamˇeti programu, firmware, bootloader, Atmel AVR, Ethernet, TCP/IP, MOXA NE-4100T, ATmega644
ABSTRACT This thesis deals with methods of remote maintenance of microcontroller systems based on Atmel AVR family over the Ethernet interface and TCP/IP protocols. To create communication through TCP/IP, an embedded server NE-4100T is used. At the beginning, key features of the server and methods of handling with content of a program memory are discussed. The final solution is based on the bootloader method. It includes bootloader firmware and user program for PC. The hardware part covers design of interconnection electronics, DC-DC step down converter, real time clock and printed circuit board. The remote maintenance of program memory has been sucessfully solved, but the embedded server NE-4100T produces a problem with an auhentification without a sufficient solution.
KEYWORDS Remote maintenance, microcontroller, programming and erasing of the program memory, firmware, bootloader, Atmel AVR, Ethernet, TCP/IP, MOXA NE-4100T, ATmega644
´ VAGNER, M.: Vzd´alen´a spr´ava jednoˇcipov´ych syst´em˚ u. Brno: Vysok´e uˇcen´ı technick´e v Brnˇe, Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı, 2010. 92 s. Vedouc´ı diplomov´e pr´ace Ing. Pavel Kuˇcera, Ph.D.
´ SEN ˇ ´I PROHLA Prohlaˇsuji, ˇze svou diplomovou pr´aci na t´ema
Vzd´alen´a spr´ava jednoˇcipov´ych ” syst´em˚ u“ jsem vypracoval samostatnˇe pod veden´ım vedouc´ıho diplomov´e pr´ace a s pouˇzit´ım odborn´e literatury a dalˇs´ıch informaˇcn´ıch zdroj˚ u, kter´e jsou vˇsechny citov´any v pr´aci a uvedeny v seznamu literatury na konci pr´ace. Jako autor uveden´e diplomov´e pr´ace d´ale prohlaˇsuji, ˇze v souvislosti s vytvoˇren´ım t´eto diplomov´e pr´ace jsem neporuˇsil autorsk´a pr´ava tˇret´ıch osob, zejm´ena jsem nezas´ahl nedovolen´ym zp˚ usobem do ciz´ıch autorsk´ych pr´av osobnostn´ıch a jsem si plnˇe vˇedom n´asledk˚ u poruˇsen´ı ustanoven´ı § 11 a n´asleduj´ıc´ıch autorsk´eho z´akona ˇc. 121/2000 Sb., vˇcetnˇe moˇzn´ych trestnˇepr´avn´ıch d˚ usledk˚ u vypl´yvaj´ıc´ıch z ustanoven´ı § 152 trestn´ıho z´akona ˇc. 140/1961 Sb.
V Brnˇe dne
...............
.................................. (podpis autora)
ˇ ´ ´I PODEKOV AN Dˇekuji vedouc´ımu diplomov´e pr´ace Ing. Pavlu Kuˇcerovi, Ph.D. za u´ˇcinnou metodickou, pedagogickou a odbornou pomoc a dalˇs´ı cenn´e rady pˇri zpracov´an´ı m´e diplomov´e pr´ace.
V Brnˇe dne
...............
.................................. (podpis autora)
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
6
Obsah ´ 1 Uvod
11
2 Volba koncepce rˇ eˇsen´ı
12
2.1
2.2
2.3
2.4
Rozbor vlastnost´ı embedded serveru NE-4100T . . . . . . . . . . . . . .
12
2.1.1
Nap´ajen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
2.1.2
Rozhran´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
2.1.3
Pracovn´ı m´ody . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
2.1.4
Mechanick´e specifikace . . . . . . . . . . . . . . . . . . . . . .
16
2.1.5
Konfigurace a softwarov´e vybaven´ı . . . . . . . . . . . . . . . .
16
Mikrokontrol´ery Atmel AVR 8-bit . . . . . . . . . . . . . . . . . . . . .
18
2.2.1
Architektura . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
2.2.2
Typy pamˇet´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
Metody programov´an´ı . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
2.3.1
Paraleln´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
2.3.2
S´eriov´e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
2.3.3
Rozhran´ı IEEE 1149.1 (JTAG) . . . . . . . . . . . . . . . . . . .
21
2.3.4
Rozhran´ı debugWIRE . . . . . . . . . . . . . . . . . . . . . . .
21
2.3.5
Bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
Rozbor moˇzn´ych zp˚usob˚u ˇreˇsen´ı . . . . . . . . . . . . . . . . . . . . . .
22
2.4.1
Bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
2.4.2
SPI, JTAG, debugWIRE . . . . . . . . . . . . . . . . . . . . . .
23
2.4.3
Jin´y server neˇz NE-4100T . . . . . . . . . . . . . . . . . . . . .
24
ˇ sen´ı 3 Reˇ
25
3.1
Funkce bootloaderu . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
3.2
Poˇzadovan´y hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
3.2.1
CPU unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
3.2.2
Monitor nap´ajen´ı a watchdog timer . . . . . . . . . . . . . . . .
27
Rozbor funkc´ı a cˇ innosti bootloaderu . . . . . . . . . . . . . . . . . . . .
29
Pamˇet’ov´y prostor . . . . . . . . . . . . . . . . . . . . . . . . . .
29
3.3
3.3.1
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
3.4
3.5
3.6
7
3.3.2
Konfiguraˇcn´ı bity pamˇeti programu . . . . . . . . . . . . . . . .
31
3.3.3
Spuˇstˇen´ı bootloaderu . . . . . . . . . . . . . . . . . . . . . . . .
31
3.3.4
Vektory pˇreruˇsen´ı . . . . . . . . . . . . . . . . . . . . . . . . . .
33
3.3.5
Instrukce SPM, registr SPMCSR . . . . . . . . . . . . . . . . . .
34
3.3.6
Maz´an´ı str´anky pamˇeti programu . . . . . . . . . . . . . . . . .
35
3.3.7
Z´apis str´anky pamˇeti programu . . . . . . . . . . . . . . . . . .
36
3.3.8
Z´apis konfiguraˇcn´ıch bit˚u pamˇeti programu . . . . . . . . . . . .
36
3.3.9
ˇ ı konfiguraˇcn´ıch byt˚u . . . . . . . . . . . . . . . . . . . . . Cten´
38
ˇ ı podpisu MCU a kalibrace RC oscil´atoru . . . . . . . . . . . 3.3.10 Cten´
38
Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
3.4.1
Zmˇeny modulu CPU unit . . . . . . . . . . . . . . . . . . . . . .
40
3.4.2
Propojen´ı NE-4100T a modulu CPU unit . . . . . . . . . . . . .
40
3.4.3
Hodiny re´aln´eho cˇ asu . . . . . . . . . . . . . . . . . . . . . . . .
41
3.4.4
Nap´ajec´ı zdroj . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
3.4.5
Vstupy a v´ystupy . . . . . . . . . . . . . . . . . . . . . . . . . .
45
3.4.6
Deska ploˇsn´ych spoj˚u . . . . . . . . . . . . . . . . . . . . . . .
46
3.4.7
Poˇzadavky na souˇca´ stky . . . . . . . . . . . . . . . . . . . . . .
47
Komunikaˇcn´ı protokol . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
3.5.1
Form´at pˇrenosu . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
3.5.2
Start bootloaderu . . . . . . . . . . . . . . . . . . . . . . . . . .
50
3.5.3
Princip potvrzen´ı operac´ı maz´an´ı a z´apisu . . . . . . . . . . . . .
50
3.5.4
Vymaz´an´ı aplikaˇcn´ı sekce . . . . . . . . . . . . . . . . . . . . .
51
3.5.5
Z´apis do aplikaˇcn´ı sekce . . . . . . . . . . . . . . . . . . . . . .
52
3.5.6
ˇ ı konfiguraˇcn´ıch byt˚u . . . . . . . . . . . . . . . . . . . . . Cten´
52
3.5.7
ˇ ı podpisu MCU . . . . . . . . . . . . . . . . . . . . . . . . Cten´
52
3.5.8
Z´apis konfiguraˇcn´ıch bit˚u pamˇeti programu . . . . . . . . . . . .
54
3.5.9
Neplatn´y pˇr´ıkaz . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
Firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
55
3.6.1
Struktura projektu . . . . . . . . . . . . . . . . . . . . . . . . .
55
3.6.2
Start bootloaderu . . . . . . . . . . . . . . . . . . . . . . . . . .
55
3.6.3
ˇ an´ı na pˇr´ıkaz . . . . . . . . . . . . . . . . . . . . . . . . . . Cek´
57
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
3.7
8
3.6.4
Vymaz´an´ı aplikaˇcn´ı sekce . . . . . . . . . . . . . . . . . . . . .
59
3.6.5
Z´apis do aplikaˇcn´ı sekce . . . . . . . . . . . . . . . . . . . . . .
59
3.6.6
ˇ ı konfiguraˇcn´ıch byt˚u . . . . . . . . . . . . . . . . . . . . . Cten´
63
3.6.7
ˇ ı podpisu MCU . . . . . . . . . . . . . . . . . . . . . . . . Cten´
63
3.6.8
Z´apis konfiguraˇcn´ıch bit˚u pamˇeti programu . . . . . . . . . . . .
63
3.6.9
Pomocn´e funkce . . . . . . . . . . . . . . . . . . . . . . . . . .
63
3.6.10 Konfigurace bootloaderu . . . . . . . . . . . . . . . . . . . . . .
67
3.6.11 Kompilace . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
69
3.6.12 Konfigurace mikrokontrol´eru . . . . . . . . . . . . . . . . . . . .
69
3.6.13 Konfigurace NE-4100T . . . . . . . . . . . . . . . . . . . . . . .
70
Softwarov´e vybaven´ı PC . . . . . . . . . . . . . . . . . . . . . . . . . .
71
3.7.1
Knihovna pro TCP komunikaci . . . . . . . . . . . . . . . . . .
73
3.7.2
Knihovna k ovl´ad´an´ı DIO portu NE-4100T . . . . . . . . . . . .
73
3.7.3
Knihovna rozhran´ı bootloaderu . . . . . . . . . . . . . . . . . .
75
3.7.4
Konzolov´a aplikace . . . . . . . . . . . . . . . . . . . . . . . . .
76
4 V´ysledky
78
5 Z´avˇer
80
Reference
81
˚ veliˇcin a zkratek Seznam symbolu,
83
Seznam pˇr´ıloh
84
A Sch´ema zapojen´ı modulu CPU unit
85
B Sch´ema zapojen´ı modulu BOOT unit
86
C Desky ploˇsn´ych spoju˚ modulu BOOT unit
87
D Seznam souˇca´ stek
89
E Pˇrehled MCU rˇ ady Atmel AVR 8-bit
90
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
9
Seznam obr´azku˚ 2.1
Blokov´e sch´ema NE-4100T [1] . . . . . . . . . . . . . . . . . . . . . . .
12
2.2
Mechanick´e uspoˇra´ d´an´ı modulu NE-4100T [1] . . . . . . . . . . . . . .
16
2.3
Blokov´e sch´ema ATmega644 [11] . . . . . . . . . . . . . . . . . . . . .
19
3.1
Z´akladn´ı zapojen´ı MB3773 [14] . . . . . . . . . . . . . . . . . . . . . .
27
3.2
ˇ Casov´ e pr˚ubˇehy MB3773 [14] . . . . . . . . . . . . . . . . . . . . . . .
28
3.3
Rozdˇelen´ı pamˇeti Flash ATmega644 [11] . . . . . . . . . . . . . . . . .
30
3.4
Adresov´an´ı instrukce SPM [11] . . . . . . . . . . . . . . . . . . . . . . .
34
3.5
V´yvojov´e diagramy uˇzit´ı instrukce SPM . . . . . . . . . . . . . . . . . .
37
3.6
Blokov´e sch´ema zapojen´ı modulu BOOT unit . . . . . . . . . . . . . . .
39
3.7
Ovl´ad´an´ı sign´alu E RESET
. . . . . . . . . . . . . . . . . . . . . . . .
41
3.8
Blokov´e zapojen´ı hodin re´aln´eho cˇ asu PCF8563 [17] . . . . . . . . . . .
42
3.9
Sch´ema zapojen´ı hodin re´aln´eho cˇ asu . . . . . . . . . . . . . . . . . . .
43
3.10 Sch´ema zapojen´ı nap´ajec´ıho zdroje . . . . . . . . . . . . . . . . . . . . .
44
3.11 Sch´ema zapojen´ı vstup˚u a v´ystup˚u . . . . . . . . . . . . . . . . . . . . .
46
3.12 Form´at pˇrenosu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
3.13 V´yvojov´y diagram spuˇstˇen´ı bootloaderu . . . . . . . . . . . . . . . . . .
57
3.14 V´yvojov´y diagram cˇ ek´an´ı na pˇr´ıkaz . . . . . . . . . . . . . . . . . . . .
58
3.15 V´yvojov´y diagram vymaz´an´ı aplikaˇcn´ı sekce . . . . . . . . . . . . . . .
60
3.16 V´yvojov´y diagram z´apisu do aplikaˇcn´ı sekce . . . . . . . . . . . . . . . .
62
3.17 V´yvojov´e diagramy cˇ ten´ı konfiguraˇcn´ıch byt˚u, podpisu MCU a z´apisu konfiguraˇcn´ıch bit˚u pamˇeti programu . . . . . . . . . . . . . . . . . . . . C.1 Deska ploˇsn´ych spoj˚u - vrstva Top“ . . ” C.2 Deska ploˇsn´ych spoj˚u - vrstva Bottom“ ” C.3 Rozloˇzen´ı souˇca´ stek - vrstva Top“ . . . ” C.4 Rozloˇzen´ı souˇca´ stek - vrstva Bottom“ . ”
64
. . . . . . . . . . . . . . . . . .
87
. . . . . . . . . . . . . . . . . .
87
. . . . . . . . . . . . . . . . . .
88
. . . . . . . . . . . . . . . . . .
88
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
10
Seznam tabulek 2.1
Parametry pˇrenosu dat na rozhran´ı UART0 [1] . . . . . . . . . . . . . . .
14
2.2
Rozloˇzen´ı v´yvod˚u modulu NE-4100T [1] . . . . . . . . . . . . . . . . .
17
3.1
Konfigurace velikosti sekce bootloaderu u ATmega644 [11] . . . . . . . .
30
3.2
Konfiguraˇcn´ı bity pamˇeti programu - aplikaˇcn´ı sekce [11] . . . . . . . . .
32
3.3
Konfiguraˇcn´ı bity pamˇeti programu - sekce bootloaderu [11] . . . . . . .
32
3.4
Konfigurace um´ıstˇen´ı vektor˚u pˇreruˇsen´ı [11] . . . . . . . . . . . . . . . .
33
3.5
ˇ Casov´ an´ı z´apisu instrukc´ı SPM [11] . . . . . . . . . . . . . . . . . . . .
35
3.6
Hodnoty registru Z pro cˇ ten´ı konfiguraˇcn´ıch byt˚u [11] . . . . . . . . . . .
38
3.7
Mapov´an´ı konfiguraˇcn´ıch bit˚u do registru [11] . . . . . . . . . . . . . . .
38
3.8
Hodnoty registru Z pro cˇ ten´ı podpisu MCU a kalibrace RC oscil´atoru [11]
39
3.9
Form´at identifikaˇcn´ı sekvence . . . . . . . . . . . . . . . . . . . . . . .
50
3.10 Form´at komunikace pˇri maz´an´ı aplikaˇcn´ı sekce . . . . . . . . . . . . . .
51
3.11 Form´at komunikace pˇri z´apisu do aplikaˇcn´ı sekce . . . . . . . . . . . . .
53
3.12 Form´at komunikace pˇri cˇ ten´ı konfiguraˇcn´ıch byt˚u . . . . . . . . . . . . .
53
3.13 Form´at komunikace pˇri cˇ ten´ı podpisu MCU . . . . . . . . . . . . . . . .
53
3.14 Form´at komunikace pˇri z´apisu konfiguraˇcn´ıch bit˚u pamˇeti programu . . .
54
3.15 Odpovˇed’ na neplatn´y pˇr´ıkaz . . . . . . . . . . . . . . . . . . . . . . . .
55
3.16 Struktura projektu firmware . . . . . . . . . . . . . . . . . . . . . . . . .
56
3.17 Srovn´an´ı n´arok˚u v´ypoˇct˚u kontroln´ıho souˇctu (63232 B, ATmega644) . . .
65
3.18 Parametry pˇrekladaˇce AVR-GCC . . . . . . . . . . . . . . . . . . . . . .
69
3.19 Parametry linkeru AVR-GCC . . . . . . . . . . . . . . . . . . . . . . . .
70
3.20 Konfigurace MCU ATmega644 v modulu CPU unit . . . . . . . . . . . .
71
3.21 Konfigurace NE-4100T - povinn´e parametry . . . . . . . . . . . . . . . .
72
3.22 Form´at pˇr´ıkazu a odpovˇedi pro nastaven´ı DIO sign´alu NE-4100T [1] . . .
74
3.23 N´avratov´e k´ody pˇr´ıkazu pro nastaven´ı DIO sign´alu NE-4100T [1] . . . .
74
3.24 Parametry pˇr´ıkazov´e ˇra´ dky uˇzivatelsk´e aplikace . . . . . . . . . . . . . .
77
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
´ 1 Uvod V souˇcasn´e dobˇe elektronick´a zaˇr´ızen´ı st´ale ve vˇetˇs´ım mnoˇzstv´ı vyuˇz´ıvaj´ı nam´ısto mnoha jedno´ucˇ elov´ych obvod˚u integrovan´a ˇreˇsen´ı v podobˇe mikrokontrol´er˚u. Mezi hlavn´ı d˚uvody patˇr´ı velk´e mnoˇzstv´ı integrovan´ych periferi´ı, rostouc´ı v´ykon a d´ıky masov´e produkci tak´e klesaj´ıc´ı cena. Integrovan´e periferie pˇreb´ıraj´ı funkci extern´ıch podp˚urn´ych obvod˚u, cˇ´ımˇz zjednoduˇsuj´ı cel´e zaˇr´ızen´ı a tak zmenˇsuj´ı jeho rozmˇery. Mikrokontrol´ery b´yvaj´ı nejˇcastˇeji vybaveny pamˇet´ı programu typu flash, proto m˚uzˇ e b´yt program opakovanˇe pˇreps´an. Pˇrepisov´an´ı obsahu pamˇeti programu ve v´ysledku dovoluje u st´av´aj´ıc´ıch zaˇr´ızen´ı jednoduˇse modifikovat programov´e vybaven´ı, a tak pˇrid´avat nov´e funkce, cˇ i odstraˇnovat pˇr´ıpadn´e chyby. Z tˇechto skuteˇcnost´ı logicky vypl´yv´a poˇzadavek na n´astroje, kter´e umoˇzn´ı spr´avu tˇechto syst´em˚u. S rozvojem v´ypoˇcetn´ı techniky a s´ıt’ov´eho rozhran´ı Ethernet doch´az´ı k pronik´an´ı tˇechto technologi´ı i do oblasti pr˚umyslov´e automatizace a embedded zaˇr´ızen´ı. Rozvoj Ethernetu v tˇechto odvˇetv´ıch zp˚usobil pˇredevˇs´ım pˇr´ıchod technologie Fast Ethernet s pˇrenosovou rychlost´ı 100 Mbit/s, kter´a spolu s vhodn´ym komunikaˇcn´ım protokolem dosahuje lepˇs´ıch vlastnost´ı z hlediska odezvy a pˇrenosov´e rychlosti na vˇetˇs´ı vzd´alenosti ve srovn´an´ı s bˇezˇ n´ymi technologiemi jako Profibus DP. Vzd´alen´a spr´ava pak nach´az´ı sv´e m´ısto hlavnˇe z hlediska snazˇs´ı diagnostiky, minimalizace n´aklad˚u na u´ drˇzbu a rychlejˇs´ımu ˇreˇsen´ı probl´em˚u, protoˇze tak cˇ asto odpad´a nutnost fyzick´e pˇr´ıtomnosti oper´atora u dan´eho zaˇr´ızen´ı. Z principu vzd´alen´eho pˇr´ıstupu na druhou stranu vznikaj´ı i nov´a rizika. T´ım je pˇredevˇs´ım moˇznost vzd´alen´eho napaden´ı syst´emu za u´ cˇ elem neopr´avnˇen´eho z´ısk´an´ı procesn´ıch dat, pozmˇenˇen´ı jeho cˇ innosti nebo u´ pln´eho vyˇrazen´ı z provozu. Pr´ace si klade za c´ıl vytvoˇrit syst´em pro vzd´alenou spr´avu modulu s mikrokontrol´erem typu Atmel AVR prostˇrednictv´ım s´ıt’ov´eho rozhran´ı Ethernet a sadou protokol˚u transportn´ı vrstvy TCP/IP. K implementaci rozhran´ı Ethernet bude vyuˇzito embedded serveru NE-4100T. Pro tyto komponenty bude ˇreˇsen´ı zahrnovat n´avrh obvod˚u nutn´ych k jejich vz´ajemn´emu propojen´ı a nap´ajen´ı, d´ale n´avrh desky ploˇsn´ych spoj˚u a n´aslednou realizaci cel´eho zaˇr´ızen´ı. Snahou bude pˇredevˇs´ım jednoduchost, v r´amci moˇznost´ı generalizace ˇreˇsen´ı na co nejˇsirˇs´ı poˇcet obvod˚u z ˇrady Atmel AVR a zabezpeˇcen´ı syst´emu.
11
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
2 Volba koncepce rˇ eˇsen´ı ´ Uvod pr´ace bude zamˇeˇren na zevrubn´e vlastnosti poˇzadovan´ych komponent, kter´ymi jsou pˇredevˇs´ım embedded server NE-4100T a mikrokontrol´ery ˇrady Atmel AVR. Na jejich z´akladˇe pak budou diskutov´any r˚uzn´e zp˚usoby ˇreˇsen´ı, jejich v´yhody, nev´yhody a nakonec zvoleno jedno konkr´etn´ı ˇreˇsen´ı.
2.1 Rozbor vlastnost´ı embedded serveru NE-4100T Moduly ˇrady NE-4100 pˇredstavuj´ı jednoduch´y zp˚usob implementace ethernetov´eho rozhran´ı a protokol˚u TCP/IP do jak´ekoliv aplikace disponuj´ıc´ı s´eriov´ym rozhran´ım. Jedn´a se o embedded server, jenˇz vytv´aˇr´ı most mezi rozhran´ım Ethernet a asynchronn´ım s´eriov´ym portem s ˇradou dalˇs´ıch funkc´ı. Moduly jsou k dispozici v nˇekolika modifikac´ıch liˇs´ıc´ıch se zp˚usobem pˇripojen´ı a mont´azˇ e do c´ılov´eho zaˇr´ızen´ı. ˇ ˇr´ıd´ı sˇestn´actibitov´y procesor Blokov´e sch´ema se nach´az´ı na obr´azku 2.1. Cinnost z ˇrady 80186 doplnˇen´y o 1 MB pamˇeti dat typu SDRAM, 2 MB pamˇeti programu flash, coˇz umoˇznˇ uje aktualizaci firmware modulu, a dvˇe asynchronn´ı s´eriov´e linky. Rozhran´ı Ethernet se skl´ad´a z obvod˚u fyzick´e a linkov´e vrstvy. Na nˇe navazuje implementace TCP/IP komunikace. Nav´ıc jsou k dispozici cˇ tyˇri digit´aln´ı sign´aly konfigurovateln´e jako vstupy cˇ i v´ystupy pro vˇseobecn´e u´ cˇ ely a signalizaˇcn´ı LED definuj´ıc´ı stav modulu.
Obr´azek 2.1: Blokov´e sch´ema NE-4100T [1]
12
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
2.1.1 Nap´ajen´ı Hlavn´ı nev´yhodou modulu je poˇzadovan´e nap´ajec´ı napˇet´ı 5 V ± 5 % a maxim´aln´ı odeb´ıran´y proud 290 mA [1]. Modern´ı zaˇr´ızen´ı s n´ızkou spotˇrebou obvykle pracuj´ı s niˇzsˇ´ım nap´ajec´ım napˇet´ım (3,3 nebo 1,8 V), coˇz znemoˇznˇ uje snadn´e vyuˇzit´ı modulu NE-4100T v tˇechto pˇr´ıpadech z d˚uvodu rozd´ıln´ych logick´ych u´ rovn´ı. V´yrobcem ud´avan´a n´ızk´a spotˇreba 1,5 W rovnˇezˇ nen´ı ve srovn´an´ı s obdobn´ymi konkurenˇcn´ımi v´yrobky (EM1000 a EM1202 [4], EZL-50M [5], XT-Nano-XXL [6], FModTCP DB [7]), kter´e se pohybuj´ı v oblasti 0,4 aˇz 0,7 W, nikterak v´yjimeˇcn´a.
2.1.2 Rozhran´ı Ethernet Fyzickou vrstvu vytv´aˇr´ı obvod RTL8201BL. Podporov´any jsou dnes nejbˇezˇ nˇeji pouˇz´ıvan´e standardy 10Base-T a 100Base-TX s moˇznost´ı poloviˇcn´ıho nebo pln´eho duplexu, pˇriˇcemˇz nechyb´ı automatick´a detekce (auto negotiation). Na modulu se d´ale nach´az´ı nezbytn´y oddˇelovac´ı transform´ator s izolaˇcn´ım napˇet´ım 1,5 kV, kter´y tvoˇr´ı galvanick´e oddˇelen´ı. S´eriov´e rozhran´ı Modul NE-4100T obsahuje dvˇe rozd´ılnˇe vybaven´a asynchronn´ı s´eriov´a rozhran´ı s logick´ymi u´ rovnˇemi TTL. Pro pˇripojen´ı serveru k uˇzivatelsk´emu zaˇr´ızen´ı slouˇz´ı plnohodnotn´e rozhran´ı UART0. K dispozici jsou sign´aly TxD, RxD, RTS, CTS, DTR, DSR, DCD. Moˇzn´a nastaven´ı parametr˚u pˇrenosu dat ud´av´a tabulka 2.1. Rozhran´ı UART1 zprostˇredkov´av´a vstup a v´ystup konfiguraˇcn´ı konzole. Parametry pˇrenosu jsou pevnˇe nastaveny v´yrobcem na 19200 bit/s, 8 datov´ych bit˚u, 1 stop bit, bez parity a ˇr´ızen´ı toku. Rozhran´ı m´a vyvedeny pouze sign´aly RxD, TxD. Digit´aln´ı vstupy/v´ystupy Modul d´ale nab´ız´ı cˇ tyˇri programovateln´e vstupnˇe-v´ystupn´ı porty s logick´ymi u´ rovnˇemi typu TTL. U kaˇzd´eho DIO m˚uzˇ e uˇzivatel definovat jeho funkci (vstup cˇ i v´ystup) a ˇ ı a programov´an´ı prob´ıh´a pomoc´ı pˇr´ıkaz˚u v pˇr´ıpadˇe v´ystupu logickou u´ roveˇn. Cten´
13
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
na definovan´em TCP portu ([1], pˇr´ıloha D DIO Commands“). Nev´yhoda spoˇc´ıv´a ve ” skuteˇcnosti, zˇ e pˇr´ıstup k tˇemto funkc´ım m˚uzˇ e b´yt omezen pouze povolen´ymi IP adresami ([1], kapitola 6 Accessible IP Settings“). ” Datov´ych bit˚u
5, 6, 7, 8
Stop bit˚u
1, 1,5, 2
Parita
zˇ a´ dn´a, sud´a, lich´a, space (vˇzdy 0), mark (vˇzdy 1)
ˇ ızen´ı toku dat R´
vypnuto, hardwarov´e RTS/CTS, softwarov´e XON/XOFF
Pˇrenosov´a rychlost
50 bit/s aˇz 115,2 kbit/s (PCB V1.x) 110 kbit/s aˇz 230 kbit/s (PCB V2.x)
Vyrovn´avac´ı pamˇet’
vypnuta, 16 B (FIFO)
Tabulka 2.1: Parametry pˇrenosu dat na rozhran´ı UART0 [1]
2.1.3 Pracovn´ı m´ody Hlavn´ı v´yhoda modulu NE-4100T spoˇc´ıv´a pro jednoduch´a zaˇr´ızen´ı v implementaci komunikace pomoc´ı TCP/IP protokolu, coˇz vede ke zjednoduˇsen´ı c´ılov´e aplikace. Uˇzivatel m´a k dispozici s´eriov´e rozhran´ı, kde data jsou pˇren´asˇena prostˇrednictv´ım Ethernetu a protokol˚u TCP/IP bez nutnosti zab´yvat se konkr´etn´ı problematikou tˇechto vrstev. Ke splnˇen´ı u´ cˇ elu a poˇzadavk˚u c´ılov´e aplikace jsou k dispozici cˇ tyˇri m´ody, ve kter´ych m˚uzˇ e modul pracovat. Tyto moˇznosti se snaˇz´ı postihnout nejbˇezˇ nˇejˇs´ı poˇzadavky ze strany uˇzivatelsk´ych zaˇr´ızen´ı. Jedn´a se o varianty TCP server, TCP klient, UDP a virtu´aln´ı s´eriov´y port. TCP server Modul v m´odu TCP server naslouch´a na sv´e IP adrese a zvolen´em TCP portu. Na zˇ a´ dost klienta je sestaveno obousmˇern´e spojen´ı, kter´e umoˇznˇ uje zapisovat a cˇ´ıst data prostˇrednictv´ım s´eriov´e linky. Princip protokolu TCP [9, 8] garantuje spolehliv´e doruˇcen´ı dat ve spr´avn´em poˇrad´ı, nebo informaci o jejich nedoruˇcitelnosti. V jednom okamˇziku dovoluje server pˇripojen´ı aˇz cˇ tyˇr klient˚u souˇcasnˇe, pˇriˇcemˇz jejich poˇcet lze dle potˇreby libovolnˇe omezit.
14
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
TCP server m´od se tedy jev´ı v´yhodn´y pˇredevˇs´ım pro samostatnˇe pracuj´ıc´ı zaˇr´ızen´ı, d´alkovou spr´avu, termin´aly a uˇzivatelsk´a rozhran´ı, zvl´asˇtˇe je-li poˇzadov´ano potvrzen´ı o pˇrenesen´ı dat. TCP klient Tento m´od dovoluje pˇripojen´ı modulu protokolem TCP ke vzd´alen´emu hostiteli. Jeho IP adresa a c´ılov´y port mus´ı b´yt pˇredem zn´am a pevnˇe nastaven. Data se n´aslednˇe pˇren´asˇ´ı obousmˇernˇe a k ukonˇcen´ı spojen´ı doch´az´ı po definovan´em cˇ asov´em intervalu, je-li pˇrenos dat neaktivn´ı. Z pouˇzit´ı protokolu TCP pak vypl´yvaj´ı stejn´e vlastnosti jako u m´odu server. Sestaven´ı spojen´ı tedy doch´az´ı na zˇ a´ dost modulu, a tak data mohou b´yt pˇren´asˇena v n´avaznosti na cˇ asovˇe nedeterministick´e ud´alosti. T´ım se sniˇzuje zat´ızˇ en´ı s´ıtˇe nadbyteˇcnou komunikac´ı, kterou by zp˚usobovalo udrˇzov´an´ı spojen´ı cˇ i kontrolov´an´ı zmˇen v reˇzimu server. UDP m´od Pˇrenos dat se realizuje prostˇrednictv´ım protokolu UDP [10, 8]. Hlavn´ı rozd´ıl UDP m´odu od m´od˚u TCP tedy spoˇc´ıv´a v komunikaci bez nutnosti sestavit spojen´ı. Mezi v´yhody patˇr´ı menˇs´ı n´aroˇcnost, rychlejˇs´ı pˇrenos dat a moˇznost snadn´eho doruˇcen´ı dat na velk´e mnoˇzstv´ı adres (multicasting). Nev´yhodou je pˇredevˇs´ım absence ovˇeˇren´ı spr´avn´eho doruˇcen´ı na u´ rovni protokolu UDP. M´od se s v´yhodou pouˇz´ıv´a hlavnˇe k u´ loh´am, kter´e nevyˇzaduj´ı vysokou spolehlivost, jako napˇr´ıklad vizualizace. Vzhledem k absenci postup˚u pro spolehliv´e doruˇcen´ı, kter´e vn´asˇej´ı cˇ asovˇe nedeterministick´e chov´an´ı, je UDP m´od vhodn´y i pro u´ lohy s poˇzadavky na pr´aci v re´aln´em cˇ ase, kdy chybov´e stavy ˇreˇs´ı pˇr´ısluˇsn´y nadˇrazen´y protokol. Real COM m´od Z´aklad spoˇc´ıv´a ve vytvoˇren´ı virtu´aln´ıho s´eriov´eho portu COM na PC pomoc´ı dod´avan´ych ovladaˇcu˚ . Data se pak pˇren´asˇej´ı mezi t´ımto portem a vzd´alen´ym rozhran´ım modulu NE-4100T. Z hlediska softwarov´eho vybaven´ı PC se port chov´a jako standardn´ı port instalovan´y v PC.
15
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
M´od m´a za c´ıl pˇredevˇs´ım snadn´e rozˇs´ıˇren´ı st´avaj´ıc´ıch zaˇr´ızen´ı a software s rozhran´ım RS232 o komunikaci prostˇrednictv´ım Ethernetu. V tomto reˇzimu mus´ı b´yt br´ano v potaz dopravn´ı zpoˇzdˇen´ı zp˚usoben´e pˇrenosem dat, kter´e m˚uzˇ e snadno dos´ahnout jednotek sekund, a tak n´aslednˇe zapˇr´ıcˇ init nefunkˇcnost dan´e aplikace.
2.1.4 Mechanick´e specifikace Verze NE-4100T je urˇcena k mont´azˇ i na desku s ploˇsn´ymi spoji jako modul o rozmˇerech 36 x 45 mm s rozloˇzen´ım v´yvod˚u v uspoˇra´ d´an´ı DIL-26 a rozteˇc´ı 2,54 mm, jak ukazuje obr´azek 2.2. Pracovn´ı podm´ınky [2] se liˇs´ı pˇredevˇs´ım provozn´ım teplotn´ım rozsahem. Moduly ve standardn´ım proveden´ı jsou urˇceny pouze pro kladn´e hodnoty v rozsahu 0 aˇz 55 ◦ C. Modely s rozˇs´ıˇren´ym teplotn´ım rozsahem (oznaˇcen´e T) mohou pracovat v rozsahu teplot −40 aˇz 75◦ C. Povolen´y rozsah relativn´ı vlhkosti spad´a do rozmez´ı 5 aˇz 95 %.
Obr´azek 2.2: Mechanick´e uspoˇra´ d´an´ı modulu NE-4100T [1] Rozloˇzen´ı v´yvod˚u ud´av´a tabulka 2.2. Sign´aly ETx+, ETx-, ERx+, ERx- n´aleˇz´ı rozhran´ı Ethernet a jsou urˇceny k vyveden´ı na standardn´ı konektor typu RJ45. Vstupy GND a +5 V jsou pˇr´ıvody nap´ajec´ıho napˇet´ı, PIO0 aˇz PIO3 uˇzivatelsk´e vstupnˇe-v´ystupn´ı sign´aly a ostatn´ı piny n´aleˇz´ı s´eriov´ym rozhran´ım UART0 a UART1. Sign´aly 10M LED a 100M LED ud´avaj´ı aktu´aln´ı stav ethernetov´eho rozhran´ı, Ready LED stav modulu.
2.1.5 Konfigurace a softwarov´e vybaven´ı Spr´avu a nastaven´ı modulu zprostˇredkov´av´a rozhran´ı Network Enabler Configuration Interface (NECI), webov´e rozhran´ı, protokol telnet nebo s´eriov´a konzole na portu UART1.
16
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
1
ETx+ (RJ45 pin 1)
8
RTS
15
PIO1
22
GND
2
ETx- (RJ45 pin 2)
9
CTS
16
PIO2
23
Ready LED
3
ERx+ (RJ45 pin 3)
10
Reset
17
PIO3
24
+5 V
4
ERx- (RJ45 pin 6)
11
GND
18
100M LED
25
+5 V
5
10M LED
12
GND
19
DCD
26
RXD1
6
TXD
13
TXD1
20
DSR
-
-
7
RXD
14
PIO0
21
DTR
-
-
Tabulka 2.2: Rozloˇzen´ı v´yvod˚u modulu NE-4100T [1] Od verze firmware 3.0 je nav´ıc dostupn´y tzv. Serial Command Mode“, a tak lze soubo” rem speci´aln´ıch pˇr´ıkaz˚u [3] modul konfigurovat pˇr´ımo prostˇrednictv´ım datov´eho portu UART0. Pro rozhran´ı NECI existuje n´astroj s grafick´ym rozhran´ım Network Enabler Admi” nistrator“, nebo DLL knihovna pro jednoduchou integraci do uˇzivatelsk´e aplikace. Zabezpeˇcen´ı Z hlediska informaˇcn´ı bezpeˇcnosti modul NE-4100T dovoluje pˇr´ıstup k nastaven´ım chr´anit heslem, bohuˇzel dokumentace neuv´ad´ı, je-li proces ovˇeˇren´ı hesla nˇejak´ym zp˚usobem chr´anˇen pˇred odposlechem. Mezi bezpeˇcnostn´ı prvky d´ale patˇr´ı syst´em zas´ıl´an´ı hl´asˇen´ı na email prostˇrednictv´ım SMTP protokolu, kde lze definovat odesl´an´ı informaˇcn´ı zpr´avy v pˇr´ıpadˇe chybn´eho pokusu o pˇrihl´asˇen´ı, zmˇenˇe IP adresy, hesla cˇ i restartu. Na u´ rovni IP protokolu je moˇzn´e nastavit autorizovan´e IP adresy, kter´e maj´ı opr´avnˇen´ı s modulem komunikovat. Aˇz na omezen´ı IP adres klient˚u tedy nen´ı moˇzn´e dalˇs´ımi zp˚usoby oˇsetˇrit autorizaci ke komunikaci prostˇrednictv´ım datov´eho portu, nebo pˇr´ıstupu k uˇzivatelsk´ym port˚um. ´ Funkˇcn´ı bezpeˇcnost zvyˇsuje vestavˇen´y cˇ asovaˇc watchdog. Ukolem cˇ asovaˇce je zabr´anit permanentn´ımu zablokov´an´ı modulu vlivem hardwarov´e cˇ i softwarov´e chyby, kter´a obvykle vede k uv´aznut´ı vykon´av´an´ı programu, nebo nedefinovan´emu chov´an´ı. Nen´ı-li cˇ asovaˇc patˇriˇcn´ym zp˚usobem periodicky resetov´an, dojde pˇri vyprˇsen´ı cˇ asov´eho intervalu k resetov´an´ı modulu, a tak k obnoven´ı cˇ innosti.
17
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Dalˇs´ı funkce U s´eriov´eho rozhran´ı UART0 dovoluje modul NE-4100T nastavit generov´an´ı emailov´e zpr´avy pˇri zmˇenˇe logick´e u´ rovnˇe sign´al˚u DCD nebo DSR, cˇ ehoˇz je moˇzn´e vyuˇz´ıt napˇr´ıklad k odesl´an´ı upozornˇen´ı na chybov´e stavy. Pˇri dynamick´e konfiguraci IP adresy modulu ze serveru DHCP lze aktivovat funkci periodick´eho ohlaˇsov´an´ı novˇe z´ıskan´e IP adresy modulu na uˇzivatelsky definovanou adresu v s´ıti.
2.2 Mikrokontrol´ery Atmel AVR 8-bit Rodina obvod˚u Atmel AVR v souˇcasn´e dobˇe zahrnuje jednak 8-bitov´e obvody a jednak ˇradu 32-bitov´ych mikrokontrol´er˚u. Protoˇze jsou obˇe skupiny znaˇcnˇe odliˇsn´e a stˇredem z´ajmu t´eto pr´ace je pˇredevˇs´ım obvod ATmega644, bude d´ale uvaˇzov´ana pouze ˇrada 8bitov´ych mikrokontrol´er˚u, do kter´e spad´a. Z´astupci t´eto skupiny se pak d´ale dˇel´ı na ˇrady ATmega, ATtiny a AT90. V pˇr´ıloze E byl sestaven pˇrehled zm´ınˇen´ych obvod˚u a jejich kl´ıcˇ ov´ych vlastnost´ı pro tuto pr´aci. Z n´ı je patrn´e, zˇ e nejpoˇcetnˇejˇs´ı skupinu tvoˇr´ı pr´avˇe obvody ATmega, kter´e se z´aroveˇn vyznaˇcuj´ı nejvˇetˇs´ı v´ybavou v oblasti velikosti pamˇet’ov´ych prostor˚u a perif´eri´ı. Obvody ATtiny jsou urˇceny pro jednoduch´e aplikace, disponuj´ı minim´aln´ımi velikostmi pamˇet´ı programu a dat. Mikrokontrol´ery AT90PWM jsou pak zamˇeˇreny na speci´aln´ı aplikace, disponuj´ı odliˇsn´ymi vlastnostmi a vyznaˇcuj´ı se horˇs´ı dostupnost´ı. Z tˇechto d˚uvod˚u budou d´ale uvaˇzov´any obvody kategorie ATmega, kter´e jsou nejrozˇs´ıˇrenˇejˇs´ı a zahrnuj´ı obvod, jenˇz bude osazen v c´ılov´e aplikaci.
2.2.1 Architektura Architektura mikrokontrol´er˚u AVR vyuˇz´ıv´a redukovanou instrukˇcn´ı sadu (RISC) spolu s technikou zˇretˇezen´ı instrukc´ı. T´ım je dosaˇzeno vykon´an´ı vˇetˇsiny instrukc´ı v jednom hodinov´em cyklu, coˇz zajiˇst’uje vysok´y v´ykon pˇri n´ızk´ych taktovac´ıch frekvenc´ıch napˇr´ıklad oproti obvod˚um ˇrady 8051.
18
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Z hlediska d´alkov´e spr´avy firmware je vˇsak d˚uleˇzitˇejˇs´ı proveden´ı pamˇet’ov´eho subsyst´emu. Zde byla zvolena harvardsk´a architektura. Z toho vypl´yv´a, zˇ e pamˇet’ programu a pamˇet’ dat jsou fyzicky oddˇeleny. Pˇr´ıstup se ˇreˇs´ı prostˇrednictv´ım samostatn´ych adresn´ıch, datov´ych a ˇr´ıd´ıc´ıch sbˇernic. Z program´atorsk´eho hlediska pak pamˇeti disponuj´ı nez´avisl´ymi adresn´ımi prostory. Mikrokontrol´ery d´ale obsahuj´ı celou ˇradu podp˚urn´ych obvod˚u a periferi´ı, jak demonstruje blokov´e sch´ema na obr´azku 2.3. Z perifern´ıch obvod˚u jsou z pohledu d´alkov´e spr´avy d˚uleˇzit´a komunikaˇcn´ı rozhran´ı. Pro s´eriovou komunikaci v asynchronn´ım reˇzimu b´yvaj´ı mikrokontrol´ery AVR vybaveny jedn´ım aˇz dvˇema rozhran´ımi UART (podporuje pouze asynchronn´ı reˇzim) nebo USART (podporuje synchronn´ı i asynchronn´ı reˇzim), jak ud´av´a pˇrehled v pˇr´ıloze E. D˚uleˇzit´ymi periferiemi jsou tak´e obvody dohl´ızˇ ej´ıc´ı na nap´ajec´ı napˇet´ı a cˇ asovaˇc typu watchdog, kter´ymi je vybavena vˇetˇsina mikrokontrol´er˚u.
Obr´azek 2.3: Blokov´e sch´ema ATmega644 [11]
19
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
2.2.2 Typy pamˇet´ı Vˇsechny obvody ATmega obsahuj´ı integrovanou nonvolatiln´ı pamˇet’ programu typu flash, volatiln´ı pamˇet’ dat typu SRAM a nonvolatiln´ı pamˇet’ EEPROM pro uˇzivatelsk´a data. Mezi programovateln´e prvky d´ale patˇr´ı konfiguraˇcn´ı bity typu lock“ a fuse“. ” ” Pamˇet’ programu Pamˇet’ programu je intern´ı typu flash a nen´ı moˇzn´e jej´ı dalˇs´ı rozˇs´ıˇren´ı (napˇr. pˇripojen´ım extern´ı pamˇeti programu), coˇz dovoluje programov´an´ı jednotn´ym zp˚usobem. Organizace po sˇestn´acti bitech odpov´ıd´a sˇ´ıˇrce instrukˇcn´ıho slova, kdy jedna instrukce m´a sˇ´ıˇrku 16 nebo 32 bit˚u [12]. Velikost pamˇeti programu se pohybuje v rozmez´ı 1 aˇz 256 kB (viz. pˇr´ıloha E). Ud´avan´a zˇ ivotnost pamˇeti Flash je 10000 cykl˚u z´apis/vymaz´an´ı. Nonvolatiln´ı pamˇet’ dat Uˇzivatelsk´a pamˇet’ dat EEPROM s osmibitovou organizac´ı m˚uzˇ e m´ıt velikost 0 aˇz 4 kB (viz. pˇr´ıloha E). Nez´avisl´y adresn´ı prostor je dostupn´y pomoc´ı registr˚u v I/O oblasti prostˇrednictv´ım instrukc´ı IN, OUT. Ud´avan´a zˇ ivotnost 100000 cykl˚u.
2.3 Metody programov´an´ı Dostupn´e zp˚usoby programov´an´ı mikrokontrol´er˚u AVR hraj´ı kl´ıcˇ ovou roli ve volbˇe koncepce ˇreˇsen´ı dan´e u´ lohy, a proto budou d´ale rozebr´any jednotliv´e metody, uvedeny jejich vlastnosti, omezen´ı, v´yhody a nev´yhody.
2.3.1 Paraleln´ı Paraleln´ı programov´an´ı [11] vyˇzaduje jeden osmibitov´y I/O port, osm ˇr´ıd´ıc´ıch sign´al˚u, RESET vstup, hodinov´y sign´al a zv´ysˇen´e programovac´ı napˇet´ı 12 V. Touto metodou lze programovat a cˇ´ıst veˇsker´e pamˇet’ov´e prvky mikrokontrol´eru, a to s vysokou rychlost´ı. Podporov´any jsou vˇsechny obvody.
20
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Vzhledem k znaˇcn´e n´aroˇcnosti na propojen´ı I/O sign´al˚u a nezbytnosti programovac´ıho napˇet´ı 12 V, vˇsak nen´ı paraleln´ı programov´an´ı vhodn´e pro u´ lohu vzd´alen´e spr´avy firmware.
2.3.2 S´eriov´e Metodu s´eriov´eho programov´an´ı [11] podporuj´ı rovnˇezˇ vˇsechny mikrokontrol´ery. Fyzick´a vrstva odpov´ıd´a rozhran´ı SPI. Jsou vyˇzadov´any sign´aly MISO, MOSI, SCK, RESET a standardn´ı nap´ajec´ı napˇet´ı. Pomoc´ı s´eriov´eho programov´an´ı lze cˇ´ıst a zapisovat pamˇet’ programu flash, pamˇet’ dat EEPROM, konfiguraˇcn´ı fuse a lock bity. Tato metoda zaruˇcuje pˇri spr´avn´em obvodov´em ˇreˇsen´ı moˇznost programov´an´ı obvodu pˇr´ımo v zapojen´ı bez nutnosti jeho vyjmut´ı.
2.3.3 Rozhran´ı IEEE 1149.1 (JTAG) Mikrokontrol´ery, kter´e disponuj´ı standardn´ım rozhran´ım JTAG, mohou b´yt programov´any speci´aln´ı sadou instrukc´ı [11]. Vyˇzadov´any jsou sign´aly TCK, TMS, TDI, TDO a standardn´ı nap´ajec´ı napˇet´ı. Kromˇe programov´an´ı pamˇeti programu flash, pamˇeti dat EEPROM a konfiguraˇcn´ıch fuse a lock bit˚u, umoˇznˇ uje rozhran´ı JTAG nav´ıc dalˇs´ı operace. Tˇemi jsou reset obvodu, pˇr´ıstup do registr˚u a veˇsker´ych typ˚u pamˇet´ı. Stejnˇe jako u s´eriov´eho programov´an´ı lze obvod programovat pˇr´ımo v zapojen´ı. Nev´yhoda spoˇc´ıv´a pˇredevˇs´ım v absenci rozhran´ı JTAG u nˇekter´ych starˇs´ıch typ˚u mikrokontrol´er˚u.
2.3.4 Rozhran´ı debugWIRE Nejnovˇejˇs´ı obvody disponuj´ı rozhran´ım debugWIRE“. Rozhran´ı prostˇrednictv´ım je” din´eho sign´alu pˇr´ıstupn´eho jako alternativn´ı funkce pinu RESET zprostˇredkov´av´a kompletn´ı ladic´ı funkce. K nim nav´ıc paˇr´ı i moˇznost z´apisu do pamˇeti programu i nonvolatiln´ı pamˇeti dat EEPROM. Mezi nev´yhody lze ˇradit hlavnˇe absenci u starˇs´ıch obvod˚u a nemoˇznost vyuˇzit´ı sign´alu pinu RESET k resetov´an´ı mikrokontrol´eru, coˇz znemoˇznˇ uje pˇripojen´ı extern´ıho monitoru nap´ajen´ı a obvodu WDT.
21
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
2.3.5 Bootloader Vˇetˇsina obvod˚u AVR podporuje funkci Self Program Memory“ (viz. pˇr´ıloha E), kter´a ” dovoluje z´apis pamˇeti programu flash pomoc´ı instrukce SPM [12] a maz´an´ı po str´ank´ach. T´eto funkce m˚uzˇ e b´yt s v´yhodou vyuˇzito pro zav´adˇec´ı program (tzv. bootloader “ [11], ” s jehoˇz pomoc´ı lze zajistit programov´an´ı pamˇeti programu flash v dan´em zapojen´ı pomoc´ı libovoln´eho rozhran´ı, jenˇz se v mikrokontrol´eru nach´az´ı (napˇr. UART, I2C). Vzhledem k softwarov´e implementaci komunikaˇcn´ıho protokolu a programovac´ıho algoritmu m˚uzˇ e zav´adˇec´ı program zahrnovat dalˇs´ı funkce jako napˇr´ıklad oˇsetˇren´ı stav˚u I/O linek bˇehem programov´an´ı, kontrolu neporuˇsenosti programu a ochranu pˇred neopr´avnˇen´ym pˇr´ıstupem (heslo, sˇifrov´an´ı pˇrenosu). K´od bootloaderu se nach´az´ı ve speci´aln´ı sekci na konci pamˇeti programu flash. Velikost sekce lze nastavit konfiguraˇcn´ımi fuse bity. Start bootloaderu m˚uzˇ e b´yt realizov´an jednak instrukc´ı skoku na pˇr´ısluˇsnou adresu, nebo dle konfigurace fuse bit˚u, vˇzdy po resetu obvodu pˇresmˇerov´an´ım vektoru nemaskovateln´eho pˇreruˇsen´ı RESET z adresy 0000hex na adresu bootloaderu. Nev´yhodami jsou nemoˇznost mˇenit hardwarovou konfiguraci mikrokontrol´eru (fuse bity), zmenˇsen´ı kapacity pamˇeti programu o k´od bootloaderu, nutnost poˇca´ teˇcn´ıho naprogramov´an´ı a konfigurace obvodu jednou z v´ysˇe uveden´ych metod programov´an´ı (paraleln´ı, s´eriov´e, JTAG, debugWire).
˚ 2.4 Rozbor moˇzn´ych zpusob u˚ rˇ eˇsen´ı 2.4.1 Bootloader Z rozboru kl´ıcˇ ov´ych vlastnost´ı embedded serveru NE-4100T a mikrokontrol´er˚u Atmel AVR vypl´yv´a na prvn´ı pohled jako nejvhodnˇejˇs´ı metoda pro implementaci vzd´alen´e spr´avy firmware vytvoˇren´ı vhodn´eho bootloaderu. Toto ˇreˇsen´ı ale nar´azˇ´ı na z´asadn´ı bezpeˇcnostn´ı probl´em spoˇc´ıvaj´ıc´ı v jeho spuˇstˇen´ı. Hardwarov´e ˇreˇsen´ı resetem mikrokontrol´eru s vyuˇzit´ım jednoho z uˇzivatelsk´ych vstup˚u-v´ystup˚u serveru NE-4100T se jev´ı nevhodn´e z d˚uvodu, zˇ e nen´ı moˇzn´e dostateˇcnˇe omezit pˇr´ıstup k ovl´ad´an´ı stavu toho v´ystupu, jak bylo uvedeno v odstavci 2.1.5. To
22
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
cˇ in´ı syst´em snadno napadnuteln´y, protoˇze jej lze trval´ym resetem mikrokontrol´eru jednoduˇse vyˇradit z provozu. Jedinou ochranou m˚uzˇ e b´yt pouze nastaven´ı povolen´ych IP adres, avˇsak z principu TCP/IP komunikace [8] se jedn´a o ˇreˇsen´ı znaˇcnˇe nedostaˇcuj´ıc´ı. Pˇri pouˇzit´ı s´ıt’ov´ych prvk˚u typu rozboˇcovaˇc (hub) cˇ i jednoduch´y pˇrep´ınaˇc (switch), m˚uzˇ e b´yt IP adresa snadno podvrhnuta. ˇ e softwarov´e ˇreˇsen´ı spuˇstˇen´ı bootloaderu m´a nˇekolik nev´yhod. Pro funkˇcnost by Cistˇ bylo nutn´e kdykoliv akceptovat pˇr´ıkazy pˇrij´ıman´e s´eriov´ym rozhran´ım, a to souˇcasnˇe pˇri zachov´an´ı cˇ innosti hlavn´ıho programu mikrokontrol´eru. Obdobn´a funkce lze realizovat jedinˇe pomoc´ı pˇreruˇsen´ı (za pˇredpokladu, zˇ e bootloader pracuje jako nadˇrazen´y syst´em nad hlavn´ım programem). Z toho vˇsak vyvst´avaj´ı dalˇs´ı probl´emy. S´eriov´e rozhran´ı m´a b´yt vyuˇz´ıv´ano hlavn´ım programem, a proto by bootloader musel b´yt integrov´an do hlavn´ıho programu. D´ale by vektory pˇreruˇsen´ı musely b´yt um´ıstˇeny v sekci bootloaderu (pˇresmˇerov´an´ı vektor˚u pˇreruˇsen´ı bitem IVSEL v registru MCUCR [11]), funkˇcnost d´alkov´e spr´avy by z´avisela na spr´avn´e konfiguraci s´eriov´eho kan´alu a pomocn´ych registr˚u, kter´e mohou b´yt hlavn´ım programem kdykoliv zmˇenˇeny. Ostatn´ı vektory pˇreruˇsen´ı by bylo nutn´e pˇresmˇerovat zpˇet na z´akladn´ı adresy, aby byla zachov´ana funkˇcnost hlavn´ıho programu. Zpracov´an´ı pˇrijat´ych pˇr´ıkaz˚u v pˇreruˇsen´ı s´eriov´eho kan´alu nav´ıc vykazuje nezanedbatelnou reˇzii, kter´a zatˇezˇ uje mikrokontrol´er a pˇri nespr´avn´em n´avrhu m˚uzˇ e zp˚usobit chybnou funkci hlavn´ıho programu. V neposledn´ı ˇradˇe je nutn´e zm´ınit, zˇ e jsou-li naprogramov´any ochrann´e lock bity sekce bootloaderu a souˇcasnˇe pˇresmˇerov´any vektory pˇreruˇsen´ı, dojde k zak´az´an´ı pˇreruˇsen´ı ve chv´ıli, kdy je vykon´av´an k´od hlavn´ıho programu [11].
2.4.2 SPI, JTAG, debugWIRE Protoˇze embedded server NE-4100T disponuje pouze asynchronn´ım s´eriov´ym rozhran´ım, vyˇzadovalo by pro programov´an´ı prostˇrednictv´ım rozhran´ı SPI, JTAG nebo debugWIRE pˇr´ıdavn´y pˇrevodn´ık. Konverzi UART/SPI nab´ız´ı napˇr´ıklad obvod MAX3100. Nev´yhodou je jednak zv´ysˇen´ı ceny cel´eho zaˇr´ızen´ı, ale pˇredevˇs´ım by nebylo moˇzn´e zajistit spr´avnou cˇ innost s´eriov´eho rozhran´ı v r´amci hlavn´ıho programu a takt´ezˇ dalˇs´ı funkce, napˇr´ıklad ochranu pˇred neopr´avnˇen´ym pˇr´ıstupem.
23
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Z uveden´ych d˚uvod˚u by ˇreˇsen´ı vyuˇz´ıvaj´ıc´ı server NE-4100T a rozhran´ı SPI, JTAG cˇ i debugWIRE vyˇzadovalo doplnit obvod dalˇs´ım mikrokontrol´erem, kter´y by se staral o programovac´ı proces a jeho zabezpeˇcen´ı. Bohuˇzel, aby byla zachov´ana funkˇcnost s´eriov´eho rozhran´ı vzhledem k hlavn´ımu MCU, musel by b´yt sign´al pro vys´ıl´an´ı dat pˇrep´ın´an mezi hlavn´ım a pomocn´ym mikrokontrol´erem. To pˇrin´asˇ´ı probl´em s rozhodov´an´ım, kdy m´a b´yt sign´al pˇrepnut na pomocn´y MCU. Pˇrepnut´ı by bylo moˇzn´e pouze na z´akladˇe pasivn´ıho pˇr´ıjmu vyhrazen´e sekvence pro vstup do programovac´ıho reˇzimu. Z d˚uvodu zabezpeˇcen´ı by sekvence musela pˇredstavovat formu urˇcit´eho hesla (tj. velmi dlouh´a a u kaˇzd´eho zaˇr´ızen´ı nejl´epe unik´atn´ı), protoˇze po vstupu do programovac´ıho reˇzimu by doˇslo nutnˇe odpojen´ı vys´ılac´ıho sign´alu od c´ılov´eho zaˇr´ızen´ı, coˇz by mohlo b´yt opˇet zneuˇzito k omezen´ı funkˇcnosti. Dalˇs´ı nev´yhodou je pˇredevˇs´ım nutnost naprogramovat pomocn´y mikrokontrol´er.
2.4.3 Jin´y server neˇz NE-4100T Jako dalˇs´ı moˇznost pˇripad´a v u´ vahu zmˇena embedded serveru na typ, kter´y splˇnuje poˇzadavky na zabezpeˇcen´ı pˇr´ıstupu k I/O link´am, coˇz by umoˇznˇ ovalo hardwarov´e resetov´an´ı mikrokontrol´eru, a t´ım implementaci bootloaderu se splnˇen´ım poˇzadavk˚u na zabezpeˇcen´ı. Z nalezen´ych dostupn´ych produkt˚u (napˇr. EM1000 a EM1202 [4], EZL-50M [5], XT-Nano-XXL [6], FMod-TCP DB [7]) vˇsak zˇ a´ dn´y neuspokojuje toto krit´erium, protoˇze funkce jsou obdobn´e jako u NE-4100T. Nejv´yhodnˇejˇs´ı by bylo vytvoˇrit server na m´ıru potˇrebn´ym poˇzadavk˚um. Toto ˇreˇsen´ı je vˇsak znaˇcnˇe n´aroˇcnˇejˇs´ı. Z d˚uvodu zahlcen´ı serveru DoS u´ toky nelze vyuˇz´ıt softwarov´e ˇreˇsen´ı TCP/IP stacku, coˇz klade vyˇssˇ´ı n´aroky na hardware. Hardwarov´e ˇreˇsen´ı MAC vrstvy a TCP/IP stacku implementuje napˇr´ıklad obvod W3150A [13], kter´y nen´ı dostupn´y v kusov´em mnoˇzstv´ı.
24
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
ˇ sen´ı 3 Reˇ Anal´yzou vlastnost´ı mikrokontrol´er˚u Atmel AVR a embedded serveru NE-4100T v prvn´ı cˇ a´ sti pr´ace bylo zjiˇstˇeno, zˇ e s NE-4100T nelze uspokojivˇe splnit poˇzadavky na zabezpeˇcen´ı syst´emu. Adekv´atn´ıho ˇreˇsen´ı nelze dos´ahnout jak ve variantˇe s bootloaderem, tak pˇri vyuˇzit´ı rozhran´ı JTAG, SPI cˇ i debugWIRE a pˇr´ıdavn´eho mikrokontrol´eru. Protoˇze nebyla nalezena vhodn´a n´ahrada za NE-4100T, kter´a by ˇreˇsila dan´e probl´emy, pˇripad´a v u´ vahu jako plnohodnotn´e ˇreˇsen´ı pouze konstrukce vlastn´ıho serveru s patˇriˇcn´ymi vlastnostmi. Po dohodˇe s vedouc´ım pr´ace byla zvolena varianta bootloaderu, protoˇze se jedn´a o ˇreˇsen´ı, kter´e nevyˇzaduje dodateˇcn´y hardware a nev´yhody jsou obdobn´e jako u ostatn´ıch znaˇcnˇe sloˇzitˇejˇs´ıch variant. Zabezpeˇcen´ı pak bude realizov´ano na u´ rovni aktivn´ıch prvk˚u s´ıtˇe Ethernet a protokol˚u TCP/IP mimo r´amec t´eto pr´ace. V t´eto cˇ a´ sti budou stanoveny funkce bootloaderu a podrobnˇe rozebr´any vlastnosti modulu CPU unit se zamˇeˇren´ım na vlastnosti, kter´e je nezbytn´e zohlednit pˇri n´avrhu. N´aslednˇe budou pops´any principy cˇ innosti bootloaderu u mikrokontrol´er˚u Atmel AVR a na z´akladˇe tˇechto poznatk˚u bude stanoven komunikaˇcn´ı protokol, softwarov´e vybaven´ı mikrokontrol´eru a nakonec uˇzivatelsk´a aplikace pro PC.
3.1 Funkce bootloaderu Pro koneˇcn´e ˇreˇsen´ı bylo rozhodnuto vybavit bootloader n´asleduj´ıc´ımi funkcemi: • Z´apis uˇzivatelsk´e aplikace • Maz´an´ı uˇzivatelsk´e aplikace ˇ ı konfiguraˇcn´ıch byt˚u MCU • Cten´ ˇ ı podpisu MCU • Cten´ • Z´apis konfiguraˇcn´ıch bit˚u pamˇeti programu • Ovˇeˇren´ı integrity strojov´eho k´odu uˇzivatelsk´e aplikace • Podpora intern´ıho a extern´ıho watchdog cˇ asovaˇce Z´apis a maz´an´ı patˇr´ı mezi nezbytn´e funkce, protoˇze jsou podstatou cel´e aplikace. ˇ ı konfiguraˇcn´ıch byt˚u a podpisu MCU m˚uzˇ e na d´alku poskytnout cenn´e informace Cten´
25
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
o vzd´alen´em syst´emu, a tak ovˇeˇrit spr´avnou konfiguraci. Dalˇs´ı funkce si kladou za c´ıl zv´ysˇen´ı funkˇcn´ı bezpeˇcnosti. Z´apis konfiguraˇcn´ıch bit˚u pamˇeti programu d´av´a moˇznost uzamknout uˇzivatelskou aplikaci a chr´anit ji tak pˇred pˇreps´an´ım, vymaz´an´ım a pˇr´ıpadnˇe vyˇcten´ım. Ovˇeˇren´ı integrity strojov´eho k´odu uˇzivatelsk´e aplikace d´av´a jednak informaci o spr´avn´em zaps´an´ı a tak´e dovoluje identifikovat poˇskozen´ı obsahu pamˇeti programu a zabr´anit spuˇstˇen´ı poˇskozen´eho k´odu. Bˇeh takov´eho k´odu by mohl zp˚usobit nedefinovan´e chov´an´ı syst´emu, cˇ emuˇz se mus´ı nutnˇe zamezit. Jelikoˇz je bootloader softwarovou z´aleˇzitost´ı, je podpora watchdog cˇ asovaˇce nezbytnou souˇca´ st´ı bootloaderu dovoluj´ıc´ı jeho spr´avnou cˇ innost v aplikac´ıch, kter´e jsou WDT vybaveny.
3.2 Poˇzadovan´y hardware Ve fin´aln´ı verzi m´a b´yt u´ loha vzd´alen´e spr´avy firmware v mikrokontrol´eru Atmel AVR ˇreˇsena pro modul CPU unit, jehoˇz u´ pln´e sch´ema zapojen´ı se nach´az´ı v pˇr´ıloze A, a embedded server NE-4100T ve funkci ethernetov´eho rozhran´ı.
3.2.1 CPU unit Deska je osazena mikrokontrol´erem ATmega644 [11] doplnˇen´ym o podp˚urn´e obvody. Tˇemi jsou monitor nap´ajen´ı kombinovan´y s watchdog cˇ asovaˇcem typu MB3773 [14] a line´arn´ı stabiliz´ator napˇet´ı LP2950CZ-3.3 [15] jako napˇet’ov´a reference pro AD pˇrevodn´ık integrovan´y v mikrokontrol´eru. Na desce se d´ale nach´az´ı konektor JTAG rozhran´ı pro pˇripojen´ı program´atoru, kter´y slouˇz´ı k zaveden´ı bootloaderu a poˇca´ teˇcn´ı konfiguraci MCU. S dalˇs´ımi obvody spojuj´ı desku dva konektory po dvaceti pinech v uspoˇra´ d´an´ı DIL. Zde jsou vyvedeny vˇsechny vstupnˇe-v´ystupn´ı porty MCU, sign´aly RESET a E RESET , napˇet’ov´a reference AD pˇrevodn´ıku a vstup nap´ajec´ıho napˇet´ı. Taktov´an´ı mikrokontrol´eru zajiˇst’uje extern´ı krystal s frekvenc´ı 18,432 MHz, na coˇz je nutn´e br´at ohled pˇri n´avrhu bootloaderu z hlediska cˇ asovan´ych operac´ı.
26
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Modul pracuje se stejnosmˇern´ym stabilizovan´ym napˇet´ım 5 V, kter´e se pˇri hodinov´em kmitoˇctu nad 10 MHz mus´ı pohybovat v povolen´em pracovn´ım rozsahu 4,5 aˇz 5,5 V [11]. N´aroky modulu na odbˇer proudu ud´av´a pˇredevˇs´ım MCU. Pˇredpokl´ad´ame-li maxim´aln´ı povolen´e proudov´e zat´ızˇ en´ı vstupnˇe-v´ystupn´ıch port˚u, nab´yv´a maxim´aln´ı odbˇer MCU 200 mA. Monitor nap´ajen´ı MB3773 m´a deklarov´an pracovn´ı proud menˇs´ı neˇz 1 mA pˇri aktivn´ım watchdog timeru [14] a uvaˇzujeme-li minim´aln´ı zat´ızˇ en´ı referenˇcn´ıho zdroje pro AD pˇrevodn´ık (v ˇra´ du jednotek mA), mus´ıme poˇc´ıtat s maxim´aln´ım odbˇerem modulu 210 mA.
3.2.2 Monitor nap´ajen´ı a watchdog timer Integrovan´y obvod MB3773 m´a za u´ kol detekovat spr´avnou u´ roveˇn nap´ajec´ıho napˇet´ı a generovat resetovac´ı sign´al o deklarovan´ych parametrech. C´ılem je zabezpeˇcen´ı poˇzadovan´e cˇ innosti mikrokontrol´eru jednak ve f´azi zapnut´ı nap´ajen´ı, kdy doch´az´ı k n´abˇehu nap´ajec´ıho napˇet´ı na poˇzadovanou u´ roveˇn, a jednak v pr˚ubˇehu cˇ innosti, kdy m˚uzˇ e v´ypadek zp˚usobit pokles napˇet´ı pod potˇrebnou u´ roveˇn. V takov´ych pˇr´ıpadech je nutn´e drˇzet vstup RESET MCU v log. u´ rovni 0, aby nedoˇslo k chybn´emu bˇehu programu, coˇz by mohlo zapˇr´ıcˇ init nespr´avnou cˇ innost zaˇr´ızen´ı. Druhou cˇ a´ st´ı cˇ innosti obvodu je watchdog cˇ asovaˇc, kter´y zabezpeˇcuje reset MCU v pˇr´ıpadˇe, zˇ e dojde zastaven´ı bˇehu programu. Pˇr´ıkladem m˚uzˇ e b´yt napˇr´ıklad uv´aznut´ı v nekoneˇcn´e smyˇcce vlivem sˇpatn´eho n´avrhu software, cˇ i hardwarovou chybou. Na obr´azku 3.1 se nach´az´ı z´akladn´ı zapojen´ı monitoru napˇet´ı MB3773. Vstupem je monitorovan´e nap´ajec´ı napˇet´ı, kter´e mus´ı b´yt shodn´e resetovan´ym obvodem, a sign´al pro nulov´an´ı watchdog timeru CK. Vstup CK reaguje na sestupnou hranu sign´alu. V´ystupy jsou pˇr´ım´y a negovan´y resetovac´ı sign´al pro hl´ıdan´y obvod.
Obr´azek 3.1: Z´akladn´ı zapojen´ı MB3773 [14]
27
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Grafy na obr´azku 3.2 definuj´ı cˇ asov´e pr˚ubˇehy monitoru napˇet´ı a watchdog cˇ asovaˇce. D´elky jednotliv´ych cˇ asov´ych u´ sek˚u z´avis´ı na velikosti kapacity kondenz´atoru CT , kter´y spolu s intern´ım zdrojem proudu tvoˇr´ı gener´ator line´arnˇe nar˚ustaj´ıc´ıho napˇet´ı. Od jeho velikosti jsou pak odvozeny patˇriˇcn´e cˇ asov´e intervaly. Tˇemi jsou TPR , TW D a TW R . Interval TPR ud´av´a dobu, po kterou je drˇzen hl´ıdan´y obvod ve stavu reset po t´e, co se nap´ajec´ı napˇet´ı ust´alilo na poˇzadovan´e u´ rovni. K tomuto stavu doch´az´ı po zapnut´ı nap´ajen´ı, cˇ i poklesu v pr˚ubˇehu cˇ innosti. ˇ ˇ se mˇeˇr´ı od sestupn´e Casov´ y u´ sek TW D definuje dobu vyprˇsen´ı watchdog cˇ asovaˇce. Cas hrany posledn´ıho nulovac´ıho impulzu na vstupu CK. V tomto intervalu je nutn´e cˇ asovaˇc nulovat, jinak dojde k resetov´an´ı hl´ıdan´eho zaˇr´ızen´ı. Interval TW R odpov´ıd´a dobˇe, po kterou je drˇzen reset v aktivn´ı u´ rovni, dojde-li k vyprˇsen´ı watchdog cˇ asovaˇce.
ˇ Obr´azek 3.2: Casov´ e pr˚ubˇehy MB3773 [14] Sign´al RESET , kter´y se nach´az´ı na propojovac´ım konektoru modulu, je pˇr´ımo spojen s pinem RESET mikrokontrol´eru. Ten ovl´ad´a monitor nap´ajen´ı MB3773. Jedn´a se tedy o v´ystup resetovac´ıho sign´alu, jehoˇz aktivn´ı u´ roveˇn odpov´ıd´a log. u´ rovni 0. Funkce vstupn´ıho sign´alu E RESET z´avis´ı na konfiguraci zkratovac´ı propojky JP2. Nen´ı-li zkratovac´ı propojka osazena, nem´a sign´al vliv. Je-li propojka v poloze 1-2, pˇriv´ad´ı se extern´ı resetovac´ı sign´al na vstup monitoru nap´ajen´ı, kter´y zajist´ı vygenerov´an´ı resetovac´ıho im-
28
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
pulzu o deklarovan´e d´elce. Propojka v poloze 2-3 zp˚usob´ı pˇremostˇen´ı resetovac´ıho obvodu, a tak je sign´al E RESET veden pˇr´ımo na vstup mikrokontrol´eru.
3.3 Rozbor funkc´ı a cˇ innosti bootloaderu Mikrokontrol´ery Atmel AVR disponuj´ı funkc´ı Read-While-Write Self-Programming, kter´a dovoluje za urˇcit´ych podm´ınek souˇcasnˇe vykon´avat k´od uloˇzen´y v pamˇeti programu flash a z´aroveˇn tuto pamˇet’ po jednotliv´ych str´ank´ach mazat a zapisovat nov´a data. Tato vlastnost umoˇznˇ uje vytvoˇrit speci´aln´ı cˇ a´ st programu, kter´a zajist´ı potˇrebn´e u´ kony k pˇr´ıjmu k´odu hlavn´ıho programu prostˇrednictv´ım jak´ychkoliv perif´eri´ı MCU a jeho zaps´an´ı do pamˇeti programu flash. T´ım vznikne program zvan´y bootloader , zajiˇst’uj´ıc´ı programov´an´ı mikrokontrol´eru v dan´em zapojen´ı bez nutnosti jeho vyjmut´ı, cˇ i pˇripojen´ı dodateˇcn´eho hardware. Pˇri vhodn´em n´avrhu m˚uzˇ e bootloader dokonce pˇrepsat s´am sebe novou verz´ı, nebo se u´ plnˇe vymazat z pamˇeti.
3.3.1 Pamˇet’ov´y prostor Prostor pamˇeti programu mikrokontrol´er˚u AVR s podporou funkce Read-While-Write Self-Programming se skl´ad´a z dvou cˇ a´ st´ı. Tˇemi jsou Read-While-Write (RWW) a No Read-While-Write (NRWW) sekce. Ty se od sebe liˇs´ı zp˚usobem cˇ innosti MCU v pˇr´ıpadˇe, zˇ e je programov´ana str´anka pamˇeti v r´amci tˇechto sekc´ı. Je-li prov´adˇen z´apis (maz´an´ı) str´anky v r´amci RWW oblasti, m˚uzˇ e mikroprocesor vykon´avat k´od programu uloˇzen´y v oblasti NRWW. Bˇehem z´apisu je vˇsak zak´az´ano cˇ´ıst cˇ i vykon´avat program z oblasti RWW, coˇz by mohlo v´est k nedefinovan´emu stavu mikroprocesoru. Z tohoto d˚uvodu se mus´ı zajistit blokov´an´ı pˇreruˇsen´ı v pr˚ubˇehu programov´an´ı, jsou-li pˇreruˇsen´ı mapov´ana do sekce RWW. Je-li vykon´av´ana operace z´apisu do sekce NRWW, dojde v jej´ım pr˚ubˇehu k pozastaven´ı cˇ innosti mikroprocesoru. Mapov´an´ı jednotliv´ych sekc´ı v pamˇeti ud´av´a obr´azek 3.3. Oblast RWW vˇzdy zaˇc´ın´a na adrese 0000hex , kde se tak´e nach´az´ı vektor pˇreruˇsen´ı RESET, vstupn´ı bod uˇzivatelsk´eho programu. Zaˇca´ tek a velikost sekce NRWW z´avis´ı na konkr´etn´ım MCU a z´aroveˇn odpov´ıd´a maxim´aln´ı velikosti bootloaderu. Konkr´etn´ı velikost sekce bootloaderu definuj´ı
29
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
30
bity BOOTSZ v r´amci konfiguraˇcn´ıho bytu fuses low [11]. Rozloˇzen´ı sekc´ı dle konfigurace uv´ad´ı tabulka 3.1. Zde je tak´e patrn´e, zˇ e k´od bootloaderu se mus´ı um´ıstit na spr´avn´e m´ısto v pamˇeti vzhledem ke konfiguraci bit˚u BOOTSZ.
Obr´azek 3.3: Rozdˇelen´ı pamˇeti Flash ATmega644 [11]
BOOTSZ
Boot
Pages
Size
Application
Boot
Loader
Section [words]
Section [words]
[words]
End
Ap-
Boot
plication
Reset
[words]
[words]
11
512
4
0000hex - 7DFFhex
7E00hex - 7FFFhex
07DFhex
7E00hex
10
1024
8
0000hex - 7BFFhex
7C00hex - 0FFFhex
7BFFhex
7C00hex
01
2048
16
0000hex - 77FFhex
7800hex - 7FFFhex
77FFhex
7800hex
00
4096
32
0000hex - 6FFFhex
7000hex - 7FFFhex
6FFFhex
7000hex
Tabulka 3.1: Konfigurace velikosti sekce bootloaderu u ATmega644 [11]
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
3.3.2 Konfiguraˇcn´ı bity pamˇeti programu Z d˚uvodu zv´ysˇen´ı spolehlivosti jsou mikrokontrol´ery Atmel AVR vybaveny syst´emem ochrany k´odu v pamˇeti programu flash. Pomoc´ı konfiguraˇcn´ıch bit˚u Boot Loader Lock Bits (tabulky 3.2, 3.3) lze nez´avisle na obou sekc´ıch pamˇeti nastavit tˇri stupnˇe zabezpeˇcen´ı, kter´e povoluj´ı nebo zakazuj´ı operace z´apisu a cˇ ten´ı nad tˇemito sekcemi. Aktivace ochran je moˇzn´a jakoukoliv metodou programov´an´ı vˇcetnˇe softwarov´e instrukc´ı SPM. Je-li zabezpeˇcen´ı nastaveno, lze jej deaktivovat pouze pˇr´ıkazem Chip Erase prostˇrednictv´ım rozhran´ı JTAG, paraleln´ım nebo s´eriov´ym program´atorem. T´ım souˇcasnˇe dojde k vymaz´an´ı veˇsker´eho obsahu pamˇeti programu flash. M˚uzˇ eme tak efektivnˇe ochr´anit sekci bootloaderu pˇred n´ahodn´ym poˇskozen´ım vlivem chybn´eho vykon´an´ı instrukce z´apisu SPM, coˇz by mohlo zp˚usobit nemoˇznost naˇcten´ı nov´e verze uˇzivatelsk´eho programu, a t´ım i nefunkˇcnost c´ılov´eho zaˇr´ızen´ı. Druhou moˇznost´ı je blokov´an´ı cˇ ten´ı sekce bootloaderu instrukc´ı (E)LPM vykon´avan´e ze sekce uˇzivatelsk´eho programu. T´ım lze zabr´anit pˇreˇcten´ı k´odu bootloaderu, a tak napˇr´ıklad prolomen´ı ochrann´ych prvk˚u jako je sˇifrov´an´ı. Stejnˇe tak aplikaˇcn´ı sekci lze chr´anit pˇred pˇreps´an´ım nebo cˇ ten´ım prostˇrednictv´ım bootloaderu. T´ım lze zamezit dalˇs´ım zmˇen´am uˇzivatelsk´eho programu, cˇ i jeho zpˇetn´e pˇreˇcten´ı. Pro aplikaˇcn´ı sekci nebude ve v´ychoz´ı konfiguraci nastaven zˇ a´ dn´y m´od ochrany, protoˇze bootloader mus´ı b´yt schopen v t´eto oblasti zapisovat i cˇ´ıst (z d˚uvodu verifikace). Pro bootloader sekci bude nastaven m´od 3, kde je zak´az´an z´apis i cˇ ten´ı bootloader sekce aplikac´ı. Z´akaz z´apisu zabr´an´ı n´ahodn´emu poˇskozen´ı bootloaderu a cˇ ten´ı nen´ı pro aplikaci potˇrebn´e.
3.3.3 Spuˇstˇen´ı bootloaderu Vzhledem k softwarov´e podstatˇe bootloaderu, mus´ı b´yt zajiˇstˇeno vykon´an´ı jeho k´odu v pˇr´ıpadˇe, zˇ e m´a b´yt zaps´an program do aplikaˇcn´ı sekce pamˇeti programu. Ve v´ychoz´ım nastaven´ı leˇz´ı vektor pˇreruˇsen´ı RESET, a tak vstupn´ı bod programu, na adrese 0000hex . Vstupn´ı bod bootloaderu se vˇsak nach´az´ı na adrese, kter´a z´avis´ı na nastaven´ı bit˚u
BOOTSZ dle tabulky 3.1.
31
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
M´od
BLB02
BLB01
Funkce
1
1
1
ˇ adn´a omezen´ı. Z´
2
1
0
Zak´az´an z´apis do aplikaˇcn´ı sekce.
3
0
0
Zak´az´an z´apis a cˇ ten´ı aplikaˇcn´ı sekce bootloaderem. Zak´az´ana pˇreruˇsen´ı, jsou-li vektory um´ıstˇeny v sekci bootloaderu a vykon´av´an k´od z aplikaˇcn´ı sekce.
4
0
1
Zak´az´ano cˇ ten´ı aplikaˇcn´ı sekce bootloaderem. Zak´az´ana pˇreruˇsen´ı, jsou-li vektory um´ıstˇeny v sekci bootloaderu a vykon´av´an k´od z aplikaˇcn´ı sekce.
Tabulka 3.2: Konfiguraˇcn´ı bity pamˇeti programu - aplikaˇcn´ı sekce [11]
M´od
BLB12
BLB11
Funkce
1
1
1
ˇ adn´a omezen´ı. Z´
2
1
0
Zak´az´an z´apis do sekce bootloaderu.
3
0
0
Zak´az´an z´apis. Zak´az´ano cˇ ten´ı bootloaderu z aplikaˇcn´ı sekce. Zak´az´ana pˇreruˇsen´ı, jsou-li vektory um´ıstˇeny v aplikaˇcn´ı sekci a vykon´av´an k´od bootloaderu.
0
1
Zak´az´ano cˇ ten´ı bootloaderu z aplikaˇcn´ı sekce. Zak´az´ana pˇreruˇsen´ı, jsou-li vektory um´ıstˇeny v aplikaˇcn´ı sekci a vykon´av´an k´od bootloaderu.
Tabulka 3.3: Konfiguraˇcn´ı bity pamˇeti programu - sekce bootloaderu [11]
32
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Toto chov´an´ı lze ovlivnit konfiguraˇcn´ım bitem BOOTRST. Je-li nastaven na hodnotu 1 (v´ychoz´ı nastaven´ı), leˇz´ı vektor pˇreruˇsen´ı RESET na adrese 0000hex . Je-li nastaven na hodnotu 0, dojde k pˇresmˇerov´an´ı pˇreruˇsen´ı RESET na adresu bootloaderu, a to v souladu s nastaven´ım bit˚u BOOTSZ. Pro u´ cˇ ely bootloaderu bude vyuˇzito pˇresmˇerov´an´ı vektoru pˇreruˇsen´ı RESET, cˇ´ımˇz se zajist´ı vˇzdy jako prvn´ı vykon´an´ı k´odu bootloaderu. Proto m˚uzˇ eme po startu MCU softwarovˇe rozhodnout, je-li splnˇena podm´ınka pro vstup do hlavn´ı cˇ a´ sti bootloaderu, nebo bude-li spuˇstˇen uˇzivatelsk´y program. Podm´ınku pro spuˇstˇen´ı bootloaderu lze v tomto projektu v z´asadˇe definovat dvˇema zp˚usoby. Jednak pˇr´ıkazem na u´ rovni komunikaˇcn´ıho protokolu na rozhran´ı Ethernet, nebo na z´akladˇe stavu DIO v´ystupu pˇrevodn´ıku NE-4100T. Vzhledem k cˇ asov´emu nedeterminismu komunikace prostˇrednictv´ım Ethernetu by muselo b´yt definov´ano cˇ asov´e okno, ve kter´em by program cˇ ekal na pˇrijet´ı pˇr´ıkazu, coˇz by mˇelo za n´asledek zpoˇzdˇen´ı startu uˇzivatelsk´eho programu v ˇra´ du jednotek sekund. Z tohoto d˚uvodu byla zvolena varianta vyuˇz´ıvaj´ıc´ı stavu DIO sign´alu. V´yhodou je vyhodnocen´ı v r´amci nˇekolika instrukc´ı, nev´yhodou pˇredevˇs´ım obsazen´ı jednoho vstupu MCU, kter´y bude propojen s pˇrevodn´ıkem NE-4100T.
3.3.4 Vektory pˇreruˇsen´ı Um´ıstˇen´ı vektor˚u pˇreruˇsen´ı z´avis´ı na hodnotˇe bitu IVSEL v konfiguraˇcn´ım registru
MCUCR. Vektory pˇreruˇsen´ı lze tedy pˇresmˇerovat z aplikaˇcn´ı sekce do sekce bootloaderu, kter´a je dostupn´a i v pr˚ubˇehu vykon´av´an´ı operace SPM na aplikaˇcn´ı sekci. Tato vlastnost dovoluje n´avrh bootloaderu s vyuˇzit´ım pˇreruˇsen´ı. V pˇr´ıpadˇe, zˇ e jsou vektory pˇreruˇsen´ı um´ıstˇeny v aplikaˇcn´ı sekci, je nezbytn´e bˇehem operace SPM veˇsker´a pˇreruˇsen´ı zak´azat. V opaˇcn´em pˇr´ıpadˇe by mohlo doj´ıt k nedefinovan´emu stavu MCU v d˚usledku o cˇ ten´ı k´odu pˇreruˇsen´ı z aplikaˇcn´ı sekce. IVSEL
Adresa vektoru˚ pˇreruˇsen´ı
0
0002hex
1
Adresa poˇca´ tku bootloaderu (tabulka 3.1) + 0002hex
Tabulka 3.4: Konfigurace um´ıstˇen´ı vektor˚u pˇreruˇsen´ı [11]
33
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
3.3.5 Instrukce SPM, registr SPMCSR Instrukce SPM zprostˇredkov´av´a veˇsker´e operace s u´ pravami obsahu pamˇeti programu. Tˇemi jsou maz´an´ı str´anky pamˇeti, z´apis str´anky pamˇeti a nastaven´ı konfiguraˇcn´ıch bit˚u pamˇeti programu. Pˇri vhodn´em nastaven´ı registru SPMCSR je nav´ıc moˇzn´e instrukc´ı
LPM cˇ ten´ı konfiguraˇcn´ıch byt˚u, identifikaˇcn´ıch byt˚u MCU a kalibraˇcn´ıho bytu RC oscil´atoru. Jej´ı chov´an´ı definuje osmibitov´y konfiguraˇcn´ı a stavov´y registr SPMCSR, obsah sˇestn´actibitov´eho adresovac´ıho registru Z a datov´ych registr˚u R0 a R1. V pr˚ubˇehu maz´an´ı cˇ i z´apisu str´anky pamˇeti programu prob´ıh´a adresov´an´ı dle obr´azku 3.4. Adresn´ı registr Z se fyzicky skl´ad´a ze dvou osmibitov´ych registr˚u R30 a R31. Pˇri adresov´an´ı jej lze v z´asadˇe rozdˇelit na dvˇe cˇ a´ sti. Horn´ı bity ud´avaj´ı adresu programovan´e str´anky a spodn´ı bity adresu bytu uvnitˇr str´anky. Poˇcet bit˚u pˇripadaj´ıc´ıch na adresu bytu uvnitˇr str´anky z´avis´ı na jej´ı velikosti dle konkr´etn´ıho MCU, stejnˇe tak poˇcet bit˚u adresy str´anky vypl´yv´a z velikosti pamˇeti programu. Datov´e registry R0 a R1 jsou vyuˇz´ıv´any pˇri plnˇen´ı str´anky nov´ymi daty, kde reprezentuj´ı jedno slovo. Registr R0 d´ale definuje hodnoty pˇri nastavov´an´ı konfiguraˇcn´ıch bit˚u a obsahuje v´ysledek pˇri cˇ ten´ı.
Obr´azek 3.4: Adresov´an´ı instrukce SPM [11] ˇ ˇ e intervaly nez´avis´ı na Casov´ an´ı instrukce SPM pˇri z´apisu ud´av´a tabulka 3.5. Casov´ frekvenci hodinov´eho kmitoˇctu MCU, jelikoˇz cˇ asov´an´ı z´apisu vych´az´ı z frekvence in-
34
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
35
tern´ıho RC oscil´atoru. V jeden cˇ as m˚uzˇ e b´yt aktivn´ı pouze jedna operace SPM, a proto je nezbytn´e dodrˇzet tento cˇ asov´y interval, aby nedoˇslo k poˇskozen´ı obsahu pamˇeti. K indikaci ukonˇcen´ı operace instrukce SPM slouˇz´ı bit SPMEN v registru SPMCSR. Ten pˇri hodnotˇe log. 1 inicializuje operaci a vrac´ı se do log. 0 aˇz po jej´ım dokonˇcen´ı. Kontrolou stavu bitu SPMEN tak lze minimalizovat dobu cˇ ek´an´ı na dokonˇcen´ı operace, a t´ım dos´ahnout co nejvyˇssˇ´ı rychlosti z´apisu. S bitem SPMEN m´a n´avaznost pˇreruˇsen´ı instrukce SPM. Ke generov´an´ı tohoto pˇreruˇsen´ı doch´az´ı je-li bit SPMEN v log. u´ rovni 0, coˇz indikuje dokonˇcen´ı operace SPM. Pˇreruˇsen´ı je maskov´ano bitem SPMIE. D´ale mus´ı b´yt br´ano v u´ vahu, kde leˇz´ı vektory pˇreruˇsen´ı (odstavec 3.3.4), protoˇze z´apisem nebo maz´an´ım str´anky dojde k zablokov´an´ı cˇ ten´ı z aplikaˇcn´ı sekce. Operace Maz´an´ı str´anky, z´apis str´anky, nastaven´ı (z´apis) konfiguraˇcn´ıch bit˚u
Min. cˇ as [ms]
Max. cˇ as [ms]
3,7
4,5
ˇ an´ı z´apisu instrukc´ı SPM [11] Tabulka 3.5: Casov´
3.3.6 Maz´an´ı str´anky pamˇeti programu Vymaz´an´ı str´anky pamˇeti dan´e adresou v registru Z se zajist´ı vol´an´ım instrukce SPM, pˇri registru SPMCSR s nastaven´ymi bity SPMEN (Store Program Memory Enable), PGERS (Page Erase) a volitelnˇe bitem SPMIE (SPM Interrupt Enable) v pˇr´ıpadˇe vyuˇzit´ı pˇreruˇsen´ı. Adresa v registru Z ud´av´a adresu str´anky, a tak maj´ı vliv pouze bity PCPAGE (obr´azek 3.4). V´yvojov´y diagram t´eto operace se nach´az´ı na obr´azku 3.5(b). Po u´ spˇesˇn´em proveden´ı jsou jednotliv´a slova vymazan´e str´anky nastavena na hodnotu FFFFhex . Dobu trv´an´ı operace maz´an´ı uv´ad´ı tabulka 3.5, pˇriˇcemˇz pˇri maz´an´ı v´ıce str´anek se mus´ı cˇ ekat na dokonˇcen´ı aktu´alnˇe prov´adˇen´e operace pˇred zapoˇcet´ım dalˇs´ı, jak je uvedeno v odstavci 3.3.5. Bˇehem maz´an´ı nedojde k naruˇsen´ı obsahu doˇcasn´eho bufferu pro z´apis str´anky, coˇz je d˚uleˇzit´e, je-li poˇzadov´ana zmˇena pouze urˇcit´e cˇ a´ sti str´anky. V takov´em pˇr´ıpadˇe se nejdˇr´ıve naˇcte jej´ı obsah do doˇcasn´eho bufferu, provede se instrukce maz´an´ı a modifikovan´a data se zap´ısˇ´ı zpˇet instrukc´ı z´apisu.
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
3.3.7 Z´apis str´anky pamˇeti programu Operace z´apisu str´anky se skl´ad´a ze dvou krok˚u. Data pro z´apis mus´ı b´yt nejdˇr´ıve naˇctena prostˇrednictv´ım instrukce SPM do intern´ıho bufferu, jehoˇz velikost odpov´ıd´a velikosti str´anky. V druh´e f´azi se instrukc´ı SPM inicializuje vlastn´ı z´apis dat. Postup popisuje v´yvojov´y diagram na obr´azku 3.5(a). Jako prvn´ı krok se nakonfiguruje instrukce SPM pro plnˇen´ı intern´ıho bufferu, a to z´apisem hodnoty, kter´a odpov´ıd´a nastaven´emu bitu SPMEN, do registru SPMCSR. Adresovac´ı registr Z se napln´ı adresou slova uvnitˇr str´anky, pˇriˇcemˇz vliv maj´ı pouze bity
PCWORD (obr´azek 3.4), a do registr˚u R0 a R1 se um´ıst´ı poˇzadovan´e datov´e slovo. N´asledn´ym vol´an´ım instrukce SPM dojde k pˇrenesen´ı obsahu registr˚u R0 a R1 do doˇcasn´eho bufferu, kter´y je obrazem zapisovan´e str´anky. T´ımto postupem lze naplnit cel´y buffer, nebo jen jeho cˇ a´ st. Neinicializovan´e cˇ a´ sti odpov´ıdaj´ı vymazan´ym oblastem pamˇeti flash a maj´ı hodnotu FFFFhex . Naplnˇen´y doˇcasn´y buffer m˚uzˇ eme zapsat do pamˇeti programu opˇet instrukc´ı SPM, a to pˇri hodnotˇe konfiguraˇcn´ıho registru SPMCSR s nastaven´ymi bity SPMEN, PGWRT (Page Write) a volitelnˇe SPMIE. Adresa str´anky, do kter´e m´a b´yt obsah bufferu zaps´an, v takov´em pˇr´ıpadˇe odpov´ıd´a hodnotˇe uloˇzen´e v registru Z. Vliv maj´ı pouze bity PCPAGE (obr´azek 3.4), ostatn´ı bity (adresa uvnitˇr str´anky) mus´ı b´yt nastaveny na hodnotu nula. ˇ Casov´ an´ı z´apisu je obdobn´e jako u operace maz´an´ı. Rozbor zp˚usob˚u detekce ukonˇcen´ı byl proveden v odstavci 3.3.5 a je nutn´e jej dodrˇzet. Spolu s dokonˇcen´ım z´apisu dojde nav´ıc k vymaz´an´ı obsahu doˇcasn´eho bufferu, a proto nen´ı moˇzn´e jej opakovanˇe zapsat do v´ıce str´anek.
3.3.8 Z´apis konfiguraˇcn´ıch bitu˚ pamˇeti programu V´yvojov´y diagram operace je na obr´azku 3.5(c). K z´apisu konfiguraˇcn´ıch bit˚u instrukc´ı
SPM dojde pˇri hodnotˇe registru SPMCSR s nastaven´ymi bity SPMEN, BLBSET (Boot Lock Bit Set) a adrese 0001hex v registru Z. Dle poˇzadavk˚u aplikace m˚uzˇ e b´yt nastaven i bit SPMIE. Zapisovan´a data odpov´ıdaj´ı hodnotˇe registru R0, jehoˇz mapov´an´ı na konfiguraˇcn´ı bity ud´av´a tabulka 3.7. Dokonˇcen´ı operace je indikov´ano stejnˇe jako u z´apisu cˇ i maz´an´ı str´anky pamˇeti.
36
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
ˇ ı konfiguraˇcn´ıch byt˚u (a) Cten´
ˇ ı podpisu MCU (b) Cten´
(c) Z´apis konfiguraˇcn´ıch bit˚u pamˇeti programu
Obr´azek 3.5: V´yvojov´e diagramy uˇzit´ı instrukce SPM
37
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
3.3.9
38
ˇ Cten´ ı konfiguraˇcn´ıch bytu˚
ˇ ı konfiguraˇcn´ıch byt˚u prob´ıh´a prostˇrednictv´ım instrukce LPM (Load Program MeCten´ mory) s nastaven´ymi bity SPMEN a BLBSET. Adresa v registru Z dle tabulky 3.6 pak definuje, jak´a hodnota bude naˇctena. V´ysledek je uloˇzen do registru v souladu s parametry instrukce LPM [12]. Mapov´an´ı jednotliv´ych bit˚u do c´ılov´eho registru ud´av´a tabulka 3.7. Registr Z
Funkce Fuse Low
0000hex
Lock
0001hex
Extended Fuse
0002hex
Fuse High
0003hex
Tabulka 3.6: Hodnoty registru Z pro cˇ ten´ı konfiguraˇcn´ıch byt˚u [11]
Bit Rx:
7
6
5
4
3
2
1
0
Lock
1
1
BLB12
BLB11
BLB02
BLB01
LB2
LB1
Fuse Low
FLB7
FLB6
FLB5
FLB4
FLB3
FLB2
FLB1
FLB0
Fuse High
FHB7
FHB6
FHB5
FHB4
FHB3
FHB2
FHB1
FHB0
Extended Fuse
EFB7
EFB6
EFB5
EFB4
EFB3
EFB2
EFB1
EFB0
Tabulka 3.7: Mapov´an´ı konfiguraˇcn´ıch bit˚u do registru [11]
3.3.10
ˇ Cten´ ı podpisu MCU a kalibrace RC oscil´atoru
ˇ ı podpisu mikrokontrol´eru a kalibraˇcn´ıho bytu RC oscil´atoru je obdobn´e s bodem Cten´ 3.3.9 s t´ım rozd´ılem, zˇ e registru SPMCSR mus´ı b´yt nastaveny bity SPMEN a SIGRD (Signature Row Read). Adresy dostupn´ych u´ daj˚u pak ud´av´a tabulka 3.8.
3.4 Hardware Z hlediska vybran´e varianty ˇreˇsen´ı prostˇrednictv´ım bootloaderu se hardwarov´a cˇ a´ st redukuje na nap´ajec´ı zdroj a obvody zajiˇst’uj´ıc´ı propojen´ı embedded serveru NE-4100T s modulem CPU unit. Jako dodateˇcn´y poˇzadavek bylo poˇzadov´ano doplnˇen´ı zapojen´ı o hodiny
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Funkce
Registr Z
Signature Byte 1
0000hex
RC Oscilator Calibration Byte
0001hex
Signature Byte 2
0002hex
Signature Byte 3
0004hex
Tabulka 3.8: Hodnoty registru Z pro cˇ ten´ı podpisu MCU a kalibrace RC oscil´atoru [11] re´aln´eho cˇ asu. Cel´e zapojen´ı tak popisuje blokov´e sch´ema na obr´azku 3.6.
Obr´azek 3.6: Blokov´e sch´ema zapojen´ı modulu BOOT unit Mezi poˇzadavky je nav´ıc snaha o co nejvˇetˇs´ı rozsah pracovn´ıch teplot. Pokud moˇzno m´a b´yt dosaˇzeno pr˚umyslov´ych poˇzadavk˚u od −40 do 85 ◦ C, coˇz se prom´ıtne na volbˇe pouˇzit´ych souˇca´ stek. Nap´ajec´ı zdroj tvoˇren´y pulzn´ım sniˇzuj´ıc´ım mˇeniˇcem vytv´aˇr´ı napˇet´ı 5 V a nap´aj´ı server NE-4100T, modul CPU unit i obvod hodin re´aln´eho cˇ asu. Nap´ajen´ı je d´ale vyvedeno na konektor modulu BOOT unit. Tomu mus´ı odpov´ıdat proudov´e dimenzov´an´ı zdroje. Embedded server NE-4100T a modul CPU unit propojuj´ı sign´aly RxD, TxD s´eriov´eho rozhran´ı pro pˇrenos dat. Ty jsou sd´ılen´e pro uˇzivatelskou aplikaci a bootloader. Pro u´ cˇ ely bootloaderu d´ale slouˇz´ı sign´aly E RESET , BOOT a ERROR. Pro komunikaci s obvodem hodin re´aln´eho cˇ asu byla zvolena sbˇernice I2C. D˚uvodem je pˇredevˇs´ım hardwarov´a podpora na stranˇe mikrokontrol´er˚u AVR a o proti SPI niˇzsˇ´ı poˇcet vodiˇcu˚ , kter´y potˇrebujeme k propojen´ı. Mezi v´yhody I2C patˇr´ı i moˇznost multimaster
39
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
konfigurace, a tak m˚uzˇ e b´yt obvod jednoduˇse sd´ılen dalˇs´ımi zaˇr´ızen´ımi typu master na sbˇernici. K propojen´ı modulu BOOT unit s okol´ım slouˇz´ı sign´aly vyveden´e na vstupnˇe v´ystupn´ı konektory. Mezi nˇe patˇr´ı vstup stejnosmˇern´eho nap´ajec´ıho napˇet´ı, rozhran´ı Ethernet a veˇsker´e sign´aly modulu CPU unit v nezmˇenˇen´e podobˇe.
3.4.1 Zmˇeny modulu CPU unit Oproti p˚uvodn´ı verzi modulu CPU unit musela b´yt provedena jedna zmˇena v zapojen´ı. V p˚uvodn´ım n´avrhu byl sign´al pro resetov´an´ı extern´ıho watchdog cˇ asovaˇce propojen na sign´al PD0 mikrokontrol´eru. Sign´al PD0 vˇsak z´aroveˇn sdruˇzuje funkci vstupu pˇrij´ımaˇce rozhran´ı UART, kter´y je potˇrebn´y ke komunikaci. Poˇc´ıtat s resetov´an´ım WDT prostˇrednictv´ım komunikace na s´eriov´e lince nen´ı moˇzn´e, protoˇze nelze zajistit neust´al´y tok dat. A to pˇredevˇs´ım z d˚uvodu komunikace protokolem TCP, kdy vlivem intern´ıch buffer˚u m˚uzˇ e doj´ıt ke znaˇcn´e cˇ asov´e prodlevˇe v pˇr´ıpadˇe opakovan´eho pˇrenosu pˇri vzniku chyby. Z tˇechto d˚uvod˚u byl resetovac´ı sign´al WDT pˇrepojen na pin mikrokontrol´eru PD2.
3.4.2 Propojen´ı NE-4100T a modulu CPU unit Vstupnˇe-v´ystupn´ı sign´aly serveru NE-4100T disponuj´ı logick´ymi u´ rovnˇemi TTL, kter´e spadaj´ı do odpov´ıdaj´ıc´ıch rozsah˚u logick´ych u´ rovn´ı mikrokontrol´eru ATmega644. Dle doporuˇcen´eho zapojen´ı [16] jsou datov´e sign´aly RxD a TxD pˇr´ımo propojeny bez dalˇs´ıch dodateˇcn´ych obvod˚u, kter´e by upravovaly logick´e u´ rovnˇe, pouze s ohledem na smˇer toku dat. Sign´aly BOOT a ERROR byly doplnˇeny o zvedac´ı rezistory R1 a R2, kter´e definuj´ı logick´e u´ rovnˇe v pr˚ubˇehu resetu a inicializace. S´eriov´e rezistory R3 a R4 omezuj´ı maxim´aln´ı proud, a t´ım strmost hran. Hodnoty byly pˇrevzaty z doporuˇcen´eho zapojen´ı [16]. Ovl´ad´an´ı sign´alu E RESET poˇc´ıt´a s osazen´ım zkratovac´ı propojky JS1 na modulu CPU unit do pozice 1-2 (funkce pops´ana v odstavci 3.2.2). Zapojen´ı resetovac´ıho tlaˇc´ıtka a pˇr´ıpadnˇe dalˇs´ıch extern´ıch obvod˚u na sign´alu E RESET vyˇzaduje v´ystup typu otevˇren´y kolektor. Pˇri tvrd´e logick´e u´ rovni 1 by doˇslo pˇri stisku tlaˇc´ıtka ke konfliktu a proudov´emu
40
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
pˇret´ızˇ en´ı v´ystupu serveru NE-4100T. Jeho v´ystupy nedovoluj´ı konfiguraci typu otevˇren´y kolektor. Jistou moˇznost´ı by bylo pˇrep´ınat funkci pˇr´ısluˇsn´eho pinu mezi vstup (obdoba otevˇren´eho kolektoru) a v´ystup v logick´e u´ rovni 0, coˇz se ale nejev´ı jako ide´aln´ı ˇreˇsen´ı. V´ystup byl proto doplnˇen o pomocn´y tranzistor T1, kter´y vytv´aˇr´ı poˇzadovan´y otevˇren´y kolektor.
Obr´azek 3.7: Ovl´ad´an´ı sign´alu E RESET Protoˇze pomocn´y obvod pracuje ve statick´em reˇzimu, je kladen d˚uraz pˇredevˇs´ım na n´ızkou spotˇrebu v ust´alen´ych stavech. Z tohoto d˚uvodu byl zvolen unipol´arn´ı tranzistor MOSFET s kan´alem N. Dalˇs´ım poˇzadovan´ym parametrem je n´ızk´e prahov´e napˇet´ı UGS . Dle tˇechto poˇzadavk˚u a dostupnosti byl vybr´an typ BSS138. Zapojen´ı pomocn´eho obvodu se nach´az´ı na obr´azku 3.7. Rezistor R6 definuje klidovou u´ roveˇn, rezistor R5 omezuje maxim´aln´ı proud hradlem pˇri pˇrechodov´ych jevech.
3.4.3 Hodiny re´aln´eho cˇ asu Z hlediska ceny a dostupnosti byl pro hodiny re´aln´eho cˇ asu vybr´an osvˇedˇcen´y obvod PCF8563 [17], jehoˇz blokov´e sch´ema se nach´az´ı na obr´azku 3.8. Disponuje sˇirok´ym rozsahem nap´ajec´ıho napˇet´ı 1,8 aˇz 5,5 V, coˇz vyhovuje nap´ajec´ımu napˇet´ı 5 V a z´alohovac´ımu napˇet´ı 3 V ze standardn´ı lithiov´e baterie. Pro z´alohov´an´ı z baterie je v´yhodou i n´ızk´a spotˇreba 0,25 µ A pˇri napˇet´ı 3 V. Spolehlivou funkci zaruˇcuj´ı monitorovac´ı a resetovac´ı obvody typu watchdog. Specifikace rozhran´ı sbˇernice I2C dovoluj´ı vyuˇzit´ı pln´e rychlosti pˇri taktovac´ım kmitoˇctu 400 kHz. Sedmibitov´a slave adresa zaˇr´ızen´ı je pevnˇe definov´ana na hodnotu 51hex . Poskytovan´e informace jsou rok, mˇes´ıc, den, den v t´ydnu, poˇcet hodin, minut, sekund ˇ z´akladnu tvoˇr´ı krysa stavov´y bit VL, kter´y potvrzuje validitu uveden´ych u´ daj˚u. Casovou talov´y oscil´ator s extern´ım krystalem o frekvenci 32768 Hz. Pˇr´ıdavn´e funkce jako v´ystup
41
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Obr´azek 3.8: Blokov´e zapojen´ı hodin re´aln´eho cˇ asu PCF8563 [17] referenˇcn´ıho kmitoˇctu, nebo programovateln´e pˇreruˇsen´ı nejsou v tomto zapojen´ı vyuˇzity. Sch´ema zapojen´ı bloku hodin re´aln´eho cˇ asu se nach´az´ı na obr´azku 3.9. Dvojit´a dioda D2 zajiˇst’uje z´alohov´an´ı chodu hodin pˇri vypnut´em nap´ajec´ım napˇet´ı z lithiov´e baterie typu CR2032 o jmenovit´em napˇet´ı 3 V s n´ızk´ym samovyb´ıjen´ım. U diody D2 je kladen d˚uraz pˇredevˇs´ım na n´ızk´y z´avˇern´y proud, kter´y zp˚usobuje vyb´ıjen´ı z´aloˇzn´ı baterie. Z tˇechto d˚uvod˚u byl zvolen typ BAV74 se z´avˇern´ym proudem 30 nA pˇri napˇet´ı 25 V a teplotˇe pˇrechodu 25 ◦ C [19]. Keramick´y kondenz´ator C9 s kapacitou 100 nF slouˇz´ı k blokov´an´ı nap´ajec´ıho napˇet´ı a mˇel by b´yt um´ıstˇen co nejbl´ızˇ k v´yvod˚um integrovan´eho obvodu IC3. Rezistory R9 a R10 jsou zvedac´ı odpory sbˇernice I2C. Protoˇze nen´ı pˇredem zn´amo vyuˇzit´ı modulu, poˇcet pˇripojen´ych zaˇr´ızen´ı na sbˇernici a ani jej´ı d´elka, nen´ı t´ım p´adem zn´ama kapacita sbˇernice. Vzhledem k modul´arn´ımu ˇreˇsen´ı se d´a pˇredpokl´adat, zˇ e kapacita bude relativnˇe vysok´a. Uvaˇzujeme-li pr˚umˇernou kapacitu 7 pF na zaˇr´ızen´ı (maxim´aln´ı kapacita deklarovan´a u PCF8563 je 7 pF [17], u ATmega644 10 pF [11]) a kapacitu sbˇernice
42
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
43
Obr´azek 3.9: Sch´ema zapojen´ı hodin re´aln´eho cˇ asu 10 pF vych´az´ı pro tˇri zaˇr´ızen´ı a frekvenci 400 kHz hodnota [18]: R9,10 =
tr 300 · 10−9 = ≈ 10 kΩ 0,8473 ·Cb 0,8473 · 34 · 10−12
(3.1)
Frekvenci integrovan´eho oscil´atoru Piercova typu ud´av´a krystal Q1 o frekvenci 32768 Hz doplnˇen´y o zatˇezˇ ovac´ı kapacitu C8. Dle poˇzadavk˚u na co nejvyˇssˇ´ı teplotn´ı rozsah byl vybr´an SMD krystal MC-306 [20] s teplotn´ım rozsahem −40 aˇz 85 ◦ C a zatˇezˇ ovac´ı kapacitou CL = 12,5 pF. Bohuˇzel se v tomto teplotn´ım rozsahu nepodaˇrilo naj´ıt jin´y dostupn´y krystal s niˇzsˇ´ı zatˇezˇ ovac´ı kapacitou, coˇz m´a za n´asledek vyˇssˇ´ı spotˇrebu [18]. Protoˇze nejsou kladeny zˇ a´ dn´e speci´aln´ı poˇzadavky na pˇresnost hodin re´aln´eho cˇ asu, byl kondenz´ator C8 zvolen jako pevn´y s kapacitou C8 = CL = 12,5 pF ≈ 12 pF a materi´alem NPO, cˇ´ımˇz za cenu menˇs´ı pˇresnosti odpad´a nutnost kalibrace. Ta by vyˇzadovala ruˇcn´ı nastaven´ı frekvence mˇeˇriteln´e na v´ystupn´ım pinu CLK na pˇresnou hodnotu.
3.4.4 Nap´ajec´ı zdroj Na nap´ajec´ı zdroj jsou kladeny vysok´e n´aroky pˇredevˇs´ım v ohledu rozsahu vstupn´ıho napˇet´ı a pracovn´ıch teplot. Poˇzadovan´y rozsah vstupn´ıch napˇet´ı odpov´ıd´a hodnot´am 6 aˇz 18 V. Teplotn´ı rozsah by mˇel splˇnovat pr˚umyslov´e poˇzadavky od −40 do 85 ◦ C. Jak bylo pops´ano v u´ vodu, mus´ıme u embedded serveru NE-4100T poˇc´ıtat s maxim´aln´ım proudem 290 mA a u modulu CPU unit s maxim´aln´ım odbˇerem 210 mA. T´ım dost´av´ame maxim´aln´ı proud dod´avan´y zdrojem 500 mA. Z tˇechto parametr˚u je patrn´e, zˇ e pˇri pouˇzit´ı line´arn´ıho regul´atoru bude velk´y probl´em s chlazen´ım. Pro nejhorˇs´ı variantu dost´av´ame v´ykonovou ztr´atu 6,5 W. Pro napˇet´ı 12 V ve stˇredu pracovn´ıho rozsahu a odhadovanou efektivn´ı hodnotu proudu 400 mA dost´av´ame ztr´atov´y v´ykon 2,8 W.
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
U varianty sniˇzuj´ıc´ıho mˇeniˇce vznik´a probl´em pˇredevˇs´ım s dodrˇzen´ım spodn´ı hranice nap´ajec´ıho napˇet´ı 6 V. U bˇezˇ nˇe dostupn´ych obvod˚u s v´ystupn´ım napˇet´ım 5 V b´yv´a minim´aln´ı vstupn´ı napˇet´ı 6,5 V. Vzhledem k poˇzadavku na pracovn´ı teplotn´ı rozsah byla zvolena varianta sniˇzuj´ıc´ıho mˇeniˇce. Line´arn´ı regul´ator by kladl velk´e n´aroky na rozmˇery chladiˇce a dosahoval by n´ızk´e u´ cˇ innosti. Na z´akladˇe tˇechto u´ daj˚u byl zvolen obvod LM2674-5.0 [21]. Jedn´a se o integrovan´y sniˇzuj´ıc´ı mˇeniˇc pracuj´ıc´ı s pevnou frekvenc´ı 260 kHz, rozsahem vstupn´ıho napˇet´ı 6,5 aˇz 40 V a garantovan´ym v´ystupn´ım proudem 500 mA. Pˇri vstupn´ım napˇet´ı 12 V dosahuje u´ cˇ innosti 90%. Na obr´azku 3.10 se nach´az´ı sch´ema zapojen´ı pouˇzit´eho sniˇzuj´ıc´ıho mˇeniˇce. Pˇri volbˇe hodnot souˇca´ stek je tˇreba zaˇc´ıt u indukˇcnosti c´ıvky L1. Ta je definov´ana maxim´aln´ım vstupn´ım napˇet´ım a maxim´aln´ım proudem. Z grafu ([21], figure 5) tak dost´av´ame hodnotu indukˇcnosti L1 68 µ H. Pro volbu konkr´etn´ıho typu c´ıvky je v z´ajmu u´ cˇ innosti poˇzadov´an co nejmenˇs´ı ohmick´y odpor vinut´ı. Z hlediska minimalizace elektromagnetick´eho ruˇsen´ı jsou pak vhodn´e typy s uzavˇren´ym magnetick´ym obvodem. Na z´akladˇe tˇechto poˇzadavk˚u byla vybr´ana c´ıvka MATSUTA SC75F-680 [22]. Dalˇs´ım krokem n´avrhu je volba kapacity v´ystupn´ıho kondenz´atoru C10. Pro indukˇcnost 68 µ H vych´az´ı dle tabulky ([21], figure 10) hodnota 100 µ F pro napˇet´ı 10 V. U kondenz´atoru se nav´ıc poˇzaduje mal´a vnitˇrn´ı indukˇcnost, a proto nevyhovuj´ı bˇezˇ n´e elektrolytick´e kondenz´atory a bude pouˇzit kondenz´ator tantalov´y.
Obr´azek 3.10: Sch´ema zapojen´ı nap´ajec´ıho zdroje V tˇret´ım kroku pˇrich´az´ı na ˇradu volba diody D1. Ta pˇreb´ır´a veden´ı proudu z´atˇezˇ´ı ve chv´ıli, kdy dojde k rozepnut´ı tranzistoru uvnitˇr integrovan´eho obvodu IC1. Indukˇcnost c´ıvky L1 se snaˇz´ı udrˇzet smˇer a velikost proudu z´atˇezˇ´ı. Jedinou moˇznost´ı je, zˇ e dojde ke zmˇenˇe polarity napˇet´ı na c´ıvce L1 a proud se uzavˇre pˇres diodu D1. Vzhledem
44
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
k pracovn´ı frekvenci 250 kHz mus´ı b´yt dioda rychl´a a z poˇzadavku na co nejmenˇs´ı ztr´aty (nejvyˇssˇ´ı u´ cˇ innost) vypl´yv´a co nejniˇzsˇ´ı napˇet´ı v propustn´em smˇeru. Tyto poˇzadavky vedou na Schottkyho diodu. Proudov´e dimenzov´an´ı dle [21] odpov´ıd´a maxim´aln´ımu proudov´emu omezen´ı obvodu LM2674, kter´e m´a hodnotu 1,25 A. Z´avˇern´e napˇet´ı mus´ı b´yt minim´alnˇe 1,2kr´at vˇetˇs´ı neˇz maxim´aln´ı vstupn´ı napˇet´ı. Na z´akladˇe tˇechto hodnot byla vybr´ana dioda SK24 se z´avˇern´ym napˇet´ım 40 V a jmenovit´ym proudem v propustn´em ´ smˇeru 2 A. Ubytek napˇet´ı v propustn´em smˇeru je menˇs´ı neˇz 0,4 V pˇri proudu 0,5 A. V posledn´ım kroku se vol´ı kondenz´ator na vstupu mˇeniˇce. Napˇet’ov´e dimenzov´an´ı mus´ı odpov´ıdat hodnotˇe minim´alnˇe 1,25 ·Uin,max . Konkr´etn´ı typ kondenz´atory se vol´ı dle proudov´e zat´ızˇ itelnosti. Ta by mˇela dle [21] odpov´ıdat pˇribliˇznˇe 1/2 v´ystupn´ıho proudu. Bohuˇzel u dostupn´ych kondenz´ator˚u nen´ı tento parametr uveden. Byla zvolena paraleln´ı kombinace dvou tantalov´ych kondenz´ator˚u C4 a C5 s kapacitou 22 µ F pro napˇet´ı 25 V. Kondenz´ator C1, kter´y spolu s vnitˇrn´ımi obvody IC1 napom´ah´a k rychlejˇs´ımu otevˇren´ı v´ykonov´ych tranzistor˚u mˇeniˇce, m´a dle doporuˇcen´ı [21] hodnotu 10 nF a je dimenzov´an na napˇet´ı 50 V.
3.4.5 Vstupy a v´ystupy Na obr´azku 3.4.5 se nach´az´ı zapojen´ı vstupnˇe-v´ystupn´ıch konektor˚u modulu BOOT unit. V lev´e cˇ a´ sti leˇz´ı konektory X5 a X6, coˇz jsou dutinkov´e liˇsty pro osazen´ı modulu CPU unit. Kol´ıkov´e liˇsty po stran´ach modulu reprezentuj´ı konektory X4 a X7. Ze sch´ematu je patrn´e, zˇ e bylo zachov´ano rozloˇzen´ı v´yvod˚u jako u modulu CPU unit a dostupn´e jsou veˇsker´e sign´aly poskytovan´e t´ımto modulem. Na konektoru je takt´ezˇ vyvedeno napˇet´ı 5 V pro pˇr´ıpadn´e nap´ajen´ı dalˇs´ıch obvod˚u. Zde vˇsak mus´ı b´yt br´an ohled na maxim´aln´ı proudov´e zat´ızˇ en´ı zdroje, jak bylo navrhnuto v bodˇe 3.4.4. Prav´a cˇ a´ st sch´ematu zobrazuje zapojen´ı ethernetov´eho konektoru RJ-45. V nˇem jsou integrov´any dvˇe signalizaˇcn´ı LED diody, kter´e ud´avaj´ı aktu´aln´ı stav ethernetov´eho rozhran´ı. Konektor byl zvolen typ RJHS-5381 [23] s n´ızkopˇr´ıkonov´ymi LED diodami a st´ınˇen´ım. Parametry diod jsou 2,1 V a 2 mA v propustn´em smˇeru. V´ystupn´ı napˇet´ı serveru NE-4100T pro LED diody odpov´ıd´a hodnotˇe 3,3 V. Z tˇechto parametr˚u lze urˇcit
45
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
46
hodnotu rezistor˚u R7 a R8: R7,8 =
Uout −Ud 3,3 − 2,1 = ≈ 680 Ω Id 2 · 10−3
(3.2)
Kondenz´atory C6 a C7 maj´ı za u´ kol vyrovn´avat elektrostatick´e napˇet´ı (ESD), kter´e vznik´a na st´ınˇen´ı kabelu. Kapacita kondenz´ator˚u je 100 pF a napˇet’ov´e dimenzov´an´ı mus´ı odpov´ıdat hodnotˇe 2 kV, coˇz vych´az´ı z doporuˇcen´eho zapojen´ı v´yrobce [16].
(a) Vstupnˇe-v´ystupn´ı sign´aly
(b) Konektor rozhran´ı Ethernet
Obr´azek 3.11: Sch´ema zapojen´ı vstup˚u a v´ystup˚u
3.4.6 Deska ploˇsn´ych spoju˚ Modul BOOT unit je realizov´an na jedn´e dvouvrstv´e prokoven´e desce ploˇsn´ych spoj˚u o rozmˇerech 85 x 58 mm. Pˇri n´avrhu byly zohlednˇeny technologick´e poˇzadavky zvolen´eho v´yrobce, a proto deska vyhovuje n´asleduj´ıc´ım parametr˚um: • minim´aln´ı sˇ´ıˇrka spoje 0,3 mm • minim´aln´ı sˇ´ıˇrka izolaˇcn´ı mezery 0,2 mm • minim´aln´ı pr˚umˇer vrt´an´ı 0,6 mm Na materi´al desky nejsou kladeny zˇ a´ dn´e speci´aln´ı n´aroky, a proto byl vybr´an standardn´ı materi´al FR4 o tlouˇst’ce 1,5 mm. Aby byla garantov´ana p´ajitelnost, je povrch desky upraven metodou zˇ a´ rov´eho c´ınov´an´ı HAL. Vˇetˇsina souˇca´ stek je v proveden´ı SMD. Rozmˇer rezistor˚u a kondenz´ator˚u odpov´ıd´a velikosti 1206. Tato volba vych´az´ı ze snahy vyuˇzit´ı stejn´ych druh˚u souˇca´ stek, jako jsou pouˇzity v modulu CPU unit.
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
V´yjimky tvoˇr´ı rezistory R3, R4 a kondenz´atory C6, C7. U rezistor˚u R3 a R4 bylo zvoleno klasick´e proveden´ı o rozmˇeru 0207, a to z d˚uvodu snazˇs´ı realizace spoj˚u na DPS. Kondenz´atory C6 a C7 jsou v klasick´em proveden´ı, aby bylo moˇzn´e zajistit napˇet’ov´e dimenzov´an´ı na 2 kV. S ohledem na toto napˇet´ı jsou proto u patˇriˇcn´ych spoj˚u pouˇzity vˇetˇs´ı izolaˇcn´ı mezery. Z hlediska z´asad pro n´avrh DPS sniˇzuj´ıc´ıho mˇeniˇce jsou kondenz´atory C1, C4, C5, C10, dioda D1 a c´ıvka L1 um´ıstˇeny co nejbl´ızˇ e v´yvod˚um integrovan´eho obvodu IC1. D˚uvody jsou minimalizace ohmick´eho odporu a indukˇcnosti spoj˚u. Kv˚uli tˇemto poˇzadavk˚um byly nav´ıc u patˇriˇcn´ych spoj˚u pouˇzity vˇetˇs´ı tlouˇst’ky. Lithiov´a baterie G1 k z´alohov´an´ı hodin re´aln´eho cˇ asu byla z d˚uvodu dosaˇzen´ı co nejmenˇs´ıho rozmˇeru DPS zvolena typu CR2032 pro vertik´aln´ı mont´azˇ . U modulu CPU unit a embedded server NE-4100T se poˇc´ıt´a s osazen´ım do dutinkov´ych liˇst. D˚uvodem tohoto ˇreˇsen´ı je pˇredevˇs´ım u´ spora m´ısta na DPS, protoˇze pod moduly mohou b´yt um´ıstˇeny souˇca´ stky s vyˇssˇ´ım profilem (c´ıvka sniˇzuj´ıc´ıho mˇeniˇce, tantalov´e kondenz´atory). Spodn´ı strana DPS nen´ı pro vyˇssˇ´ı souˇca´ stky vyuˇziteln´a, protoˇze se zde nach´azej´ı kol´ıkov´e liˇsty X4 a X7. Kompletn´ı sch´ema zapojen´ı, deska ploˇsn´ych spoj˚u a rozloˇzen´ı souˇca´ stek jsou um´ıstˇeny v pˇr´ıloh´ach B a C.
3.4.7 Poˇzadavky na souˇca´ stky Tolerance hodnot rezistor˚u a kondenz´ator˚u nen´ı kritick´a. Mohou b´yt pouˇzity rezistory ˇ adn´y z rezistor˚u nen´ı v´ykonovˇe nam´ah´an, a proto postaˇc´ı s pˇresnost´ı 5 % nebo lepˇs´ı. Z´ standardn´ı dimenzov´an´ı 0,25 W pro SMD velikost 1206. U keramick´ych kondenz´ator˚u je poˇzadov´ana tolerance alespoˇn 10 % a materi´al X7R. V´yjimku tvoˇr´ı kondenz´ator C8 v obvodu hodin re´aln´eho cˇ asu. Zde potˇrebujeme co nejlepˇs´ı teplotn´ı stabilitu, a proto byl vybr´an materi´al NPO s toleranc´ı 5 % cˇ i lepˇs´ı. Nen´ı-li uvedeno jinak, jsou keramick´e kondenz´atory dimenzov´any na napˇet´ı alespoˇn 25 V. Parametry tantalov´ych kondenz´ator˚u C4, C5 a C10 byly diskutov´any v odstavci 3.4.4. Kompletn´ı seznam souˇca´ stek, jejich parametry a typ pouzdra obsahuje pˇr´ıloha D.
47
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
3.5 Komunikaˇcn´ı protokol C´ılov´e mikrokontrol´ery Atmel AVR disponuj´ı omezen´ymi hardwarov´ymi zdroji, a to pˇredevˇs´ım v oblastech velikosti pamˇeti programu vyhrazen´e pro bootloader, velikosti pamˇeti dat a v´ypoˇcetn´ım v´ykonu. Tato omezen´ı mus´ı b´yt proto zohlednˇena jiˇz pˇri n´avrhu vhodn´eho komunikaˇcn´ıho protokolu tak, aby bylo zajiˇstˇeno optim´aln´ı vyuˇzit´ı, a tak minimalizov´any vlivy bootloaderu na uˇzivatelskou aplikaci. Z rozboru princip˚u u´ loh poskytovan´ych bootloaderem vypl´yv´a, zˇ e jist´e n´aroky na objem pˇrenesen´ych dat klade pouze z´apis do pamˇeti programu. Z pˇrehledu MCU v pˇr´ıloze E vid´ıme, zˇ e jde ˇra´ dovˇe o des´ıtky aˇz stovky kB. Pˇren´est cel´y obraz pamˇeti programu v jednom bloku a n´aslednˇe jej zapsat nen´ı moˇzn´e, protoˇze MCU nedisponuje dostateˇcnˇe velkou pamˇet´ı dat. Programov´a data se vˇsak zapisuj´ı po bloc´ıch, kter´e odpov´ıdaj´ı velikosti str´anky, a ta dosahuje maxim´alnˇe velikosti 256 B. T´eto skuteˇcnosti lze vyuˇz´ıt k dekompozici u´ lohy na jednoduˇssˇ´ı celky a pˇren´asˇet data v menˇs´ıch bloc´ıch. Pˇrevodn´ık NE-4100T pouˇz´ıv´a k pˇrenosu dat i ovl´ad´an´ı obecn´ych vstupnˇe-v´ystupn´ıch port˚u protokol TCP na pozici transportn´ı vrstvy, coˇz zaruˇcuje dle specifikac´ı [9] do znaˇcn´e m´ıry spolehliv´e doruˇcen´ı dat ve spr´avn´em poˇrad´ı. Toho je dosaˇzeno pˇredevˇs´ım vyuˇzit´ım kontroln´ıch souˇct˚u, cˇ´ıslov´an´ı paket˚u a opakov´an´ım nedoruˇcen´ych paket˚u. Pˇrenos dat v menˇs´ıch bloc´ıch m´a pozitivn´ı dopad i na detekci chyb. Pˇri menˇs´ım objemu dat pˇren´asˇen´ych TCP r´amcem stoupne pravdˇepodobnost detekce chyby, protoˇze i kontroln´ı souˇcet je pak poˇc´ıt´an pro menˇs´ı blok dat. Z tˇechto d˚uvod˚u nen´ı d´ale potˇreba ˇreˇsit zabezpeˇcen´ı pˇrenosu proti chyb´am na u´ rovni aplikaˇcn´ı vrstvy, kterou tvoˇr´ı komunikace s bootloaderem. To vede na znaˇcn´e zjednoduˇsen´ı firmware a niˇzsˇ´ı n´aroky na v´ypoˇcetn´ı v´ykon. Protoˇze k z´apisu jedn´e str´anky doch´az´ı v nezanedbateln´em cˇ ase, jak uv´ad´ı tabulka 3.5, mus´ı b´yt pˇri komunikaci realizov´an mechanizmus ˇr´ızen´ı toku dat. T´ım se zajist´ı, zˇ e nedojde k pˇreteˇcen´ı pˇrij´ımac´ıho bufferu bootloaderu, coˇz by vedlo ke ztr´atˇe dat a selh´an´ı procesu programov´an´ı. Z rozdˇelen´ı pamˇet’ov´eho prostoru (kapitola 3.3.1) je vidˇet, zˇ e k´od bootloaderu zab´ır´a m´ısto v pamˇeti programu na u´ kor uˇzivatelsk´e aplikace a jeho velikost je omezena. Proto se st´av´a pˇrirozen´ym poˇzadavkem minimalizovat jeho velikost. Nen´ı tak na m´ıstˇe sloˇzit´y
48
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
komunikaˇcn´ı protokol, cˇ´ımˇz lze vylouˇcit textovˇe orientovan´e protokoly, kter´e preferuj´ı cˇ itelnost a flexibilitu nad mnoˇzstv´ım pˇren´asˇen´ych dat a sloˇzitost´ı zpracov´an´ı. Z tˇechto d˚uvod˚u byl zvolen jedno´ucˇ elov´y bin´arn´ı protokol s komunikac´ı typu masterslave. Firmware bootloaderu tvoˇr´ı podˇr´ızenou stranu (slave) a uˇzivatelsk´a aplikace nadˇr´ızenou stranu (master). Kaˇzd´y pˇr´ıkaz bude definov´an pevn´ym form´atem zˇ a´ dost´ı a odpovˇed´ı.
3.5.1 Form´at pˇrenosu Pro s´eriovou komunikaci mezi mikrokontrol´erem a pˇrevodn´ıkem NE-4100T je nezbytn´e urˇcit vhodn´y form´at pˇrenosu. Ten definuje poˇcet datov´ych bit˚u, stop bit˚u, parita, ˇr´ızen´ı toku dat a bitov´a rychlost. Bitov´a rychlost byla vybr´ana 115200 bit/s s ohledem na standardn´ı ˇradu hodnot a rychlost pˇrenosu. Pro poˇcet datov´ych a stop bit˚u jsou nejv´yhodnˇejˇs´ı standardn´ı hodnoty osm datov´ych a jeden stop bit. Volba datov´ych bit˚u vych´az´ı z sˇ´ıˇrky datov´e sbˇernice MCU. Prodlouˇzen´y stop bit se u tohoto druhu s´eriov´e komunikace vyuˇz´ıval v pˇr´ıpadˇe, zˇ e hardware nebyl schopen pˇrijat´y byte zpracovat v dostateˇcnˇe kr´atk´em cˇ ase. Vzhledem k postaˇcuj´ıc´ı rychlosti pˇr´ıjmu a zpracov´an´ı dat nen´ı v tomto pˇr´ıpadˇe stop bit potˇreba prodluˇzovat. Parita nebude vyuˇzita a ˇr´ızen´ı toku bude ˇreˇseno softwarovˇe na u´ rovni aplikaˇcn´ıho protokolu. Hardwarov´e ˇr´ızen´ı toku nen´ı v´yhodn´e jednak proto, zˇ e vyˇzaduje dalˇs´ı vstupnˇe-v´ystupn´ı sign´aly, ale hlavnˇe v nemoˇznosti pˇresnˇe urˇcit mnoˇzstv´ı pˇrijat´ych dat. To by komplikovalo implementaci pˇrij´ımac´ıho bufferu. Form´at pˇrenosu je naznaˇcen na obr´azku 3.12. Zaˇca´ tek pˇrenosu jednoho bytu zahajuje start bit St, osmibitov´a data se vys´ılaj´ı v poˇrad´ı od nejniˇzsˇ´ıho bitu k nejvyˇssˇ´ımu bitu a sekvenci uzav´ır´a stop bit Sp.
Obr´azek 3.12: Form´at pˇrenosu
49
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
3.5.2 Start bootloaderu Start bootloaderu po proveden´ı resetu mikrokontrol´eru se sign´alem BOOT v logick´e u´ rovni 0 signalizuje vysl´an´ı identifikaˇcn´ı sekvence. Ta se skl´ad´a z konstantn´ı cˇ a´ sti a verze bootloaderu, jak popisuje tabulka 3.9. Verzi oznaˇcuje sˇestn´actibitov´e cˇ´ıslo bez znam´enka s organizac´ı typu nejm´enˇe v´yznamn´y byt prvn´ı (little-endian). Odesl´an´ım identifikaˇcn´ı sekvence pˇrech´az´ı bootloader do stavu, ve kter´em cˇ ek´a na pˇr´ıkazy, jejichˇz form´aty jsou pops´any d´ale. k
1
Pˇr´ıkaz
Odpovˇed’
(master)
(slave)
RESET
Popis
Reset MCU, BOOT = 0
2
41hex 45hex 42hex 4Chex
3
V[0..1]
Konstantn´ı sekvence Verze (uint16)
Tabulka 3.9: Form´at identifikaˇcn´ı sekvence
3.5.3 Princip potvrzen´ı operac´ı maz´an´ı a z´apisu Aby se sn´ızˇ ilo riziko n´ahodn´eho vymaz´an´ı aplikace, nebo z´apisu neplatn´ych hodnot napˇr´ıklad pˇri chybˇe komunikace, cˇ i pˇripojen´ı neplatn´eho klienta, mus´ı b´yt tyto operace potvrzeny. Mechanizmus potvrzen´ı pracuje na principu vysl´an´ı kl´ıcˇ e a ovˇeˇren´ı odpovˇedi, kter´a je vypoˇc´ıt´ana z odeslan´eho kl´ıcˇ e definovan´ym zp˚usobem. Generov´an´ı sekvence kl´ıcˇ e se odvod´ı od cˇ asov´eho intervalu vymezen´eho startem bootloaderu a pˇrijet´ım pˇr´ıkazu, kter´y m´a b´yt potvrzen. Praktick´a realizace bude implementov´ana pomoc´ı volnˇe bˇezˇ´ıc´ıho sˇestn´actibitov´eho cˇ asovaˇce s vysok´ym cˇ asov´ym rozliˇsen´ım. T´ım bude zajiˇstˇen do jist´e m´ıry n´ahodn´y charakter dan´y cˇ asov´ym nedeterminismem komunikace a vznikne tak sekvence dvou byt˚u, kter´a se odeˇsle aplikaci zˇ a´ daj´ıc´ı o proveden´ı pˇr´ıkazu. Z t´eto dvoubytov´e sekvence aplikace vypoˇc´ıt´a odpovˇed’ jako standardn´ı kontroln´ı souˇcet CRC16-CCITT dan´y rovnic´ı x16 + x12 + x5 + 1. D˚uvodem t´eto volby spoˇc´ıv´a pouˇzit´ı stejn´eho CRC algoritmu pro ovˇeˇren´ı integrity uˇzivatelsk´e aplikace, kter´a bude
50
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
pops´ana d´ale. Snahou je tedy umoˇznit optimalizaci velikosti k´odu bootloaderu sd´ılen´ım stejn´e funkce. Ovˇeˇren´ı operace tedy prob´ıh´a dle n´asleduj´ıc´ıho postupu: 1. Inicializace CRC16 hodnotou FFFFhex 2. V´ypoˇcet nov´e hodnoty CRC16 z prvn´ıho bytu kl´ıcˇ e K0 3. V´ypoˇcet nov´e hodnoty CRC16 z druh´eho bytu kl´ıcˇ e K1 4. Odesl´an´ı niˇzsˇ´ıho bytu CRC16 (odpovˇed’ R0) 5. Odesl´an´ı vyˇssˇ´ıho bytu CRC16 (odpovˇed’ R1)
3.5.4 Vymaz´an´ı aplikaˇcn´ı sekce Maz´an´ı aplikaˇcn´ı sekce je uvozeno k´odem 0Ehex . Aby se sn´ızˇ ilo riziko n´ahodn´eho vymaz´an´ı, pouˇz´ıv´a operace metodu potvrzen´ı popsanou v odstavci 3.5.3. Bootloader odpov´ı sekvenc´ı dvou byt˚u, kter´e d´avaj´ı kl´ıcˇ k potvrzen´ı operace. Pro potvrzen´ı vymaz´an´ı mus´ı master odpovˇedˇet zp˚usobem popsan´ym v pˇredchoz´ım odstavci. Komunikaci popisuje tabulka 3.10. Operace maz´an´ı m´a cˇ tyˇri n´avratov´e k´ody. Hodnota 00hex oznaˇcuje u´ spˇesˇn´e vymaz´an´ı aplikaˇcn´ı sekce. Odpovˇed’ 02hex signalizuje nespr´avn´e potvrzen´ı operace pomoc´ı kl´ıcˇ e. Hodnota 03hex informuje o tom, zˇ e funkce maz´an´ı nen´ı u dan´eho syst´emu povolena. N´avratov´a hodnota 10hex znamen´a, zˇ e maz´an´ı aplikaˇcn´ı sekce probˇehlo ne´uspˇesˇnˇe, protoˇze pˇri verifikaci byl nalezen jeden nebo v´ıce byt˚u, kter´e nemaj´ı hodnotu FFhex odpov´ıdaj´ıc´ı vymazan´e oblasti. k
1
Pˇr´ıkaz
Odpovˇed’
(master)
(slave)
3 4
ˇ adost o vymaz´an´ı aplikaˇcn´ı sekce Z´
0Ehex
2
Popis
K[0..1]
Kl´ıcˇ pro potvrzen´ı (uint16, K0 = LSB, K1 = MSB) Odpovˇed’ na kl´ıcˇ K (uint16, R0 = LSB, R1 = MSB)
R[0..1] 00hex
Aplikaˇcn´ı sekce u´ spˇesˇnˇe vymaz´ana
02hex
Neplatn´y kl´ıcˇ
03hex
Funkce zablokov´ana
10hex
Verifikace se nezdaˇrila, jeden cˇ i v´ıce byt˚u m´a hodnotu r˚uznou od FFhex
Tabulka 3.10: Form´at komunikace pˇri maz´an´ı aplikaˇcn´ı sekce
51
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
3.5.5 Z´apis do aplikaˇcn´ı sekce K´od pˇr´ıkazu pro z´apis do aplikaˇcn´ı sekce odpov´ıd´a hodnotˇe 0Fhex a je n´asledov´an parametrem, kter´y ud´av´a velikost obrazu aplikace v bytech. Parametr m´a formu cel´eho cˇ´ısla bez znam´enka o d´elce 32 bit˚u s organizac´ı typu nejm´enˇe v´yznamn´y byt prvn´ı (little-endian). Pro potvrzen´ı pˇr´ıkazu plat´ı stejn´e pravidlo jako v pˇr´ıpadˇe maz´an´ı. Odpovˇed´ı na kl´ıcˇ je potvrzen´ı cˇ i zam´ıtnut´ı pˇr´ıkazu. T´ım m˚uzˇ e b´yt nesouhlas kl´ıcˇ e, nebo chybn´a velikost obrazu (vˇetˇs´ı neˇz aplikaˇcn´ı sekce). Je-li pˇr´ıkaz potvrzen, odeˇsle bootloader velikost sv´eho pˇrij´ımac´ıho bufferu jako cel´e cˇ´ıslo bez znam´enka o d´elce 16 bit˚u. Tento parametr definuje velikost blok˚u, po kter´ych bude pˇren´asˇen obraz aplikace pˇri z´apisu. Master tak vˇzdy odeˇsle blok dat a cˇ ek´a na potvrzen´ı jeho z´apisu. D´elka bloku odpov´ıd´a velikosti pˇrij´ımac´ıho bufferu. Menˇs´ı m˚uzˇ e b´yt pouze, je-li zb´yvaj´ıc´ı poˇcet dat menˇs´ı, neˇz velikost bufferu. Po z´apisu posledn´ıho bloku dat oˇcek´av´a bootloader kontroln´ı souˇcet obrazu aplikace. Ten je pˇren´asˇen celoˇc´ıselnou hodnotou bez znam´enka o d´elce 16 bit˚u. Jako kontroln´ı souˇcet byl zvolen standardn´ı polynom CRC16-CCITT dan´y rovnic´ı x16 + x12 + x5 + 1. Kontroln´ı souˇcet se vypoˇc´ıt´a z bin´arn´ıho obrazu uˇzivatelsk´e aplikace, pˇriˇcemˇz na zaˇca´ tku v´ypoˇctu mus´ı b´yt kontroln´ı souˇcet inicializov´an hodnotou FFFFhex . Odpovˇed´ı na kontroln´ı souˇcet je bud’ potvrzen´ı u´ spˇesˇn´eho z´apisu, nebo chyba ovˇeˇren´ı CRC, jak popisuje tabulka 3.11.
3.5.6
ˇ Cten´ ı konfiguraˇcn´ıch bytu˚
K´odem pro cˇ ten´ı konfiguraˇcn´ıch byt˚u je hodnota 10hex . Odpovˇed´ı jsou cˇ tyˇri byty v poˇrad´ı Fuse Low, Lock, Extended Fuse a Fuse High. Nen´ı-li nˇekter´y z konfiguraˇcn´ıch byt˚u u dan´eho MCU dostupn´y, vrac´ı bootloader hodnotu FFhex .
3.5.7
ˇ Cten´ ı podpisu MCU
K´odem ke cˇ ten´ı podpisu mikrokontrol´eru je hodnota 11hex a poˇrad´ı odpovˇedi definuje tabulka 3.13. U mikrokontrol´er˚u, kter´e neumoˇznˇ uj´ı cˇ ten´ı signature bootloaderem (napˇr´ıklad ATmega16), vrac´ı funkce hodnotu FFFFFFhex .
52
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
k
Pˇr´ıkaz
Odpovˇed’
(master)
(slave)
1
0Fhex
2
S[0..3]
Pˇr´ıkaz z´apisu aplikace Velikost aplikace (uint32, S0 = LSB, S3 = MSB)
3 4
K[0..1]
Kl´ıcˇ pro potvrzen´ı (uint16, K0 = LSB, K1 = MSB) Potvrzen´ı pˇr´ıkazu
R[0..1]
5
6 7
Popis
00hex
Velikost pˇrijata
02hex
Neplatn´y kl´ıcˇ
20hex
Velikost odm´ıtnuta
B[0..1] D[N]
Velikost pˇrij´ımac´ıho bufferu B (uint16, B0 = LSB, B1 = MSB) Blok dat o velikosti N N = B je-li zb´yvaj´ıc´ı poˇcet dat >= B, jinak N = zb´yvaj´ıc´ı poˇcet dat
8
00hex
9 10
Blok dat zaps´an
Kroky 7 a 8 se opakuj´ı, dokud nen´ı zaps´ana cel´a aplikace CRC[0..1]
Kontroln´ı souˇcet aplikace (uint16, CRC0 = LSB, CRC1 = MSB)
11
00hex
Aplikace u´ spˇesˇnˇe zaps´ana
21hex
Z´apis aplikace se nezdaˇril (nesouhlas´ı kontroln´ı souˇcet)
Tabulka 3.11: Form´at komunikace pˇri z´apisu do aplikaˇcn´ı sekce k
1
Pˇr´ıkaz
Odpovˇed’
(master)
(slave)
Popis ˇ adost o cˇ ten´ı konfiguraˇcn´ıch byt˚u Z´
10hex
2
FL
Konfiguraˇcn´ı byt Fuse Low
3
L
Konfiguraˇcn´ı byt Lock
4
EF
Konfiguraˇcn´ı byt Extended Fuse
5
FH
Konfiguraˇcn´ı byt Fuse High
Tabulka 3.12: Form´at komunikace pˇri cˇ ten´ı konfiguraˇcn´ıch byt˚u k
1
Pˇr´ıkaz
Odpovˇed’
(master)
(slave)
Popis ˇ adost o cˇ ten´ı konfiguraˇcn´ıch byt˚u Z´
11hex
2
S1
Signature Byte 1
3
S2
Signature Byte 2
4
S3
Signature Byte 3
Tabulka 3.13: Form´at komunikace pˇri cˇ ten´ı podpisu MCU
53
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
3.5.8 Z´apis konfiguraˇcn´ıch bitu˚ pamˇeti programu Z´apis konfiguraˇcn´ıch bit˚u pamˇeti programu m´a k´od 12hex Za k´odem pˇr´ıkazu n´asleduje hodnota, kter´a m´a b´yt nastavena. Z principu funkce lock bit˚u je moˇzn´e pouze nastavit bity s hodnotou 1 na hodnotu 0 (viz. odstavec 3.3.2), a proto chov´an´ı odpov´ıd´a logick´e funkci AND. Z toho vypl´yv´a, zˇ e hodnota FFhex neprovede zˇ a´ dnou zmˇenu a hodnota 00hex nastav´ı vˇsechny dostupn´e lock bity. Z d˚uvodu zachov´an´ı funkce uˇzivatelsk´e aplikace mus´ı b´yt blokov´ano nastaven´ı bitu
BLB02. Jeho aktivov´an´ı m´a za n´asledek nemoˇznost cˇ ten´ı aplikaˇcn´ı sekce bootloaderem, coˇz vede k selh´an´ı syst´emu ovˇeˇren´ı CRC. V koneˇcn´em v´ysledku by tak nastaven´ı bitu BLB02 zabr´anilo spuˇstˇen´ı uˇzivatelsk´e aplikace, coˇz znamen´a nefunkˇcnost cel´eho syst´emu. Tento bit proto nebude bootloaderem nikdy nastaven. Komunikaci a n´avratov´e k´ody popisuje tabulka 3.14. Jelikoˇz se jedn´a o z´apis, mus´ı b´yt operace potvrzena obvykl´ym zp˚usobem. k
Pˇr´ıkaz
Odpovˇed’
(master)
(slave)
1
12hex
2
LB
3 4 5
Popis ˇ adost o z´apis konfiguraˇcn´ıch bit˚u Z´ Zapisovan´a hodnota
K[0..1]
Kl´ıcˇ pro potvrzen´ı (uint16, K0 = LSB, K1 = MSB) Odpovˇed’ na kl´ıcˇ K (uint16, R0 = LSB, R1 = MSB)
R[0..1] 00hex
Operace u´ spˇesˇnˇe provedena
02hex
Neplatn´y kl´ıcˇ
03hex
Funkce zablokov´ana
Tabulka 3.14: Form´at komunikace pˇri z´apisu konfiguraˇcn´ıch bit˚u pamˇeti programu
3.5.9 Neplatn´y pˇr´ıkaz Nen´ı-li k´od pˇr´ıkazu rozpozn´an, odpov´ıd´a bootloader chybov´ym k´odem 01hex a vrac´ı se do stavu cˇ ek´an´ı na pˇr´ıkaz. Popis komunikace popisuje tabulka 3.15.
54
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
k
1 2
Pˇr´ıkaz
Odpovˇed’
(master)
(slave)
Popis
E = neplatn´y k´od pˇr´ıkazu
E
Neplatn´y pˇr´ıkaz
x01
Tabulka 3.15: Odpovˇed’ na neplatn´y pˇr´ıkaz
3.6 Firmware Pro v´yvoj firmware mikrokontrol´eru byl zvolen jazyk C. Oproti assembleru vykazuje nesrovnatelnˇe jednoduˇssˇ´ı v´yvoj aplikace s ohledem na pˇr´ıpadn´e zmˇeny, rozˇs´ıˇren´ı a pˇredevˇs´ım snadnˇejˇs´ı kontrolu ˇreˇsen´ı. V´yhodou programovac´ıho jazyka na vyˇssˇ´ı u´ rovni je tak´e menˇs´ı n´avaznost na hardware, a tak lze snadnˇeji dos´ahnout pouˇzit´ı stejn´eho k´odu pro r˚uzn´e typy MCU. Cenou za to je hlavnˇe m´ırn´e zvˇetˇsen´ı v´ysledn´eho strojov´eho k´odu a niˇzsˇ´ı stupeˇn optimalizace. Vzhledem k u´ zk´e n´avaznosti problematiky bootloaderu na hardware mus´ı b´yt br´an ohled na specifick´e vlastnosti pˇrekladaˇce. Z tohoto d˚uvodu bude zdrojov´y k´od firmware navrˇzen pro konkr´etn´ı pˇrekladaˇc. Z volnˇe dostupn´ych byl vybr´an nejrozˇs´ıˇrenˇejˇs´ı pˇrekladaˇc AVR-GCC, protoˇze podporuje vˇetˇsinu mikrokontrol´er˚u Atmel AVR, je st´ale aktivnˇe rozv´ıjen a disponuje dobrou dokumentac´ı.
3.6.1 Struktura projektu Na z´akladˇe zvolen´eho komunikaˇcn´ıho protokolu, principu funkc´ı bootloaderu a poˇzadavk˚u diskutovan´ych v pˇredchoz´ıch cˇ a´ stech projektu byl vytvoˇren firmware bootloaderu. K´od ˇreˇsen´ı byl v z´ajmu pˇrehlednosti dekomponov´an na element´arn´ı funkce a rozdˇelen dle logick´e struktury na nˇekolik samostatn´ych cˇ a´ st´ı. Cel´y projekt se tak skl´ad´a z dev´ıti soubor˚u, jejichˇz n´azvy a hrub´y popis ud´av´a tabulka 3.16.
3.6.2 Start bootloaderu Start popisuje v´yvojov´y diagram hlavn´ı funkce programu na obr´azku 3.13. Vstupn´ım bodem je vektor resetu mikrokontrol´eru nastaven´y konfiguraˇcn´ım bitem BOOTRST do
55
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Soubor
Popis
Makefile
Skript pro pˇreklad projektu
aebl.c
Hlavn´ı zdrojov´y k´od. Implementace funkc´ı bootloaderu.
uart.c
Zdrojov´y k´od komunikaˇcn´ıch funkc´ı.
watchdog.c
Zdrojov´y k´od funkc´ı pro obsluhu extern´ıho WDT.
aebl.h
Hlavn´ı hlaviˇckov´y soubor bootloaderu.
options.h
Hlaviˇckov´y soubor s konfiguraˇcn´ımi parametry bootloaderu.
rand.h
Hlaviˇckov´y soubor s inline funkcemi gener´atoru kl´ıcˇ e.
uart.h
Hlaviˇckov´y soubor komunikaˇcn´ıch funkc´ı.
watchdog.h
Hlaviˇckov´y soubor funkc´ı WDT. Tabulka 3.16: Struktura projektu firmware
sekce bootloaderu. Zde leˇz´ı hlavn´ı funkce programu s prototypem: void
attribute
( ( n o r e t u r n , naked , s e c t i o n ( ” . v e c t o r s ” ) ) ) main ( v o i d ) ;
Atribut section(”.vectors”) zaruˇcuje um´ıstˇen´ı funkce linkerem na poˇzadovanou adresu. Atributy noreturn a naked optimalizuj´ı velikost v´ysledn´eho k´odu. Protoˇze hlavn´ı funkce bootloaderu nikdy nevrac´ı hodnotu a nepotˇrebuje standardn´ı inicializaci, jsou tyto vlastnosti zablokov´any. Z d˚uvodu optimalizace nejsou pouˇzity ani standardn´ı inicializaˇcn´ı funkce zprostˇredkovan´e pˇrekladaˇcem, cˇ ehoˇz je dosaˇzeno parametrem linkeru -nostartfiles. Jako prvn´ı krok se tedy mus´ı inicializovat d˚uleˇzit´e registry MCU, o jejichˇz nastaven´ı se obvykle star´a pˇrekladaˇc. Tˇemi jsou v pˇr´ıpadˇe pˇrekladaˇce AVR-GCC registr R1, stavov´y registr SREG a ukazatel z´asobn´ıku SP. Registr R1 je pˇrekladaˇcem vyuˇz´ıv´an jako nulov´y registr, proto mus´ı b´yt inicializov´an na hodnotu 00hex . Jelikoˇz pˇr´ıstup k tˇemto registr˚um nen´ı z jazyka C pˇr´ımo moˇzn´y, byla vloˇzena instrukce CLR (Clear Register) prostˇrednictv´ım inline assembleru. Parametr volatile zabraˇnuje pˇrekladaˇci instrukci vypustit v r´amci optimalizace. Stavov´y registr SREG poˇc´ıt´a ve v´ychoz´ım stavu s nulovou hodnotu. Zde jiˇz pouˇzit´ı assembleru nen´ı nutn´e. Nejd˚uleˇzitˇejˇs´ım krokem je inicializace ukazatele z´asobn´ıku SP. Mikrokontrol´ery AVR pouˇz´ıvaj´ı zpˇetn´y posun ukazatele pˇri ukl´ad´an´ı na z´asobn´ık (adresa je dekrementov´ana).
56
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Pˇrekladaˇc AVR-GCC tak ve v´ychoz´ım nastaven´ı poˇc´ıt´a s poˇca´ tkem z´asobn´ıku na posledn´ı adrese pamˇeti dat. Po inicializaci watchdog cˇ asovaˇce pˇrich´az´ı na ˇradu kontrola podm´ınky pro spuˇstˇen´ı uˇzivatelsk´e aplikace. Ta je definov´ana jako logick´y sign´al na vstupn´ım pinu MCU. Jeli hodnota 0, pokraˇcuje se ve spouˇstˇen´ı bootloaderu. V opaˇcn´em pˇr´ıpadˇe se poˇzaduje spuˇstˇen´ı uˇzivatelsk´e aplikace, coˇz je podm´ınˇeno spr´avn´ym kontroln´ım souˇctem. V pˇr´ıpadˇe platn´eho kontroln´ıho souˇctu dojde ke spuˇstˇen´ı uˇzivatelsk´e aplikace skokem na adresu 0000hex . Toho je doc´ıleno deklarac´ı ukazatele na imagin´arn´ı funkci leˇz´ıc´ı na poˇzadovan´e adrese a n´asledn´ym vol´an´ım t´eto funkce: v o i d ( ∗ j u m p t o a p p ) ( v o i d ) = 0 x0000 ; jump to app ( ) ;
Je-li kontroln´ı souˇcet neplatn´y, generuje se pˇr´ıznak chyby nastaven´ım pinu ERROR jako v´ystup s logickou hodnotu 0 a spuˇstˇen´ı uˇzivatelsk´e aplikace nen´ı dovoleno. Program konˇc´ı v nekoneˇcn´e smyˇcce, ve kter´e doch´az´ı k periodick´emu resetov´an´ı WDT, kter´y by jinak zp˚usobil neust´al´e resetov´an´ı MCU.
Obr´azek 3.13: V´yvojov´y diagram spuˇstˇen´ı bootloaderu
3.6.3
ˇ an´ı na pˇr´ıkaz Cek´
Tuto u´ lohu zajiˇst’uje funkce (v´yvojov´y diagram na obr´azku 3.14):
57
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
s t a t i c i n l i n e v o i d WaitForCommand ( v o i d ) ;
Jako prvn´ı krok po vstupu do bootloaderu se inicializuje gener´ator potvrzovac´ıch kl´ıcˇ u˚ . D´ale mus´ı b´yt zah´ajena komunikace s klientsk´ym software prostˇrednictv´ım s´eriov´eho kan´alu. To vyˇzaduje inicializaci s´eriov´eho kan´alu UART na poˇzadovan´e pa´ esˇn´e dokonˇcen´ı inicializace je signalizov´ano odesl´an´ım identirametry pˇrenosu. Uspˇ fikaˇcn´ıho bloku dat. Ten obsahuje definovanou konstantn´ı sekvenci a verzi firmware bootloaderu, jak bylo specifikov´ano v odstavci 3.5.2. N´aslednˇe bootloader vstupuje do nekoneˇcn´e smyˇcky, kde cˇ ek´a na pˇrijet´ı pˇr´ıkazu od klientsk´e aplikace, na jehoˇz z´akladˇe jsou vol´any patˇriˇcn´e funkce. Je-li pˇrijat neplatn´y pˇr´ıkaz, vrac´ı bootloader chybov´y k´od. Kaˇzd´a platn´a funkce d´ale vrac´ı k´od u´ spˇesˇn´eho proveden´ı, pˇr´ıpadnˇe specifick´y chybov´y k´od identifikuj´ıc´ı d˚uvod selh´an´ı. Z hlavn´ı smyˇcky bootloaderu jiˇz nen´ı moˇzn´e softwarovˇe spustit uˇzivatelskou aplikaci. Tato strategie byla zvolena, aby po zaveden´ı uˇzivatelsk´e aplikace bylo nutn´e prov´est hardwarov´y reset mikrokontrol´eru, coˇz zaruˇcuje uveden´ı jeho stavu do v´yrobcem definovan´eho v´ychoz´ıho stavu.
Obr´azek 3.14: V´yvojov´y diagram cˇ ek´an´ı na pˇr´ıkaz
58
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
3.6.4 Vymaz´an´ı aplikaˇcn´ı sekce V´yvojov´y diagram, kter´y specifikuje jednotliv´e element´arn´ı kroky pˇri maz´an´ı aplikaˇcn´ı sekce pamˇeti programu je na obr´azku 3.15. V programu mu odpov´ıd´a funkce: s t a t i c i n l i n e void F l a s h E r a s e ( void ) ;
Pˇred zapoˇcet´ım maz´an´ı se mus´ı nejdˇr´ıve odeslat a pˇrijmout ovˇeˇrovac´ı kl´ıcˇ . Porovn´an´ım se potvrd´ı proveden´ı operace. V opaˇcn´em pˇr´ıpadˇe je generov´an chybov´y k´od a funkce ukonˇcena. Cel´y proces se d´ale skl´ad´a ze dvou krok˚u. V prvn´ım dojde k postupn´emu vymaz´an´ı pˇr´ısluˇsn´ych str´anek pamˇeti programu a v druh´em prob´ıh´a ovˇeˇren´ı u´ spˇesˇnosti t´eto operace. Vlastn´ı proces maz´an´ı s vyuˇzit´ım instrukce SPM se realizuje makrem boot page erase() z hlaviˇckov´eho souboru boot.h, kter´y je souˇca´ st´ı standardn´ıch knihoven pˇrekladaˇce. Makro obsahuje pˇr´ısluˇsn´e instrukce v inline assembleru odpov´ıdaj´ıc´ı popisu v sekci 3.3.6. N´asleduje cˇ ek´an´ı na dokonˇcen´ı maz´an´ı prostˇrednictv´ım cˇ ten´ı stavu bitu SPMEN (viz. sekce 3.3.5). Po vymaz´an´ı str´anky je nezbytn´e okamˇzitˇe resetovat WDT, protoˇze operace maz´an´ı trv´a ˇra´ dovˇe 5 ms. ˇ ı Pouˇzit´ım instrukce maz´an´ı dojde k zablokov´an´ı cˇ ten´ı z RWW sekce pamˇeti. Cten´ mus´ı b´yt obnoveno vol´an´ım makra boot rww enable(). F´aze ovˇeˇren´ı pak spoˇc´ıv´a ve zpˇetn´em naˇcten´ı obsahu pamˇeti programu. Je-li vymaz´ana, mus´ı vˇsechny pamˇet’ov´e buˇnky obsahovat hodnotu FFhex . V takov´em pˇr´ıpadˇe funkce vrac´ı potvrzovac´ı k´od, jinak chybov´y k´od maz´an´ı pamˇeti.
3.6.5 Z´apis do aplikaˇcn´ı sekce Z´apis obrazu uˇzivatelsk´e aplikace do pamˇeti programu mikrokontrol´eru m˚uzˇ eme opˇet dekomponovat na jednoduˇssˇ´ı celky, jak ud´av´a v´yvojov´y diagram na obr´azku 3.16. Prakticky je u´ loha rozloˇzena do funkc´ı: s t a t i c i n l i n e void F l a s h W r i t e ( void ) ; s t a t i c i n l i n e void Flash ReceiveAndWriteImage ( a e b l c n t t DataToWrite ) ; s t a t i c i n l i n e void F l a s h W r i t e I m a g e I n f o ( const u i n t 3 2 t ImageSize , const u i n t 1 6 t CRC) ;
59
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Obr´azek 3.15: V´yvojov´y diagram vymaz´an´ı aplikaˇcn´ı sekce
60
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
V u´ vodu je prvnˇe pˇrijata informace o velikosti obrazu aplikace. Jako odpovˇed’ odes´ıl´a bootloader potvrzovac´ı sekvenci a po pˇrijet´ı jej´ı odpovˇedi generuje pˇr´ısluˇsn´y k´od. Pro pokraˇcov´an´ı z´apisu mus´ı souhlasit odeslan´y kl´ıcˇ s pˇrijat´ym a velikost aplikace s velikost´ı pamˇeti. Nesouhlas´ı-li kl´ıcˇ e, nebo je-li aplikace vˇetˇs´ı neˇz dostupn´a pamˇet’, dojde k vygenerov´an´ı chybov´eho k´odu a operace ukonˇcena. V opaˇcn´em pˇr´ıpadˇe dojde k potvrzen´ı velikosti a odesl´an´ı informace o pˇrij´ımac´ım bufferu bootloaderu. Velikost pˇrij´ımac´ıho bufferu je d˚uleˇzit´a pro dalˇs´ı komunikaci, kdy bootloader pˇrij´ım´a obraz aplikace v bloc´ıch o maxim´aln´ı d´elce odpov´ıdaj´ıc´ı velikosti bufferu. Je-li poˇcet zb´yvaj´ıc´ıch byt˚u pro zaps´an´ı vˇetˇs´ı neˇz nula, je oˇcek´av´an blok dat. A to o velikosti pˇrij´ımac´ıho bufferu v pˇr´ıpadˇe, zˇ e zb´yvaj´ıc´ı poˇcet byt˚u je vˇetˇs´ı nebo roven jeho velikosti. Obsah bufferu je n´aslednˇe po jednotliv´ych str´ank´ach zaps´an do pamˇeti a dokonˇcen´ı potvrzeno pˇr´ısluˇsnou odpovˇed´ı. Klientsk´a aplikace tak cˇ ek´a na potvrzen´ı z´apisu, cˇ´ımˇz je dosaˇzeno ˇr´ızen´ı toku dat. Plnˇen´ı doˇcasn´eho bufferu pro z´apis str´anky prov´ad´ı makro boot page fill(), jenˇz obsahuje pˇr´ısluˇsn´e vol´an´ı instrukce SPM v inline assembleru. Po naplnˇen´ı str´anky mus´ı b´yt proveden reset WDT a teprve potom inicializov´an z´apis str´anky makrem boot page write(). Na dokonˇcen´ı z´apisu se cˇ ek´a obdobn´ym zp˚usobem jako v pˇr´ıpadˇe maz´an´ı str´anky, a to cˇ ten´ım stavu bitu SPMEN. Po zaps´an´ı str´anky je opˇet resetov´an WDT. N´aslednˇe za potvrzen´ım u´ spˇesˇn´eho zaps´an´ı posledn´ı str´anky oˇcek´av´a bootloader pˇrijet´ı kontroln´ıho souˇctu obrazu aplikace, kter´y slouˇz´ı k ovˇeˇren´ı z´apisu. Pˇrijat´y kontroln´ı souˇcet se nejdˇr´ıve zap´ısˇe spolu s velikost´ı obrazu aplikace do vyhrazen´e posledn´ı str´anky aplikaˇcn´ı sekce. D´ale se mus´ı obnovit schopnost cˇ ten´ı ze sekce RWW vol´an´ım makra boot rww enable(). Teprve potom se m˚uzˇ e vypoˇc´ıtat kontroln´ı souˇcet zpˇetn´ym pˇreˇcten´ım pamˇeti programu a porovnat jej s pˇrijatou hodnotou. V pˇr´ıpadˇe souladu je odesl´ano potvrzen´ı spr´avn´eho z´apisu, v pˇr´ıpadˇe rozd´ıln´eho kontroln´ıho souˇctu se vrac´ı chybov´y k´od.
61
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Obr´azek 3.16: V´yvojov´y diagram z´apisu do aplikaˇcn´ı sekce
62
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
3.6.6
ˇ Cten´ ı konfiguraˇcn´ıch bytu˚
ˇ Cinnost funkce s t a t i c i n l i n e void Config Read ( void ) ;
vych´az´ı z diagramu na obr´azku 3.17(a). Na z´akladˇe adresy odpov´ıdaj´ıc´ı tablulce 3.6 jsou postupnˇe cˇ teny jednotliv´e konfiguraˇcn´ı byty instrukc´ı LPM (s patˇriˇcn´ym nastaven´ım registru SPMCSR) a pr˚ubˇezˇ nˇe odes´ıl´any. Funkce vyuˇz´ıv´a inline assembleru.
3.6.7
ˇ Cten´ ı podpisu MCU
V´yvojov´y diagram funkce s t a t i c void Signature Read ( void ) ;
zn´azorˇnuje obr´azek 3.17(b). Rozd´ıl oproti cˇ ten´ı konfiguraˇcn´ıch bit˚u spoˇc´ıv´a pouze v nastaven´ı registru SPMCSR a inkrementov´an´ı adresy.
3.6.8 Z´apis konfiguraˇcn´ıch bitu˚ pamˇeti programu Princip funkce s t a t i c void Lock Write ( void ) ;
zn´azorˇnuje diagram na obr´azku 3.17(c). Stejn´ym zp˚usobem, jako u maz´an´ı pamˇeti a z´apisu pamˇeti programu, se potvrd´ı proveden´ı operace. N´aslednˇe je z d˚uvod˚u popsan´ych v odstavci 3.5.8 maskov´an bit BLB02. Instrukce SPM inicializuje z´apis hodnoty a n´asleduje cˇ ek´an´ı na dokonˇcen´ı operace. Nezbytn´e u´ kony uzav´ır´a reset WDT. Konfiguraci registr˚u SPMCSR, Z a vloˇzen´ı instrukce SPM zprostˇredkov´av´a makro boot lock bits set().
3.6.9 Pomocn´e funkce V´ypoˇcet kontroln´ıho souˇctu Tato skupina pomocn´ych funkc´ı obstar´av´a v´ypoˇcet kontroln´ıho souˇctu k´odu uˇzivatelsk´e aplikace. Do n´ı spadaj´ı funkce:
63
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
ˇ ı konfiguraˇcn´ıch (a) Cten´
ˇ ı podpisu MCU (b) Cten´
byt˚u
(c) Z´apis konfiguraˇcn´ıch bit˚u pamˇeti programu
Obr´azek 3.17: V´yvojov´e diagramy cˇ ten´ı konfiguraˇcn´ıch byt˚u, podpisu MCU a z´apisu konfiguraˇcn´ıch bit˚u pamˇeti programu
64
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
65
s t a t i c u i n t 1 6 t GetFlashCRC ( a e b l c n t t L e n g t h ) ; s t a t i c i n l i n e b o o l Flash CheckCRC ( v o i d ) ;
Prvn´ı funkce vrac´ı kontroln´ı souˇcet pamˇeti programu, a to pro blok zaˇc´ınaj´ıc´ı na adrese 0000hex o d´elce specifikovan´e parametrem Length, kter´y vyjadˇruje poˇcet byt˚u. Je sd´ılena funkcemi Flash CheckCRC() a Flash Write(void). Vyuˇz´ıv´a makra crc ccitt update() z hlaviˇckov´eho souboru crc16.h, kter´y obsahuje bal´ık pˇrekladaˇce AVR-GCC. Makro vkl´ad´a optimalizovan´y v´ypoˇcet bez pouˇzit´ı lookup tabulky v inline assembleru. K´od se vyznaˇcuje mal´ymi n´aroky na pamˇet’ programu (ve srovn´an´ı s tabulkovou metodou) a relativnˇe vysok´ym v´ykonem. Volba byla provedena na z´akladˇe test˚u, jejichˇz v´ysledky popisuje tabulka 3.17. Srovn´an´ı bylo provedeno pro blok dat o d´elce 63232 B, coˇz odpov´ıd´a maxim´aln´ı velikosti aplikaˇcn´ı sekce u ATmega644. Poˇcet strojov´ych cykl˚u odpov´ıd´a pˇri taktu MCU 1 MHz dobˇe v´ypoˇctu v µ s. Zde je patrn´e, zˇ e implementace kontroln´ıho souˇctu o vyˇssˇ´ım poˇctu bit˚u nar´azˇ´ı na n´ızk´y v´ypoˇcetn´ı v´ykon MCU a vede na ne´unosnou d´elku v´ypoˇctu. Jako kompromisn´ı ˇreˇsen´ı mezi rychlost´ı v´ypoˇctu a velikost´ı v´ysledn´eho k´odu byl zvolen v´ypoˇcet CRC-16-CCITT bez lookup tabulky. Pˇri taktu 18,432 MHz, kter´y pouˇz´ıv´a modul CPU unit, tak dost´av´ame dobu v´ypoˇctu 125 ms. Strojov´ych cyklu˚
Velikost k´odu
C (lookup tabulka)
1 965 628
804 B
CRC-16-CCITT
crc16.h (avr-gcc)
2 358 744
314 B
CRC-32-IEEE 802.3
assembler (v´ypoˇcet)
6 158 531
226 B
CRC-32-IEEE 802.3
C (v´ypoˇcet)
9 303 029
320 B
Typ CRC
Implementace
CRC-16-CCITT
Tabulka 3.17: Srovn´an´ı n´arok˚u v´ypoˇct˚u kontroln´ıho souˇctu (63232 B, ATmega644) Druh´a funkce ovˇeˇruje kontroln´ı souˇcet uˇzivatelsk´e aplikace oproti u´ daj˚um zapsan´ym v posledn´ı str´ance aplikaˇcn´ı sekce. Funkci vol´a pouze hlavn´ı funkce main(), a proto byla oznaˇcena atributem inline, cˇ´ımˇz se eliminuje vol´an´ı a n´avrat z funkce. Potvrzen´ı operace ´ Ulohu potvrzen´ı proveden´ı operace, kterou vyˇzaduj´ı funkce Flash Erase(), Flash Write() a Lock Write(), byla sdruˇzena do pomocn´e funkce:
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
s t a t i c bool ConfirmOperation ( void ) ;
Ta je nav´az´ana na generov´an´ı kl´ıcˇ e funkcemi: s t a t i c i n l i n e void a e b l R a n d I n i t ( void ) ; s t a t i c i n l i n e u i n t 1 6 t aebl Rand ( void ) ;
Prvn´ı spouˇst´ı volnˇe bˇezˇ´ıc´ı sˇestn´actibitov´y cˇ asovaˇc pˇri startu bootloaderu. Druh´a generuje hodnotu na z´akladˇe stavu cˇ asovaˇce v okamˇziku vol´an´ı funkce ConfirmOperation(). Dle dˇr´ıve popsan´eho algoritmu se n´aslednˇe vypoˇc´ıt´a odpovˇed’ na vygenerovan´y kl´ıcˇ a ovˇeˇr´ı proti pˇrijat´e odpovˇedi. Watchdog cˇ asovaˇc Z hlediska moˇznosti volby intern´ıho nebo extern´ıho WDT vyuˇz´ıvaj´ı tyto funkce hojnˇe podm´ınˇen´y pˇreklad, cˇ´ımˇz je dosaˇzeno pˇrizp˚usoben´ı bootloaderu na m´ıru dan´emu WDT. K resetov´an´ı WDT slouˇz´ı v cel´em programu makro WDT Reset(). Na reset intern´ıho WDT staˇc´ı pouze jedna instrukce WDR, a tak se vkl´ad´a pˇr´ımo jako pˇr´ıkaz inline assembleru. Resetov´an´ı extern´ıho WDT typu MB3773 z hlediska cˇ asov´an´ı (odstavec 3.2.2) vych´az´ı znaˇcnˇe sloˇzitˇejˇs´ı, a tak je implementov´ano jako funkce: e x t e r n v o i d WDT ResetExt ( v o i d ) ;
Obvod MB3773 reaguje podle obr´azku 3.2 na sestupnou hranu sign´alu CK. Ze specifikac´ı [14] vych´az´ı nejkratˇs´ı moˇzn´a perioda sign´alu CK TCK = 20 µ s a nejmenˇs´ı sˇ´ıˇrka impulzu TCKW = 3,0 µ s. V n´avaznosti na pˇrenosovou rychlost s´eriov´e komunikace byla prodlevami nastavena minim´aln´ı perioda sign´alu CK TCK = 30 µ s a sˇ´ıˇrka impulzu TCKW = 15 µ s. Pˇri bitov´e rychlosti 115200 bit/s a deseti bitech jednoho r´amce (1 start, 8 datov´ych a 1 stop bit) tak pˇripadaj´ı dva resetovac´ı impulzy na cˇ asov´y interval potˇrebn´y k jejich pˇrenesen´ı. ´ Ukony nezbytn´e k inicializaci cˇ asovaˇce pˇri startu bootloaderu a souˇcasnˇe prvn´ı reset obsahuje funkce: s t a t i c i n l i n e v o i d WDT Init ( v o i d ) ;
U extern´ıho WDT MB3773 spoˇc´ıv´a inicializace v nastaven´ı pinu MCU pro ovl´ad´an´ı vstupu CK do funkce v´ystupu. Intern´ı WDT inicializaci nevyˇzaduje.
66
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Komunikace Obsluhu s´eriov´eho portu pro pˇrenos dat zprostˇredkov´avaj´ı pomocn´e funkce: extern void u a r t W r i t e B y t e ( const u i n t 8 t Data ) ; extern void u a r t I n i t ( void ) ; s t a t i c i n l i n e void uart WriteWord ( const u i n t 1 6 t Data ) ; extern u i n t 8 t uart ReadByte ( void ) ; s t a t i c i n l i n e u i n t 1 6 t uart ReadWord ( void ) ; s t a t i c i n l i n e u i n t 3 2 t uart ReadDWord ( v o i d ) ; extern void u a r t W r i t e B l o c k P ( u i n t 1 6 t Bytes , const void ∗ p B u f f e r ) ;
Komunikace prob´ıh´a v blokuj´ıc´ım reˇzimu bez vyuˇzit´ı pˇreruˇsen´ı. Vzhledem k nezanedbateln´emu cˇ asu, kter´y je nutn´y na odesl´an´ı cˇ i pˇr´ıjmu jednoho bytu, mus´ı b´yt br´an ohled na souˇcinnost s watchdog cˇ asovaˇcem. Z´akladem vˇsech funkc´ı jsou element´arn´ı uart WriteByte() pro vys´ıl´an´ı a uart ReadByte() pro pˇr´ıjem. Staˇc´ı tak ovl´ad´an´ı WDT implementovat v nich.
3.6.10 Konfigurace bootloaderu Pˇri implementaci bootloaderu byla snaha o moˇznost jeho pouˇzit´ı i v jin´em hardwarov´em ˇreˇsen´ı, neˇz je modul CPU unit. Pro pˇrizp˚usoben´ı dan´emu hardwaru slouˇz´ı konfiguraˇcn´ı soubor options.h a skript pˇrekladaˇce Makefile. Soubor Makefile obsahuje tˇri d˚uleˇzit´a nastaven´ı, kter´ymi jsou: MCU = a t m e g a 6 4 4 p F CPU = 18432000 BOOT ADDRESS = 0 xF800
Jak jiˇz n´azvy napov´ıdaj´ı, parametr MCU definuje konkr´etn´ı typ pouˇzit´eho mikrokontrol´eru a F CPU jeho taktovac´ı kmitoˇcet v Hz. Takt z´avis´ı na pouˇzit´em oscil´atoru a pˇr´ıpadnˇe nastaven´ı pˇreddˇeliˇcky. Parametr BOOT ADDRESS odpov´ıd´a poˇca´ teˇcn´ı adrese bootloaderu v bytech, kter´a se odv´ıj´ı od nastaven´ı konfiguraˇcn´ıch bit˚u BOOTSZ. Ostatn´ı nastaven´ı definuje soubor options.h. Prvn´ı skupinu tvoˇr´ı konfigurace s´eriov´e komunikace: # d e f i n e UART
0
# d e f i n e UART BAUD RATE
115200
67
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
# d e f i n e UART USE U2X
Parametr UART m´a v´yznam pouze u mikrokontrol´er˚u vybaven´ych v´ıce rozhran´ımi UART (napˇr´ıklad ATmega644P) a vyb´ır´a, kter´e rozhran´ı bude pouˇzito ke komunikaci bootloaderu. Parametr UART BAUD RATE nastavuje komunikaˇcn´ı rychlost. Sniˇzov´an´ı rychlosti pˇrenosu nem´a omezen´ı, ale pˇri zvyˇsov´an´ı se mus´ı poˇc´ıtat s cˇ asem potˇrebn´ym k resetov´an´ı extern´ıho watchdog cˇ asovaˇce, je-li pouˇzit. Pˇri pˇr´ıliˇs velk´e pˇrenosov´e rychlosti tak m˚uzˇ e doj´ıt k pˇreteˇcen´ı pˇrij´ımac´ıho bufferu. Parametr UART USE U2X definuje, je-li nastaven bit U2X v konfiguraˇcn´ım registru rozhran´ı UART. Druh´a skupina nastaven´ı definuje pouˇzit´y watchdog cˇ asovaˇc. M˚uzˇ e b´yt vybr´ana pouze jedna z moˇznost´ı: # d e f i n e WATCHDOG INTERNAL # d e f i n e WATCHDOG MB3773
D´ale n´asleduje volba mapov´an´ı vstupnˇe-v´ystupn´ıch sign´al˚u, jenˇz z´avis´ı na konkr´etn´ım zapojen´ı. Pin ERROR signalizuje chybn´y kontroln´ı souˇcet uˇzivatelsk´e aplikace: # d e f i n e AEBL ERROR PIN
4
# d e f i n e AEBL ERROR PORT
PORTD
# d e f i n e AEBL ERROR DDR
DDRD
Parametr AEBL ERROR PIN ud´av´a cˇ´ıslo pinu, AEBL ERROR PORT v´ystupn´ı registr a AEBL ERROR DDR registr nastavuj´ıc´ı funkci pinu. Druh´ym z´avazn´ym sign´alem je BOOT , definuj´ıc´ı podm´ınku vstupu do bootloaderu: # d e f i n e AEBL BOOT PIN
3
# d e f i n e AEBL BOOT PORT
PIND
Parametr AEBL BOOT PIN odpov´ıd´a cˇ´ıslu pinu a AEBL BOOT PORT pˇr´ısluˇsn´emu vstupn´ımu registru. Posledn´ı sign´al CK mus´ı b´yt nastaven pouze v pˇr´ıpadˇe, je-li pouˇzit extern´ı WDT typu MB3773: # d e f i n e MB3773 CK PIN
2
# d e f i n e MB3773 CK DDR
DDRD
# d e f i n e MB3773 CK PORT
PORTD
MB3773 CK PIN odpov´ıd´a cˇ´ıslu pinu, MB3773 CK PORT v´ystupn´ımu registru a parametr MB3773 CK DDR konfiguraˇcn´ımu registru.
68
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Posledn´ı sekce dovoluje povolen´ı cˇ i zak´az´an´ı maz´an´ı uˇzivatelsk´eho programu a z´apisu konfiguraˇcn´ıch bit˚u pamˇeti programu: # d e f i n e ENABLE ERASE FLASH # d e f i n e ENABLE WRITE LOCK
3.6.11 Kompilace K´od byl pˇrekl´ad´an a testov´an ve verzi pˇrekladaˇce AVR-GCC 4.3.2 s parametry, kter´e jsou definov´any ve skriptu Makefile. Podstatn´e parametry pˇrekladaˇce popisuje tabulka 3.18, parametry linkeru pak tabulka 3.19. Zdrojov´y k´od je ps´an v jazyce C, kter´y vyuˇz´ıv´a rozˇs´ıˇren´ı C99 (deklarace, inline funkce, typ bool), GNU (inline assember) a parametry specifick´e pro pˇrekladaˇc. Jejich podporu zap´ın´a parametr -std=gnu99. C´ılem ostatn´ıch parametr˚u je pˇredevˇs´ım um´ıstˇen´ı strojov´eho k´odu bootloaderu na pˇr´ısluˇsnou adresu v pamˇeti programu a minimalizace jeho v´ysledn´e velikosti. Toho bylo dosaˇzeno pˇredevˇs´ım vypuˇstˇen´ım linkov´an´ı standardn´ıch knihoven a nevyuˇzit´ych funkc´ı, kter´e mohou vzniknout n´asledkem podm´ınˇen´eho pˇrekladu v z´avislosti na konfiguraci. Parametr
Popis
-std=gnu99
povoluje standard C99 s GNU rozˇs´ıˇren´ımi
-Os
optimalizace na velikost v´ysledn´eho k´odu
-funsigned-char
definuje typ char jako neznam´enkov´y
-ffunction-sections
um´ıst´ı kaˇzdou funkci do samostatn´e sekce
-fdata-sections
um´ıst´ı kaˇzdou nelok´aln´ı promˇennou do samostatn´e sekce Tabulka 3.18: Parametry pˇrekladaˇce AVR-GCC
3.6.12 Konfigurace mikrokontrol´eru Ke spr´avn´e funkci bootloaderu mus´ı b´yt patˇriˇcnˇe nakonfigurov´an pouˇzit´y MCU prostˇrednictv´ım sv´ych fuse bit˚u. Pro vˇsechny typy MCU plat´ı nastaven´ı bitu
BOOTRST = 0, kter´y po resetu zajist´ı start MCU na adrese bootloaderu.
69
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Parametr
Popis
–section-start=.text=
um´ıst´ı poˇca´ tek k´odu na poˇzadovanou adresu
–gc-sections
odstran´ı nevyuˇzit´e funkce a promˇenn´e
-nostartfiles
zak´azˇ e vkl´ad´an´ı standardn´ıch inicializaˇcn´ıch sekc´ı
-nodefaultlibs
zak´azˇ e vkl´ad´an´ı v´ychoz´ıch knihoven
-nostdlib
zak´azˇ e vkl´ad´an´ı standardn´ıch knihoven Tabulka 3.19: Parametry linkeru AVR-GCC
Na konkr´etn´ım typu MCU z´avis´ı nastaven´ı bit˚u BOOTSZ, kter´e definuj´ı velikost sekce bootloaderu a souˇcasnˇe jej´ı poˇca´ tek. Bootloader vyˇzaduje sekci o velikosti 2048 B, coˇz u ATmega644 odpov´ıd´a nastaven´ı bit˚u BOOTSZ1 = 1 a BOOTSZ0 = 0. Pro zv´ysˇen´ı funkˇcn´ı bezpeˇcnosti by mˇely b´yt patˇriˇcnˇe nastaveny i konfiguraˇcn´ı bity pamˇeti programu (lock), a to s c´ılem zamezit poˇskozen´ı bootloaderu uˇzivatelskou aplikac´ı. Z´apis i cˇ ten´ı zak´azˇ e nastaven´ı bit˚u BLB11 = BLB12 = 0. Je-li poˇzadov´ana ochrana proti modifikaci cˇ i cˇ ten´ı obsahu pamˇeti programu a nonvolatiln´ı pamˇeti dat program´atorem (paraleln´ım cˇ i s´eriov´ym), mohou b´yt nastaveny bity
LB1 = LB2 = 0. Bit LB1 br´an´ı z´apisu, LB2 cˇ ten´ı. Tato funkce spad´a do problematiky informaˇcn´ı bezpeˇcnosti, protoˇze m˚uzˇ eme jednoduˇse zamezit zpˇetn´emu z´ısk´an´ı strojov´eho k´odu uˇzivatelsk´e aplikace z MCU. Doporuˇcen´e nastaven´ı konfiguraˇcn´ıch bit˚u mikrokontrol´eru ATmega644 v modulu CPU unit ud´av´a tabulka 3.20. Zohlednˇen je krystalov´y oscil´ator, extern´ı WDT a poˇzadavky na zabezpeˇcen´ı.
3.6.13 Konfigurace NE-4100T Nezbytn´y krok k uveden´ı cel´eho syst´emu do provozu spoˇc´ıv´a v nastaven´ı embedded serveru NE-4100T. Toho lze doc´ılit jednou z metod zm´ınˇen´ych v odstavci 2.1.5. Parametry NE-4100T m˚uzˇ eme rozdˇelit do dvou z´akladn´ıch skupin na nezbytn´e a voliteln´e, podle jejich n´avaznosti na funkˇcnost bootloaderu. Prvn´ı skupina parametr˚u mus´ı b´yt vˇzdy spr´avnˇe nakonfigurov´ana a jejich nastaven´ı ud´av´a tabulka 3.21. Z pohledu bezpeˇcnosti patˇr´ı k nezbytn´ym opatˇren´ım nastaven´ı povolen´ych IP adres, kter´e maj´ı pr´avo komunikovat se ser-
70
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Parametr
Hodnota
Popis
Fuse Low
11010111bin
Oscil´ator s pln´ym rozkmitem. Doba n´abˇehu 16K/14 CK.
Fuse High
10011100bin
Bootloader 2048 B; SPI; JTAG;
Extended Fuse
11111111bin
BOD vypnut.
Lock
11001100bin
Zak´az´ano cˇ ten´ı i z´apis program´atorem. Zak´az´an z´apis uˇzivatelsk´e aplikace do bootloaderu.
Tabulka 3.20: Konfigurace MCU ATmega644 v modulu CPU unit verem, a hesla pro zmˇenu jeho konfigurace. Voliteln´e parametry mohou b´yt nakonfigurov´any podle potˇreby uˇzivatele. Do t´eto skupiny patˇr´ı pˇredevˇs´ım voliteln´e zas´ıl´an´ı hl´asˇen´ı na email cˇ i prostˇrednictv´ım SNMP. Povolen´ım ud´alosti na zmˇenu sign´alu DCD tak m˚uzˇ eme dostat informaci v pˇr´ıpadˇe, zˇ e bootloader zablokuje spuˇstˇen´ı uˇzivatelsk´e aplikace v d˚usledku chybn´eho kontroln´ıho souˇctu. Aby zpr´ava obsahovala platnou cˇ asovou znaˇcku, mus´ı b´yt nakonfigurov´an i vestavˇen´y klient cˇ asov´eho serveru.
3.7 Softwarov´e vybaven´ı PC C´ılem aplikace pro PC je zpˇr´ıstupnˇen´ı funkc´ı vzd´alen´e spr´avy, kter´e poskytuje bootloader, koncov´emu uˇzivateli. Aby se nejednalo o samo´ucˇ eln´e ˇreˇsen´ı, byl cel´y probl´em rozdˇelen na nˇekolik hierarchicky navazuj´ıc´ıch cˇ a´ st´ı. Prvn´ı cˇ a´ st pˇredstavuje knihovnu z´akladn´ıch funkc´ı pro Ethernetovou komunikaci protokolem TCP/IP a na ni navazuje knihovna k ovl´ad´an´ı uˇzivatelsk´ych vstup˚u-v´ystup˚u embedded serveru NE-4100T. Na jejich rozhran´ı pak stav´ı nejpodstatnˇejˇs´ı cˇ a´ st, kterou reprezentuje knihovna k ovl´ad´an´ı bootloaderu. Ta vytv´aˇr´ı jednotn´e aplikaˇcn´ı rozhran´ı. Knihovnu nakonec vyuˇz´ıv´a v´ysledn´a uˇzivatelsk´a aplikace. V´yhoda tohoto dˇelen´ı spoˇc´ıv´a v moˇznosti jednoduˇse vyuˇz´ıt knihovnu v jin´em projektu, nebo ji portovat na odliˇsn´y operaˇcn´ı syst´em. Hierarchick´e dˇelen´ı nav´ıc napom´ah´a ke zv´ysˇen´ı pˇrehlednosti k´odu a v neposledn´ı ˇradˇe jednoduˇssˇ´ımu ladˇen´ı.
71
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Network Settings dle poˇzadavk˚u uˇzivatele Serial Settings - Port 1 Baud Rate
115200 (nebo dle uˇzivatelsk´e konfigurace bootloaderu)
Data Bits
8
Stop Bits
1
Parity
None
Flow Control
None
FIFO
Enable
Operating Settings - Port 1 Operation mode
TCP Server Mode
TCP alive check time
1 min
Max connection
1
Local TCP port
4001 (nebo dle poˇzadavk˚u uˇzivatele)
Delimiter 1, 2
Off
Digital IO - DIO Settings TCP Port
4002 (nebo dle poˇzadavk˚u uˇzivatele)
DIO 0
OUT - LOW
DIO 1
OUT - HIGH
SW Reset Function
Disable
Serial Command Mode
Disable
Accessible IP Settings, Password dle poˇzadavk˚u uˇzivatele Tabulka 3.21: Konfigurace NE-4100T - povinn´e parametry
72
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Jelikoˇz tvorba uˇzivatelsk´eho rozhran´ı nen´ı zcela j´adrem tohoto projektu, byla vytvoˇrena pouze jednoduch´a konzolov´a aplikace, kter´a vˇsak dovoluje vyuˇz´ıt veˇsker´e funkce bootloaderu. Pro praktickou realizaci byl zvolen jazyk C++ s pˇrekladaˇcem Microsoft Visual Studio 2008 a jako c´ılov´y port operaˇcn´ı syst´em Microsoft Windows.
3.7.1 Knihovna pro TCP komunikaci Z´akladem cel´e aplikace je pr´avˇe knihovna pro komunikaci TCP protokolem. C´ılem bylo vytvoˇrit jednotn´e rozhran´ı pro z´apis a cˇ ten´ı bloku dat. To reprezentuje tˇr´ıda CBlockTCP, jejiˇz veˇrejn´e metody jsou: v o i d C o n n e c t ( c o n s t char ∗ p A d d r e s s , WORD P o r t ) ; void Disconnect ( ) ; v o i d Recv ( char ∗ p B u f f e r , i n t Length , i n t TimeOut = INFINITE ) ; int
Send ( char ∗ p B u f f e r , i n t Length , i n t TimeOut = INFINITE ) ;
Tˇr´ıda CBlockTCP vych´az´ı z b´azov´e tˇr´ıdy CWinSock, kter´a zaruˇcuje inicializaci a uvolnˇen´ı syst´emov´e knihovny WinSock. Jak vypl´yv´a z n´azv˚u, metody Connect() a Disconnect() implementuj´ı pˇripojen´ı a odpojen´ı serveru na dan´e adrese a portu. Metody Recv() a Send() pak zprostˇredkov´avaj´ı pˇr´ıjem a odesl´an´ı bloku dat definovan´eho ukazatelem a d´elkou v bytech. Tˇret´ım parametrem je maxim´aln´ı cˇ asov´y interval v milisekund´ach pro vyprˇsen´ı operace. Knihovna tedy pracuje v blokuj´ıc´ım reˇzimu, protoˇze n´avrat z funkce probˇehne aˇz v okamˇziku, kdy je pˇrenesen poˇzadovan´y blok dat, nebo dojde k chybˇe. Chybov´e stavy jsou oˇsetˇreny formou v´yjimek reprezentovan´ych tˇr´ıdou EWSAError, kter´a oproti b´azov´e tˇr´ıdˇe exception uchov´av´a nav´ıc chybov´y k´od. Vnitˇrnˇe komunikaˇcn´ı metody vyuˇz´ıvaj´ı funkce WSASend() a WSARecv() v tzv. over” lapped“ reˇzimu, kter´y dovoluje definov´an´ı cˇ asov´eho intervalu pro vyprˇsen´ı operace.
3.7.2 Knihovna k ovl´ad´an´ı DIO portu NE-4100T Ovl´ad´an´ı vstupnˇe-v´ystupn´ıch port˚u serveru NE-4100T vyˇzaduje zas´ıl´an´ı pˇr´ıkaz˚u ve form´atu definovan´em v uˇzivatelsk´em manu´alu [1] na patˇriˇcn´em TCP portu. Form´at
73
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
pˇr´ıkazu a odpovˇedi specifikuje tabulka 3.22. Odpovˇed’ se liˇs´ı pouze v poli status, kter´e obsahuje n´avratov´y k´od a u pˇr´ıkazu nem´a v´yznam. V pˇr´ıpadˇe spr´avn´eho vykon´an´ı pˇr´ıkazu vrac´ı server hodnotu 00hex , ostatn´ı hodnoty znamenaj´ı chybu, jak popisuje tabulka 3.23. #
N´azev
Hodnota
Popis
1
pˇr´ıkaz
2
Identifik´ator pˇr´ıkazu (konstanta)
2
verze
2
Verze (konstanta)
3
status
[1..6, 255]
N´avratov´y k´od v pˇr´ıpadˇe odpovˇedi
4
d´elka dat
3
D´elka dat (konstanta)
5
data
[0..3]
ˇ ıslo DIO kan´alu C´
6
data
0, 1
Funkce (0 = vstup, 1 = v´ystup)
7
data
0, 1
´ Uroveˇ n v´ystupu (0 = low, 1 = high)
Tabulka 3.22: Form´at pˇr´ıkazu a odpovˇedi pro nastaven´ı DIO sign´alu NE-4100T [1]
Status
Popis
00hex
Pˇr´ıkaz u´ spˇesˇnˇe vykon´an
01hex
Nezn´am´a chyba pˇr´ıkazu
02hex
Pˇr´ıkaz nen´ı podporov´an touto verz´ı
03hex
Nesouhlas´ı d´elka dat
04hex
Neplatn´y m´od
05hex
Paket je pˇr´ıliˇs kr´atk´y
06hex
Neplatn´e cˇ´ıslo DIO portu
FFhex
Nezn´am´a chyba
Tabulka 3.23: N´avratov´e k´ody pˇr´ıkazu pro nastaven´ı DIO sign´alu NE-4100T [1] Na z´akladˇe popsan´e komunikace pracuje tˇr´ıda CMoxaGPIO, kter´a slouˇz´ı k ovl´ad´an´ı DIO sign´al˚u NE-4100T veˇrejn´ymi metodami: v o i d C o n n e c t ( c o n s t char ∗ p A d d r e s s , WORD P o r t ) ; void Disconnect ( void ) ; v o i d SetDIO ( char P o r t , GPIOMode Mode , G P I O S t a t e S t a t e , i n t TimeOut = INFINITE ) ;
74
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Metody Connect() a Disconnect() zajiˇst’uj´ı sestaven´ı a uzavˇren´ı spojen´ı se serverem. Metoda SetDIO() m´a na starosti nastaven´ı stavu DIO sign´alu urˇcen´eho parametrem Port. Funkci sign´alu definuje parametr Mode, kter´y m˚uzˇ e nab´yvat hodnot CMoxaGPIO::Output a CMoxaGPIO::Input. V pˇr´ıpadˇe v´ystupn´ıho m´odu pak nab´yv´a na funkˇcnosti parametr State, kter´y urˇcuje stav v´ystupu CMoxaGPIO::Low nebo CMoxaGPIO::High. Chybov´e stavy jsou opˇet oˇsetˇreny metodou v´yjimek tˇr´ıdy EMoxaGPIOError.
3.7.3 Knihovna rozhran´ı bootloaderu Aplikaˇcn´ı rozhran´ı tˇr´ıdy CAEBLtcp pro ovl´ad´an´ı bootloaderu obsahuje dvˇe skupiny funkc´ı. Prvn´ı skupina sdruˇzuje metody, kter´e mohou b´yt vol´any pouze, nen´ı-li bootloader aktivn´ı: void SetTimeOut ( i n t Value ) ; v o i d R e s e t T a r g e t ( c o n s t char ∗ p A d d r e s s , WORD GPIOPort ) ; WORD E n t e r B o o t L o a d e r ( c o n s t char ∗ p A d d r e s s , WORD GPIOPort , WORD D a t a P o r t );
Metoda SetTimeOut() nastavuje glob´aln´ı dobu vyprˇsen´ı komunikace, kterou specifikuje parametr Value v ms. Metoda ResetTarget() vyvol´a reset vzd´alen´eho syst´emu bez vstupu do bootloaderu. Nejd˚uleˇzitˇejˇs´ı metodou je EnterBootLoader() pro spuˇstˇen´ı bootloaderu. Parametry jsou adresa serveru NE-4100T, datov´y port a port uˇzivatelsk´ych vstup˚u-v´ystup˚u. N´avratov´a hodnota funkce ud´av´a verzi bootloaderu vzd´alen´eho syst´emu. Ostatn´ı metody mohou b´yt pouˇzity pouze po u´ spˇesˇn´em vol´an´ı EnterBootLoader(). V opaˇcn´em pˇr´ıpadˇe je generov´ana patˇriˇcn´a v´yjimka. Do t´eto skupiny patˇr´ı: void RunApplication ( void ) ; void F la sh Er as e ( void ) ; v o i d F l a s h W r i t e ( char ∗ pImage , i n t I m a g e S i z e ) ; v o i d L o c k W r i t e (BYTE Lock ) ; TAVRConfig C o n f i g R e a d ( v o i d ) ; DWORD S i g n a t u r e R e a d ( v o i d ) ;
Metoda RunApplication() je p´arov´y pˇr´ıkaz k EnterBootLoader(), kter´y zajist´ı ukonˇcen´ı bootloaderu a spuˇstˇen´ı uˇzivatelsk´e aplikace. Z tohoto d˚uvodu mus´ı b´yt vˇzdy vykon´an.
75
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Metody FlashErase() a FlashWrite() slouˇz´ı ke spr´avˇe obsahu pamˇeti programu. Prvn´ı prov´ad´ı jej´ı vymaz´an´ı, druh´a z´apis bin´arn´ıho obrazu, kter´y je d´an ukazatelem pImage a velikost´ı ImageSize v bytech. Metoda LockWrite() prov´ad´ı u´ lohu nastaven´ı konfiguraˇcn´ıch bit˚u pamˇeti programu na hodnotu danou parametrem Lock. V´yznam bit˚u odpov´ıd´a chov´an´ı uveden´emu v katalogov´em listu, kdy hodnota 0 znamen´a aktivovan´y bit a hodnota 1 neaktivovan´y. Zb´yvaj´ıc´ı metody slouˇz´ı ke cˇ ten´ı konfigurace a podpisu MCU. Konfiguraci reprezentuje struktura TAVRConfig s patˇriˇcn´ymi poloˇzkami. V pˇr´ıpadˇe chybov´ych stav˚u bootloaderu je generov´ana v´yjimka tˇr´ıdy EAEBLError, nebo nˇekter´a z dˇr´ıve uveden´ych, dojde-li k chybˇe na niˇzsˇ´ı u´ rovni.
3.7.4 Konzolov´a aplikace Fin´aln´ı konzolov´a aplikace aebltool“ tedy vyuˇz´ıv´a rozhran´ı tˇr´ıdy CAEBLtcp a je vy” tvoˇrena jako cˇ ist´a Win32 aplikace. Veˇsker´e pˇr´ıkazy lze specifikovat z pˇr´ıkazov´e ˇra´ dky, a to ve form´atu: aebltool.exe
[options] kde povinn´y parametr target address specifikuje IP adresu c´ılov´eho serveru NE-4100T. Druhou moˇznost´ı je zad´an´ı adresy ve tvaru dom´enov´eho jm´ena, kter´e se n´aslednˇe pˇreloˇz´ı na IP adresu prostˇrednictv´ım syst´emu DNS. Nepovinn´e parametry options ud´av´a tabulka 3.24. Jsou jimi cˇ´ısla TCP port˚u serveru NE-4100T v pˇr´ıpadˇe, liˇs´ı-li se od standardn´ıch hodnot pouˇz´ıvan´ych bootloaderem. Tˇret´ım parametrem je pˇr´ıkaz action, kter´y definuje cˇ innost poˇzadovanou od bootloaderu. Dostupn´e pˇr´ıkazy uv´ad´ı tabulka 3.24 a vˇzdy mus´ı b´yt definov´an pouze jeden pˇr´ıkaz. Pˇri z´apisu uˇzivatelsk´e aplikace n´asleduje za pˇr´ıkazem n´azev souboru, kter´y m´a b´yt pouˇzit jako obraz aplikace. Obsahuje-li n´azev souboru mezery, mus´ı b´yt opatˇren uvozovkami. Aplikace dovoluje pouˇz´ıt obraz v bin´arn´ım nebo Intel HEX form´atu, pˇriˇcemˇz form´at souboru je automaticky rozpozn´an. Rozpozn´an´ı typu souboru nen´ı zaloˇzen´e na pˇr´ıponˇe souboru, ale pracuje na principu testov´an´ı jeho obsahu. Nen´ı-li prvn´ı ˇra´ dek spr´avnˇe dek´odov´an, jako z´aznam typu Intel HEX, povaˇzuje se soubor za bin´arn´ı. U form´atu Intel HEX je z rozˇs´ıˇren´ych adresov´an´ı (pro obsah vˇetˇs´ı neˇz 216 B) podporov´an pouze z´aznam typu Start Segment Address Record s k´odem 03hex .
76
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Pˇr´ıkaz z´apisu konfiguraˇcn´ıch bit˚u pamˇeti programu vyˇzaduje za pˇr´ıkazem hodnotu, kter´a bude zaps´ana v hexadecim´aln´ım form´atu. Z´apis konfiguraˇcn´ıch bit˚u mus´ı b´yt nav´ıc n´aslednˇe opˇetovnˇe potvrzen uˇzivatelem, aby nedoˇslo k nechtˇen´emu z´apisu, a tak zablokov´an´ı funkc´ı bootloaderu. Pˇr´ıkaz (action) -r
Reset vzd´alen´eho zaˇr´ızen´ı
-e
Vymaz´an´ı uˇzivatelsk´e aplikace
-f:
Z´apis uˇzivatelsk´e aplikace
-ef:
Vymaz´an´ı a z´apis uˇzivatelsk´e aplikace
-c
ˇ ı konfigurace MCU Cten´
-s
ˇ ı podpisu MCU Cten´
-wl: Z´apis konfiguraˇcn´ıch bit˚u pamˇeti programu Volby (options) -gp:<port number>
DIO port serveru NE-4100T (v´ychoz´ı: 4002)
-dp:<port number>
Datov´y port serveru NE-4100T (v´ychoz´ı: 4001)
-t:
Doba vyprˇsen´ı komunikace [ms] (v´ychoz´ı: 5000)
Tabulka 3.24: Parametry pˇr´ıkazov´e ˇra´ dky uˇzivatelsk´e aplikace
Pˇr´ıklady pouˇzit´ı Vymaz´an´ı uˇzivatelsk´e aplikace bootloaderu s IP adresou 192.168.127.254: aebltool.exe 192.168.127.254 -e Z´apis obrazu uˇzivatelsk´e aplikace ze souboru demo.hex“ ve form´atu Intel HEX: ” aebltool.exe 192.168.127.254 -f:"demo.hex" Vymaz´an´ı aplikace a z´apis obrazu ze souboru demo.bin“ v bin´arn´ım form´atu: ” aebltool.exe 192.168.127.254 -ef:"demo.bin" Nastaven´ı konfiguraˇcn´ıch bit˚u pamˇeti programu na hodnotu CChex : aebltool.exe 192.168.127.254 -wl:CC Nestandardn´ı nastaven´ı port˚u (datov´y port 5000, DIO port 6000): aebltool.exe 192.168.127.254 -dp:5000 -gp:6000 -ef:"demo.bin"
77
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
4 V´ysledky Na z´akladˇe zvolen´eho ˇreˇsen´ı bylo vytvoˇreno softwarov´e vybaven´ı PC, firmware mikrokontrol´eru a deska ploˇsn´ych spoj˚u hardwarov´e cˇ a´ sti. Deska ploˇsn´ych spoj˚u byla n´aslednˇe osazena a zaˇr´ızen´ı oˇziveno. Pˇri testov´an´ı prototypu byly odhaleny drobn´e nedostatky na desce ploˇsn´ych spoj˚u. Prvn´ım probl´emem bylo chybn´e zapojen´ı signalizaˇcn´ıch LED diod rozhran´ı Ethernet z d˚uvodu pouˇzit´ı nespr´avn´e knihovny definuj´ıc´ı zapojen´ı LED na konektoru RJ-45. Druh´y nedostatek spoˇc´ıval v nedefinovan´em stavu sign´alu, kter´y ovl´ad´a pomocn´y tranzistor pro resetov´an´ı c´ılov´eho mikrokontrol´eru, v pr˚ubˇehu resetu modulu NE-4100T. Fin´aln´ı zapojen´ı bylo z tˇechto d˚uvod˚u patˇriˇcnˇe upraveno spr´avn´ym zapojen´ım signalizaˇcn´ıch LED a doplnˇen´ım o rezistor R6, kter´y definuje klidovou u´ roveˇn tranzistoru T1. U modulu NE-4100T byly pˇri testov´an´ı pozorov´any nepˇr´ıjemn´e vlastnosti. Za nejz´avaˇznˇejˇs´ı lze povaˇzovat hodnoty logick´ych u´ rovn´ı v´ystup˚u. Aˇckoliv m´a b´yt modul nap´ajen stabilizovan´ym napˇet´ım 5 V a dokumentace vˇsude uv´ad´ı u´ rovnˇe TTL [1], m´a logick´a u´ roveˇn 1 hodnotu 3,3 V. Mezi dalˇs´ı nev´yhody patˇr´ı vysok´y pˇr´ıkon, kter´y t´emˇeˇr nez´avis´ı na cˇ innosti serveru a bl´ızˇ´ı se v klidu maxim´aln´ımu deklarovan´emu pˇr´ıkonu 1,5 W [2]. Modul se nav´ıc znatelnˇe zahˇr´ıv´a. Funkce bootloaderu byly prakticky ovˇeˇreny na modulu CPU unit s mikrokontrol´erem ATmega644 a s extern´ım watch dog cˇ asovaˇcem, d´ale na MCU typu ATmega644 v konfiguraci s intern´ım WDT a nakonec na mikrokontrol´eru ATmega16 bez WDT. Posledn´ı MCU nav´ıc pracoval s niˇzsˇ´ım taktovac´ım kmitoˇctem o hodnotˇe 3,6864 MHz. Vyzkouˇseno bylo i sn´ızˇ en´ı pˇrenosov´e rychlosti na hodnotu 9600 bit/s. Komunikace byla testov´ana jednak pˇri pˇr´ım´em propojen´ı se s´ıt’ovou kartou PC a jednak pˇri vzd´alen´em spojen´ı prostˇrednictv´ım veˇrejn´e s´ıtˇe Internet. K ovˇeˇren´ı funkˇcnosti syst´emu kontroluj´ıc´ıho integritu uˇzivatelsk´e aplikace byl pouˇzit s´eriov´y program´ator. Pamˇet’ programu typu flash dovoluje v´ıcen´asobn´y z´apis do stejn´e oblasti, ale lze mˇenit pouze stav bitu s hodnotou 1“ na hodnotu 0“. S vyuˇzit´ım tohoto ” ” principu byl pozmˇenˇen k´od aplikace bez z´asahu do ostatn´ıch cˇ a´ st´ı. ´ esˇnˇe fungoval Ve vˇsech pˇr´ıpadech bootloader pracoval dle navrˇzen´ych poˇzadavk˚u. Uspˇ pˇri rekonfiguraci na HW s jin´ym MCU, jin´ym taktovac´ım kmitoˇctem i pˇrenosovou rych-
78
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
´ esˇn´y byl i test pˇri komunikaci s´ıt´ı Internet, kdy se na rozd´ıl od pˇr´ım´eho spojen´ı lost´ı. Uspˇ s´ıt’ov´ych karet znaˇcnˇe prodluˇzuj´ı cˇ asov´e odezvy, protoˇze m˚uzˇ e doj´ıt i k poˇskozen´ı cˇ i zahozen´ı nˇekter´ych r´amc˚u aktivn´ımi prvky na trase. Tyto stavy mus´ı b´yt vyˇreˇseny transportn´ım protokolem TCP, coˇz ale ovlivn´ı cˇ asovou odezvu. V pˇr´ıpadˇe pozmˇenˇen´ı uˇzivatelsk´e aplikace doˇslo ke spr´avn´e identifikaci rozd´ıln´eho kontroln´ıho souˇctu, a tak k zablokov´an´ı jej´ıho spuˇstˇen´ı. Pˇri spr´avn´e konfiguraci monitorov´an´ı sign´alu DCD, kter´y signalizuje chybu kontroln´ıho souˇctu, zas´ıl´a server NE-4100T hl´asˇen´ı o zmˇenˇe na poˇzadovanou emailovou adresu.
79
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
5 Z´avˇer V projektu byla rozebr´ana problematika vzd´alen´e spr´avy firmware mikrokontrol´er˚u ˇrady Atmel AVR s ohledem na zadan´e poˇzadavky. Na jejich z´akladˇe pak byl navrˇzen poˇzadovan´y hardware a software. Hardwarovou cˇ a´ st tvoˇr´ı modul propojuj´ıc´ı embedded server NE-4100T s deskou mikrokontrol´eru. Ten nav´ıc obsahuje sniˇzuj´ıc´ı mˇeniˇc napˇet´ı pro nap´ajen´ı zbytku zaˇr´ızen´ı a hodiny re´aln´eho cˇ asu, kter´e doplˇnuj´ı funkce modulu mikrokontrol´eru. Hardwarov´a cˇ a´ st proto u´ zce souvis´ı dodan´ym modulem CPU unit. Softwarov´e vybaven´ı se skl´ad´a z firmware mikrokontrol´eru a uˇzivatelsk´eho programu pro PC. Princip vzd´alen´e spr´avy firmware byl zaloˇzen na funkci Self Program Memory“, ” kterou disponuje vˇetˇsina mikrokontrol´eru Atmel AVR. Jedn´a se o princip maz´an´ı a z´apisu do pamˇeti programu prostˇrednictv´ım instrukce SPM vykon´avan´e z vyhrazen´e oblasti programem zvan´ym bootloader. Bootloader dovoluje prostˇrednictv´ım konfiguraˇcn´ıch parametr˚u pro pˇreklad adaptaci na r˚uzn´e typy mikrokontrol´er˚u rodiny Atmel AVR a s hardwarem je spjat pouze zp˚usobem propojen´ı se serverem NE-4100T. Teoreticky je tedy moˇzn´e pouˇz´ıt kter´ykoliv typ vybaven´y funkc´ı Self Program Memory“ s velikost´ı sekce bootloaderu 2 kB a s´eriov´ym roz” hran´ım. Prakticky byly testov´any obvody ATmega644P a ATmega16. Realizovan´e ˇreˇsen´ı dovoluje maz´an´ı a z´apis pamˇeti programu, z´apis konfiguraˇcn´ıch bit˚u (Lock Bits), cˇ ten´ı konfiguraˇcn´ıch bit˚u (Lock, Fuse Low, Fuse High, Extended Fuse) a cˇ ten´ı podpisu mikrokontrol´eru. Doplˇnkovou funkc´ı je kontrola integrity uˇzivatelsk´e aplikace ovˇeˇren´ım kontroln´ıho souˇctu. C´ılem tohoto opatˇren´ı je zamezit spuˇstˇen´ı poˇskozen´eho programu, a tak zv´ysˇit funkˇcn´ı bezpeˇcnost. Bootloader d´ale dovoluje pouˇzit´ı cˇ asovaˇce typu watch dog. T´ım m˚uzˇ e b´yt integrovan´a periferie, nebo extern´ı obvod typu MB3773. Z hlediska zabezpeˇcen´ı proti neopr´avnˇen´emu pˇr´ıstupu nebylo nalezeno uspokojiv´e ˇreˇsen´ı. Probl´em spoˇc´ıv´a pˇredevˇs´ım v embedded serveru NE-4100T, kter´y nedovoluje vyˇssˇ´ı u´ roveˇn zabezpeˇcen´ı neˇz filtrov´an´ı povolen´ych IP adres, coˇz tvoˇr´ı nejslabˇs´ı cˇ l´anek. Veˇsker´a uvaˇzovan´a dodateˇcn´a opatˇren´ı pak jiˇz nedok´azˇ´ı bezpeˇcnost zv´ysˇit.
80
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Reference [1] MOXA. NE-4100 Series User’s Manual. 2008/06. 121 s. [online]. [cit. 2009-03-03] URL: [2] MOXA. NE-4100 Series Datasheet. 2009/11. 2 s. [online]. [cit. 2010-01-03] URL: [3] MOXA. NE-4100 Series Serial Command Mode User’s Guide. 2004/11. 25 s. [online]. [cit. 2009-03-03] URL: [4] Tibbo Technology. Programmable Hardware Manual. 2010. 214 s. [online]. [cit. 2010-03-05] URL: [5] Soalle Systems. EZL-50M Datasheet. 2010. 2 s. [online]. [cit. 2010-03-05] URL: [6] AK-NORD. AK XXL Product Line Manual. Version 1.0. 91 s. [online]. [cit. 201003-05] URL: [7] FiveCo. FMod-TCP DB Datasheet. 2007/12. 1 s. [online]. [cit. 2010-03-05] URL: [8] Dost´alek, L. Velk´y pr˚uvodce protokoly TCP/IP a syst´emem DNS. 5. vyd´an´ı. Computer Press, 2008, ISBN: 978-80-251-2236-5 [9] INFORMATION SCIENCE INSTITUTE. Transmission Control Protocol. RFC 793, 1981. [online]. [cit. 2010-04-09] URL: [10] INFORMATION SCIENCE INSTITUTE. User Datagram Protocol. RFC 768, 1980. [online]. [cit. 2010-04-09] URL: [11] ATMEL. ATmega644 Preliminary. 2008/07. 376 s. [online]. [cit.2010-01-20]. URL: [12] ATMEL. AVR Instruction Set. 2007/09. 155 s. [online]. [cit.2010-01-20]. URL:
81
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
[13] WIZnet. W3150A Datasheet. 2004. 65 s. [online]. [cit. 2009-03-03] URL: [14] FUJITSU SEMICONDUCTOR. Power Supply Monitor with Watch-Dog Timer MB3773. 2004/09. 29 s. [online]. [cit. 2009-03-03] URL: [15] NATIONAL SEMICONDUCTOR. LP2950/LP2951 Series of Adjustable Micropower Voltage Regulators. 2009/06. 26 s. [online]. [cit.2010-01-20]. URL: [16] MOXA. NE-4100T recommend circuit design. 2004/05. 8 s. [online]. [cit. 2009-0303] URL: [17] NXP Semiconductors. PCF8563 Product data sheet. 2008/02. 32 s. [online]. [cit. 2010-03-21] URL: [18] NXP Semiconductors. User Manual for NXP Real Time Clocks PCF85x3, PCA8565 and PCF2123, PCA2125. 2008/12. 32 s. [online]. [cit. 2010-03-21] URL: [19] NXP Semiconductors. BAV74 High-speed double diode. 2004/01. 9 s. [online]. [cit. 2010-03-21] URL: [20] EPSON TOYOCOM. MC-306 Datasheet. 2 s. [online]. [cit. 2010-03-21] URL: [21] National Semiconductor. LM2674 Datasheet. 2005/02. 26 s. [online]. [cit. 2010-0304] URL: [22] MATSUTA. SMD Power Inductor SC/SCD Series. 2010. 1 s. [online]. [cit. 2010-0304] URL: [23] Amphenol. Modular Jacks. 2010. 29 s. [online]. [cit. 2010-03-04] URL:
82
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
˚ veliˇcin a zkratek Seznam symbolu, DHCP Dynamic Host Control Protocol DIL Dual In Line DIO digit´aln´ı vstup/v´ystup DLL dynamicky linkovan´a knihovna DoS Denial Of Service ESD Electrostatic Discharge HAL zˇ a´ rov´e c´ınov´an´ı JTAG Joint Test Action Group MAC Media Access Control MCU mikrokontrol´er NECI Network Enabler Configuration Interface NRWW No Read-While-Write RISC redukovan´a instrukˇcn´ı sada RWW Read-While-Write SPI Serial Peripheral Interface SMTP Simple Mail Transfer Protocol SNMP Simple Network Management Protocol UART univerz´aln´ı asynchronn´ı rozhran´ı WDT Watchdog Timer
83
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
84
Seznam pˇr´ıloh A Sch´ema zapojen´ı modulu CPU unit
85
B Sch´ema zapojen´ı modulu BOOT unit
86
C Desky ploˇsn´ych spoju˚ modulu BOOT unit
87
D Seznam souˇca´ stek
89
E Pˇrehled MCU rˇ ady Atmel AVR 8-bit
90
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
A Sch´ema zapojen´ı modulu CPU unit
85
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
B Sch´ema zapojen´ı modulu BOOT unit
86
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
C Desky ploˇsn´ych spoju˚ modulu BOOT unit
Obr´azek C.1: Deska ploˇsn´ych spoj˚u - vrstva Top“ ”
Obr´azek C.2: Deska ploˇsn´ych spoj˚u - vrstva Bottom“ ”
87
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Obr´azek C.3: Rozloˇzen´ı souˇca´ stek - vrstva Top“ ”
Obr´azek C.4: Rozloˇzen´ı souˇca´ stek - vrstva Bottom“ ”
88
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
D Seznam souˇca´ stek Oznaˇcen´ı
Souˇca´ stka
Pouzdro
R3, R4
rezistor 33Ω 5% 0, 25W
0207
R5
rezistor 270Ω 5% 0, 25W
SMD 1206
R7, R8
rezistor 680Ω 5% 0, 25W
SMD 1206
R1, R2, R6, R9, R10
rezistor 10kΩ 5% 0, 25W
SMD 1206
C8
kondenz´ator 12pF 5% 25V NP0
SMD 1206
C6, C7
kondenz´ator 100pF 2kV keramick´y
rozteˇc 5mm
C1
kondenz´ator 10nF 10% 50V X7R
SMD 1206
C2, C3, C9
kondenz´ator 100nF 10% 25V X7R
SMD 1206
C4, C5
kondenz´ator 22µ F 25V tantalov´y
SMD-D
C10
kondenz´ator 100µ F 10V tantalov´y
SMD-C
L1
c´ıvka MATSUTA SC75F-680 (68µ H, 0, 22Ω)
SC75F
IC1
LM2674-5.0
SO8
IC2
MOXA NE-4100T + 2x dutinkov´a liˇsta 1x13
IC3
PCF8563T
SO8
T1
tranzistor N-MOSFET typ BSS138
SOT23
D1
Schottkyho dioda KS24
DO-214AA
D2
dvojit´a dioda BAV74
SOT23
Q1
krystal MC-306 32768Hz CL = 12, 5pF
MC-306
G1
lithiov´a baterie CR2032 do DPS vertik´aln´ı
CR2032V
X1
nap´ajec´ı konektor, vidlice 2, 1mm do DPS
SCD-016
X2
z´asuvka RJ45 typ RJHS-5381
RJHS-5381
X4 aˇz X7
dutinkov´a liˇsta 1x20 pin˚u
89
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
90
E Pˇrehled MCU rˇ ady Atmel AVR 8-bit Mikrokontrol´er
Flash
EEPROM
SRAM
Self Program
UART
JTAG
[kB]
[kB]
[B]
Memory
ATtiny24 Automotive
2
0.125
128
Ano
0
Ano
ATtiny25 Automotive
2
0.125
128
Ano
0
Ne
ATtiny261 Automotive
2
0.125
128
Ano
0
Ne
ATtiny44 Automotive
4
0.25
256
Ano
0
Ne
ATtiny45 Automotive
4
0.25
256
Ano
0
Ne
ATtiny461 Automotive
4
0.25
256
Ano
0
Ne
ATtiny84 Automotive
8
0.5
512
Ano
0
Ne
ATtiny85 Automotive
8
0.5
512
Ano
0
Ne
ATtiny861 Automotive
8
0.5
512
Ano
0
Ne
ATmega16HVA
16
0.256
512
Ano
0
Ano
ATmega16HVB
16
0.512
1024
Ano
0
Ano
ATmega32HVB
32
1
2048
Ano
0
Ano
ATmega406
40
0.5
2048
Ano
0
Ne
ATmega4HVD
4
0.256
512
Ano
0
Ne
ATmega8HVA
8
0.256
512
Ano
0
Ne
ATmega8HVD
8
0.256
512
Ano
0
Ne
AT90PWM1
8
0.5
512
Ano
0
Ne
ATtiny12
1
0.0625
0
Ne
0
Ne
ATtiny13A
1
0.0625
64
Ano
0
Ne
ATtiny24
2
0.125
128
Ano
0
Ne
ATtiny24A
2
0.125
128
Ano
0
Ne
ATtiny25
2
0.125
128
Ano
0
Ne
ATtiny261
2
0.125
128
Ano
0
Ne
ATtiny28L
2
–
32
Ne
0
Ne
ATtiny43U
4
0.0625
256
Ne
0
Ne
ATtiny44A
4
0.25
256
Ano
0
Ne
ATtiny45
4
0.25
256
Ano
0
Ne
ATtiny461
4
0.25
256
Ano
0
Ne
ATtiny48
4
0.0625
256
Ano
0
Ne
ATtiny84
8
0.5
512
Ano
0
Ne
ATtiny85
8
0.5
512
Ano
0
Ne
ATtiny861
8
0.5
512
Ano
0
Ne
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Mikrokontrol´er
Flash
EEPROM
SRAM
Self Program
[kB]
[kB]
[B]
Memory
ATtiny88
8
0.0625
512
ATmega168 Automotive
16
0.5
ATmega169P Automotive
16
ATmega32C1 Automotive
91
UART
JTAG
Ano
0
Ne
1024
Ano
1
Ne
0.5
1024
Ano
1
Ano
32
1
2048
Ano
1
Ano
ATmega32M1 Automotive
32
1
2048
Ano
1
Ano
ATmega48 Automotive
4
0.25
512
Ano
1
Ne
ATmega64C1 Automotive
64
2
4096
Ano
1
Ano
ATmega64M1 Automotive
64
2
4096
Ano
1
Ano
ATmega88 Automotive
8
0.5
1024
Ano
1
Ne
ATtiny167 Automotive
16
0.5
512
Ano
1
Ne
ATmega169P
16
0.5
1024
Ano
1
Ano
ATmega329
32
1
2048
Ano
1
Ano
ATmega3290
32
1
2048
Ano
1
Ano
ATmega3290P
32
1
2048
Ano
1
Ano
ATmega329P
32
1
2048
Ano
1
Ano
ATmega649
64
2
4096
Ano
1
Ano
ATmega6490
64
2
4096
Ano
1
Ano
AT90PWM2
8
0.5
512
Ano
1
Ne
AT90PWM216
16
0.5
1024
Ano
1
Ne
AT90PWM2B
8
0.5
512
Ano
1
Ne
AT90PWM3
8
0.5
512
Ano
1
Ne
AT90PWM316
16
0.5
1024
Ano
1
Ne
AT90PWM3B
8
0.5
512
Ano
1
Ne
ATmega165P
16
0.5
1024
Ano
1
Ano
ATmega168
16
0.5
1024
Ano
1
Ne
ATmega168P
16
0.5
1024
Ano
1
Ne
ATmega16A
16
0.5
1024
Ano
1
Ano
ATmega325
32
1
2048
Ano
1
Ano
ATmega3250
32
1
2048
Ano
1
Ano
ATmega3250P
32
1
2048
Ano
1
Ano
ATmega325P
32
1
2048
Ano
1
Ano
ATmega328P
32
1
2048
Ano
1
Ne
ATmega32A
32
1
2048
Ano
1
Ano
ATmega48PA
4
0.25
512
Ano
1
Ne
´ ˇ RIC ˇ I´ TECHNIKY USTAV AUTOMATIZACE A ME Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Mikrokontrol´er
Flash
EEPROM
SRAM
Self Program
[kB]
[kB]
[B]
Memory
ATmega644
64
2
4096
ATmega645
64
2
ATmega6450
64
ATmega8
92
UART
JTAG
Ano
1
Ano
4096
Ano
1
Ano
2
4096
Ano
1
Ano
8
0.5
1024
Ano
1
Ne
ATmega8515
8
0.5
512
Ano
1
Ne
ATmega8535
8
0.5
512
Ano
1
Ne
ATmega88P
8
0.5
1024
Ano
1
Ne
ATmega88PA
8
0.5
1024
Ano
1
Ne
ATtiny2313
2
0.125
128
Ano
1
Ne
AT90CAN128 Automotive
128
4
4096
Ano
2
Ano
AT90CAN32 Automotive
32
1
2048
Ano
2
Ano
AT90CAN64 Automotive
64
2
4096
Ano
2
Ano
ATmega164P Automotive
16
0.5
1024
Ano
2
Ano
ATmega324P Automotive
32
1
2048
Ano
2
Ano
ATmega644P Automotive
64
2
4096
Ano
2
Ano
ATmega128
128
4
4096
Ano
2
Ano
ATmega1281
128
4
8192
Ano
2
Ano
ATmega1284P
128
4
16K
Ano
2
Ano
ATmega162
16
0.5
1024
Ano
2
Ano
ATmega164P
16
0.5
1024
Ano
2
Ano
ATmega164PA
16
0.5
1024
Ano
2
Ano
ATmega2561
256
4
8192
Ano
2
Ano
ATmega324P
32
1
2048
Ano
2
Ano
ATmega324PA
32
1
2048
Ano
2
Ano
ATmega64
64
2
4096
Ano
2
Ano
ATmega644P
64
2
4096
Ano
2
Ano
ATmega1280
128
4
8192
Ano
4
Ano
ATmega2560
256
4
8192
Ano
4
Ano
ATmega640
64
4
8192
Ano
4
Ano