Linuks programiranje u realnom vremenu - UVOD · P1.1 Uvod P1.2 Linuks u namenskim sistemima - Uvod...

22
Univerzitet u Novom Sadu Fakultet tehničkih nauka Odsek za računarsku tehniku i računarske komunikacije Linuks programiranje u realnom vremenu 2017/2018 Uvod

Transcript of Linuks programiranje u realnom vremenu - UVOD · P1.1 Uvod P1.2 Linuks u namenskim sistemima - Uvod...

Page 1: Linuks programiranje u realnom vremenu - UVOD · P1.1 Uvod P1.2 Linuks u namenskim sistemima - Uvod i razvojno okruženje 28.11.2017 utorak Dan02 Predavanje P2.1 Karakterni uređaji

Univerzitet u Novom Sadu

Fakultet tehničkih nauka

Odsek za računarsku tehniku i računarske komunikacije

Linuks programiranje u realnom vremenu 2017/2018

Uvod

Page 2: Linuks programiranje u realnom vremenu - UVOD · P1.1 Uvod P1.2 Linuks u namenskim sistemima - Uvod i razvojno okruženje 28.11.2017 utorak Dan02 Predavanje P2.1 Karakterni uređaji

LINUKS PROGRAMIRANJE U REALNOM VREMENU

Uvod

2

Page 3: Linuks programiranje u realnom vremenu - UVOD · P1.1 Uvod P1.2 Linuks u namenskim sistemima - Uvod i razvojno okruženje 28.11.2017 utorak Dan02 Predavanje P2.1 Karakterni uređaji

Opšte informacije (1/2)

Predmet: Linuks programiranje u realnom vremenu

Fond:

Predavanja: 40

Vežbe: 40

Nastavnik:

Prof. dr. Miroslav Popović [email protected]

3

Page 5: Linuks programiranje u realnom vremenu - UVOD · P1.1 Uvod P1.2 Linuks u namenskim sistemima - Uvod i razvojno okruženje 28.11.2017 utorak Dan02 Predavanje P2.1 Karakterni uređaji

Obrazovni cilj

Razvoj Linuks rukovalaca uređajima

Detaljan pregled unutrašnje strukture i rada operativnog sistema Linuks

Primena u aplikacijama u realnom vremenu

Poseban naglasak na upotrebi i specifičnostima Linuksa u namenskim sistemima (ugrađenim u automobile, telefone, televizore...), a ne samo u sistemima opšte namene.

5

Page 6: Linuks programiranje u realnom vremenu - UVOD · P1.1 Uvod P1.2 Linuks u namenskim sistemima - Uvod i razvojno okruženje 28.11.2017 utorak Dan02 Predavanje P2.1 Karakterni uređaji

Stečena znanja

Osposobljenost za projektovanje komponenata jezgra Linuks operativnog sistema i rad na projektima za razvoj Linuks rukovalaca uređajima

Sposobnost za integraciju komponenti jezgra sa drugim delovima jezgra i korisničkim aplikacijama

Fokus na razvoju rukovalaca uređajima za namenske računarske strukture i personalne računare

6

Page 7: Linuks programiranje u realnom vremenu - UVOD · P1.1 Uvod P1.2 Linuks u namenskim sistemima - Uvod i razvojno okruženje 28.11.2017 utorak Dan02 Predavanje P2.1 Karakterni uređaji

Predmet obuhvata (1/2)

Uvod u jezgro Linuks operativnog sistema, detalji izvornog koda jezgra.

Podešavanje, prevođenje i učitavanje Linuks jezgra.

Moduli Linuks jezgra.

Rukovanje memorijom i pristup ulazno-izlaznim jedinicama.

Rukovaoci uređaja karakternog tipa.

Rukovaoci uređaja blokovskog tipa.

DMA

Procesi, raspoređivanje, čekanje na resurse, rukovanje prekidima, zaključavanje.

7

Page 8: Linuks programiranje u realnom vremenu - UVOD · P1.1 Uvod P1.2 Linuks u namenskim sistemima - Uvod i razvojno okruženje 28.11.2017 utorak Dan02 Predavanje P2.1 Karakterni uređaji

