Linuks programiranje u realnom vremenu - UVOD · P1.1 Uvod P1.2 Linuks u namenskim sistemima - Uvod...
Transcript of Linuks programiranje u realnom vremenu - UVOD · P1.1 Uvod P1.2 Linuks u namenskim sistemima - Uvod...
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
LINUKS PROGRAMIRANJE U REALNOM VREMENU
Uvod
2
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
Opšte informacije (2/2)
Predavač:
Vladimir Marinković [email protected]
Asistenti:
Nemanja Fimić [email protected]
Nenad Šoškić [email protected]
4
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
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
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
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
Primena u oblastima
Softver za automobilsku industriju
Internet of Things
Digitalna TV
9
Zahvalnica
Materijali su bazirani na kursevima kompanije Free Electrons:
Embedded Linux
Linux kernel and driver development
10
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
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
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
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
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
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
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
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
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
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
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
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