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 Report

Transcript 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