Predmet obuhvata (2/2)

Tehnike otklanjanja grešaka u razvoju komponenata jezgra.

Arhitektura jezgra za rukovaoce uređajima (Ilustracija na mnogim primerima u jezgru).

Detalji pokretanja jezgra.

Prilagođavanje Linuks jezgra za drugu platformu.

Rukovanje potrošnjom.

Realno vreme u Linuks namenskim sistemima.

8

Page 9: Linuks programiranje u realnom vremenu - UVOD · P1.1 Uvod P1.2 Linuks u namenskim sistemima - Uvod i razvojno okruženje 28.11.2017 utorak Dan02 Predavanje P2.1 Karakterni uređaji

Primena u oblastima

Softver za automobilsku industriju

Internet of Things

Digitalna TV

9

Page 10: Linuks programiranje u realnom vremenu - UVOD · P1.1 Uvod P1.2 Linuks u namenskim sistemima - Uvod i razvojno okruženje 28.11.2017 utorak Dan02 Predavanje P2.1 Karakterni uređaji

Zahvalnica

Materijali su bazirani na kursevima kompanije Free Electrons:

Embedded Linux

Linux kernel and driver development

10

Page 11: Linuks programiranje u realnom vremenu - UVOD · P1.1 Uvod P1.2 Linuks u namenskim sistemima - Uvod i razvojno okruženje 28.11.2017 utorak Dan02 Predavanje P2.1 Karakterni uređaji

Načini ocenjivanja

Student može maksimalno da osvoji 100 poena

10% poena za pohađanje nastave (prisustvo na predavanjima i laboratorijskim vežbama)

60% poena za projekat

30% poena za ispit iz teorije

Napomene:

Predispitne obaveze nose 70% i mogu se realizovati isključivo u toku bloka

Mora se realizovati minimalno 25% predispinih obaveza da bi se uopšte moglo izaći na ispit, ali se tada mora osvojiti svih 30% na ispitu, da bi se dobila ocena 6.

11

Page 12: Linuks programiranje u realnom vremenu - UVOD · P1.1 Uvod P1.2 Linuks u namenskim sistemima - Uvod i razvojno okruženje 28.11.2017 utorak Dan02 Predavanje P2.1 Karakterni uređaji

Platforma korišćena na kursu

12

Osim na prve 3 vežbe, koristi se Raspberry Pi 2

Broadcom BCM2836 SoC

900MHz ARMv7 Quad Core, Broadcom VideoCore IV GPU

1 GB RAM

Proširiv 40-pinski GPIO konektor

Video/Audio izlaz (3.5mm, HDMI)

Memorija: microSD

4 x USB2.0, 10/100 Ethernet (RJ45)

27 x GPIO, UART, I2C bus, SPI bus, +3.3V, +5V, Ground

Napajanje: 5V @ 600 mA

Linuks kernel, alati, dokumentacija, dizajn i dr:

https://github.com/raspberrypi

Page 13: Linuks programiranje u realnom vremenu - UVOD · P1.1 Uvod P1.2 Linuks u namenskim sistemima - Uvod i razvojno okruženje 28.11.2017 utorak Dan02 Predavanje P2.1 Karakterni uređaji

Pažljivo rukujte sa RPI

Ništa od dodataka ne priključujte dok je RPI pod napajanjem

Ne isključujte ploču samo otkačivanjem napajanja:

Ako je sistem aktivan, uvek koristite komandu reboot za

restart

Ako je sistem aktivan, uvek koristite komandu halt za

isključivanje, pa potom isključite napajanje

13

Page 14: Linuks programiranje u realnom vremenu - UVOD · P1.1 Uvod P1.2 Linuks u namenskim sistemima - Uvod i razvojno okruženje 28.11.2017 utorak Dan02 Predavanje P2.1 Karakterni uređaji

Komponente korišćene na kursu

Raspberry Pi 2:

http://bit.ly/1EMd405

