Riistvarapõhine programmeerimine Loeng 1 Sissejuhatus Sissejuhatus Kursuse ülesehitus Riistvaralähedase programmeerimise sisu Riistvaralähedase programmeerimise eripära Laborid 02/07/2004 ID218 Riistvaralähedane programmeerimine Kursuse ülesehitus I Loengud 32 t Praktikum 16t Iseseisev töö 32 t Andres Mulin, [email protected] 02/07/2004 ID218 Riistvaralähedane programmeerimine Kursuse ülesehitus Assembleri keel Protsessorite ehitus RISC.
Download ReportTranscript Riistvarapõhine programmeerimine Loeng 1 Sissejuhatus Sissejuhatus Kursuse ülesehitus Riistvaralähedase programmeerimise sisu Riistvaralähedase programmeerimise eripära Laborid 02/07/2004 ID218 Riistvaralähedane programmeerimine Kursuse ülesehitus I Loengud 32 t Praktikum 16t Iseseisev töö 32 t Andres Mulin, [email protected] 02/07/2004 ID218 Riistvaralähedane programmeerimine Kursuse ülesehitus Assembleri keel Protsessorite ehitus RISC.
Slide 1
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 2
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 3
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 4
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 5
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 6
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 7
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 8
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 9
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 10
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 11
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 12
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 13
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 14
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 15
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 16
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 17
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 18
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 19
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 20
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 21
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 22
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 23
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 24
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 25
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 26
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 27
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 28
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 29
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 30
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 31
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 32
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 2
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 3
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 4
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 5
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 6
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 7
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 8
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 9
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 10
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 11
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 12
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 13
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 14
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 15
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 16
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 17
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 18
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 19
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 20
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 21
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 22
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 23
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 24
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 25
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 26
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 27
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 28
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 29
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 30
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 31
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32
Slide 32
Riistvarapõhine
programmeerimine
Loeng 1
Sissejuhatus
Sissejuhatus
Kursuse ülesehitus
Riistvaralähedase programmeerimise
sisu
Riistvaralähedase programmeerimise
eripära
Laborid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Kursuse ülesehitus I
Loengud
16
32 t
Praktikum
8
16t
Iseseisev töö
32 t
Andres Mulin, [email protected]
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Kursuse ülesehitus
Assembleri keel
Protsessorite ehitus
RISC Protsessor (ARM)
8051
02/07/2004
ID218 Riistvaralähedane
programmeerimine
4
Riistvaralähedase
programmeerimise sisu I
Mis on arvuti
Mis on programm
Mis on masinakeel
Kursuse sisu
02/07/2004
ID218 Riistvaralähedane
programmeerimine
5
Mis on arvuti
1.
2.
3.
4.
5.
Transistorid/mikroskeemid
Loogilised lülitid (AND, OR, ...)
Komponendid (Registrid,
summaatorid, ...)
Protsessor, mälu, sisend/väljund
seadmed
Arvutisüsteem
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Mis on programm
Suur programm
Moodul
Funktsioon
Liides
02/07/2004
10 000 rida
10
100
1000
ID218 Riistvaralähedane
programmeerimine
7
Programmeerija valikud
Kõrgkeeled
Arvuti
C, C++,
riistvara
Pascal, Java,...
“Ilus programm”
02/07/2004
ID218 Riistvaralähedane
programmeerimine
Masinakeel
8
Mis on masinakeel I
Kõrgkeel
Arvuti käsustik
(arhitektuur)
Masinakeel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Mis on masinakeel II
Kõrgkeel (näiteks C++):
Aeglane
Liiga palju
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Mis on masinakeel II
01010101
1000101111101100
100000111110110000001000
01010011
01010110
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Mis on masinakeel IV
“Ilus programm” (Kõrgkeel, näiteks C++)
Kompilaator
Masinakood
02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Mis on Assembleri keel
Push
bx
Mov
bx, ax
Sub
08
Push
cx
Push
dx
02/07/2004
ID218 Riistvaralähedane
programmeerimine
13
Kursuse sisu
Arvuti programmi täitmise
riistvaralised aspektid
Masinakeele (Assembleri)
tarkvaralised aspektid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
14
Riistvaralähedase
programmeerimise eripära I
Raske kirjutada
Tihedalt seotud riistvaraga
Peamiselt liidesed või funktsioonid
02/07/2004
ID218 Riistvaralähedane
programmeerimine
15
Miks raske kirjutada
Õppimiseks keeruline (Ei ole
inimeste keel)
Pikk kood (3 kuni 100 korda pikem)
Lihtne eksida
Puudub tagasiside arvutiga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Miks tihedalt seotud
riistvaraga
Sobib ainult teatud seadmele
Taaskasutamine praktiliselt võimatu
Riistvara vahetamisel tuleb vahetada
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liidesed ja funktsioonid I
Loogilised ja äriotsused võtab vastu
kõrgkeele programm
Nende otsuste täide viimisega
tegeleb madalama taseme
programm
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liidesed ja funktsioonid II
Andur
Lugeda näit ()
Aju
Kõrgkeel (C++)
Klapp
Avada klapp ()
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
The Decimal System
1*102 + 2*101 +3*100
100 + 20 +3
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
The Binary Numbering System
1*27+1*26+0*25+0*24+1*23+
+0*22+1*21+0*20
128 + 64 + 8 + 2
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
The Hexadecimal System
02/07/2004
ID218 Riistvaralähedane
programmeerimine
22
Infoühikud I
Bit
Nibble
Bait (byte)
Sõna (Word)
Topeltsõna (Double Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
23
Infoühikud II
Bait (byte)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
24
Infoühikud III
Sõna (Word)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
25
Laborid I
8051 mikrokontroller,
Liewenthal electronics
Philipsi mikrokontroller P89C669
SDCC kompilaator
FlashMagic
02/07/2004
ID218 Riistvaralähedane
programmeerimine
26
Laborid II
P89C664
CPU 80C51
Sagedus 11 MHz
6 või 12 takti tsükli peale
64 KB Flash ja 2 KB RAM
3 taimerit
I2C (liides)
PCA (loendurite maatriks)
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Laborid III
Mikrokontroller
RS232 järjestikliides
Väline 32 KB RAM
I2C 2KB EEPROM
2x16 LCD näidik
16 nupuga klaviatuur
8 valgusdioodi
1-wire siin termoanduriga ja seerialnumbriga
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Laborid IV
02/07/2004
ID218 Riistvaralähedane
programmeerimine
29
Laborid V
Kontrolleriga tutvumine, programme laadimine.
1t
Välise mäluregistrisse (absolute address)
kirjutamine/lugemine.
1t
Protsessori seadmete kasutamine (taimer ja UART)
2t
Kahe registriga (Control ja Data, LCD) välisseadme
kasutamine.
2t
Katkestuse programmeerimine (klaviatuur).
4t
C programmi optimeerimine, assembleri lisamine
2t
ARM näited
4t
02/07/2004
ID218 Riistvaralähedane
programmeerimine
30
Kokkuvõte
Riistvaralähedane programmeerimine
- kõrgkeele ja riistvara vahekiht
Tihedalt seotud riistvaraga
Kasutatakse peamiselt liideste ja
funktsioonide kirjutamiseks
Assembleri keel
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Kirjandus
Randall Hyde. Art of Assembly
Language http://webster.cs.ucr.edu
Steve Furber. ARM System-on Chip
Architecture, Addison-Wesley, 419 p.
2000
A. Toomsalu. RISC mikroprotsessorite
arhitektuur, TTÜ, 1994
J. Duntemann. Assembly Language
Step-by-Step, Wiley, 640 p. 2000
02/07/2004
ID218 Riistvaralähedane
programmeerimine
32