Nintendo Nunchuck sa adapterom:

http://bit.ly/2eCsPkH

http://bit.ly/2f76UTj

Žice za prespajanje (“ženski” konektor):

http://bit.ly/2frzijt

USB serijski kabel/adapter (“ženski” konektor):

http://bit.ly/2eCs1w0

USB Eternet adapter:

http://bit.ly/2fsLezs

14

Page 15: Linuks programiranje u realnom vremenu - UVOD · P1.1 Uvod P1.2 Linuks u namenskim sistemima - Uvod i razvojno okruženje 28.11.2017 utorak Dan02 Predavanje P2.1 Karakterni uređaji

Učestvujte

Za vreme predavanja i vežbi...

Ne ustručavajte se da postavite pitanje. Ostali možda imaju sličnu nedoumicu.

Ovo pomaže i nastavnicima da otkriju objašnjenje koje nije bilo dovoljno jasno ili detaljno.

Ne ustručavajte se da podelite i vaše iskustvo na Linuks ili drugom OS.

Vaš pogled na probleme je najbitniji jer je sličan pogledu kolega, a različit od pogleda nastavnika.

Vaše učešće može kurs učiniti interaktivnijim, zanimljivijim, te lakšim za savladati.

15

Page 16: Linuks programiranje u realnom vremenu - UVOD · P1.1 Uvod P1.2 Linuks u namenskim sistemima - Uvod i razvojno okruženje 28.11.2017 utorak Dan02 Predavanje P2.1 Karakterni uređaji

Savet – zapisujte vaše komande!

Za vreme vežbi, zapisujte sve bitne komande u tekstualnu datoteku:

Može vam uštedeti dosta vremena zbog ponovnog korišćenja komandi na kasnijim vežbama.

Pravite referencu za pamćenje komandi u budućnosti.

Naročito je korisno za zadržavanje podešavanja komandne linije koja ste koristili ranije.

Takođe je pogodno i prilikom traženja pomoći od asistenta koji tada može da vidi sve komande koje ste pokretali. 16

Page 17: Linuks programiranje u realnom vremenu - UVOD · P1.1 Uvod P1.2 Linuks u namenskim sistemima - Uvod i razvojno okruženje 28.11.2017 utorak Dan02 Predavanje P2.1 Karakterni uređaji

Sarađujte

Saradnja za vreme vežbi je bitna za ovaj kurs, kao što je bitna u Free Software i Open Source zajednici:

Ukoliko završite vežbe pre ostalih, ne ustručavajte se da pomognete drugim kolegama i istražite probleme sa kojima se oni suočavaju.

Što brže napredujete kao grupa, više vremena će ostajati za istraživanje dodatnih stvari.

Kada je to potrebno, objasnite drugima kako ste vi nešto razumeli. To takođe pomaže i vama da učvrstite svoje znanje.

Ne ustručavajte se da svom asistentu prijavite potencijalne greške.

Ne ustručavajte se da rešenje problema potrežite i na Internetu. 17

Page 18: Linuks programiranje u realnom vremenu - UVOD · P1.1 Uvod P1.2 Linuks u namenskim sistemima - Uvod i razvojno okruženje 28.11.2017 utorak Dan02 Predavanje P2.1 Karakterni uređaji

Komandna linija - podsetnik

Ovaj podsetnik nudi primere najčešće korišćenih komandi (pretraga datoteka, raspakivanje tar arhive...)

Najvažniji savet: u šelu komandne linije, uvek koristite taster Tab za

dovršavanje imena komandi i putanja do datoteka. Ovako izbegavate i do 95% grešaka u kucanju.

Preuzmite elektronsku kopiju podsetnika na:

http://free-electrons.com/doc/training/embedded-linux/command_memento.pdf

18

Page 19: Linuks programiranje u realnom vremenu - UVOD · P1.1 Uvod P1.2 Linuks u namenskim sistemima - Uvod i razvojno okruženje 28.11.2017 utorak Dan02 Predavanje P2.1 Karakterni uređaji

Agenda – prva nedelja radna nedelja 48

19

Datum Aktivnost L4: 15:00

27.11.2017 ponedeljak Dan01 Predavanje

P1.1 Uvod P1.2 Linuks u namenskim sistemima - Uvod i razvojno okruženje

28.11.2017 utorak Dan02 Predavanje

P2.1 Karakterni uređaji P2.2 Blokovski uređaji i DMA

29.11.2017 sreda Dan03 Predavanje

P3.1 Linuks uređaj i model rukovaoca P3.2 Primer Linuks uređaja - komunikacija sa I2C uređajem P3.3 Radni okviri kernela za rukovaoce uređaja

30.11.2017 četvrtak Dan04 Vežba L1 Priključivanje i konfigurisanje RPI platforme i okruženja

01.12.2017 petak Dan05 Vežba L2 Pisanje i prevođenje modula

02.12.2017 subota

03.12.2017 nedelja

Page 20: Linuks programiranje u realnom vremenu - UVOD · P1.1 Uvod P1.2 Linuks u namenskim sistemima - Uvod i razvojno okruženje 28.11.2017 utorak Dan02 Predavanje P2.1 Karakterni uređaji

Agenda – druga nedelja radna nedelja 49

20

Datum Aktivnost L4: 15:00

04.12.2017 ponedeljak Dan06 Predavanje

P4.1 Rukovanje memorijom - U/I memorija i portovi, MISC podsistem P4.2 Procesi, raspoređivanje i prekidi P4.3 Konkurentni pristup resursima - zaključavanje

05.12.2017 utorak Dan07 Predavanje

P5.1 Debagovanje P5.2 Portovanje P5.3 Upravljanje potrošnjom

06.12.2017 sreda Dan08 Predavanje P6 Realno vreme u Linuks namenskim sistemima

07.12.2017 četvrtak Dan09 Vežba

L3 Model uređaja – I2C uređaj (nunchuck vežba 1), Korišćenje I2C magistrale (nunchuck vežba 2), Sprega sa ulaznim podsistemom (nunchuck vežba 3)

08.12.2017 petak Dan10 Vežba L4 Sistemska vremenska kontrola - spavanje, prekidi, zaključavanje (deo 1)

09.12.2017 subota

10.12.2017 nedelja

Page 21: Linuks programiranje u realnom vremenu - UVOD · P1.1 Uvod P1.2 Linuks u namenskim sistemima - Uvod i razvojno okruženje 28.11.2017 utorak Dan02 Predavanje P2.1 Karakterni uređaji

Agenda – treća nedelja radna nedelja 50

21

Datum Aktivnost L4: 15:00

11.12.2017 ponedeljak Dan11 Vežba L5 Sistemska vremenska kontrola - spavanje, prekidi, zaključavanje (deo 2)

12.12.2017 utorak Dan12 Vežba L6 Realno vreme - vremenske kontrole i kašnjenje raspoređivanja - PREEMPT_RT

13.12.2017 sreda Dan13 Projekat L7 Realno vreme - vremenske kontrole i kašnjenje raspoređivanja - Xenomai

14.12.2017 četvrtak Dan14 Projekat Proj1 Uart

15.12.2017 petak Dan15 Projekat Proj2 Uart

16.12.2017 subota

17.12.2017 nedelja

Page 22: Linuks programiranje u realnom vremenu - UVOD · P1.1 Uvod P1.2 Linuks u namenskim sistemima - Uvod i razvojno okruženje 28.11.2017 utorak Dan02 Predavanje P2.1 Karakterni uređaji

Agenda – četvrta nedelja radna nedelja 51

22

Datum Aktivnost L4: 15:00

18.12.2017 ponedeljak Dan16 Odbrana Proj3 Uart

19.12.2017 utorak

20.12.2017 sreda Dan17 Odbrana Odbrana projekta (60 bodova)

21.12.2017 četvrtak

22.12.2017 petak Dan18 Test Teorijski test (30 bodova)

23.12.2017 subota

24.12.2017 nedelja