Upload
hathuy
View
233
Download
3
Embed Size (px)
Citation preview
Univerzitet u Novom Sadu
Fakultet tehničkih nauka
Odsek za računarsku tehniku i računarske komunikacije
Linuks programiranje u realnom vremenu 2016/2017
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.
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
Nemojte oštetiti vaš 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 Predavanja
28.11.2016 ponedeljak
Dan01 Predavanje
P1.1 Uvod P1.2 Linuks u namenskim sistemima - Uvod i razvojno okruženje - I deo
29.11.2016 utorak
Dan02 Predavanje
P2.1 Linuks u namenskim sistemima - Uvod i razvojno okruženje - II deo P2.2 Linuks uređaj i model rukovaoca
30.11.2016 sreda
Dan03 Predavanje
P3.1 Primer Linuks uređaja - komunikacija sa I2C uređajem P3.2 Radni okviri kernela za rukovaoce uređaja
01.12.2016 četvrtak
Dan04 Vežba L1 Priključivanje i konfigurisanje RPI platforme i okruženja
02.12.2016 petak
Dan05 Vežba L2 Pisanje i prevođenje modula
03.12.2016 subota
04.12.2016 nedelja
Agenda – druga nedelja radna nedelja 49
20
Datum Aktivnost Predavanja
05.12.2016 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
06.12.2016 utorak
Dan07 Predavanje
P5.1 Debagovanje P5.2 Portovanje P5.3 Upravljanje potrošnjom
07.12.2016 sreda
Dan08 Predavanje P6 Realno vreme u Linuks namenskim sistemima
08.12.2016 četvrtak
Dan09 Vežba L3 Model uređaja – I2C uređaj (nunchuck vežba 1)
09.12.2016 petak
Dan10 Vežba L4 Korišćenje I2C magistrale (nunchuck vežba 2)
10.12.2016 subota
11.12.2016 nedelja
Agenda – treća nedelja radna nedelja 50
21
Datum Aktivnost Predavanja
12.12.2016 ponedeljak
Dan11 Vežba L5 Sprega sa ulaznim podsistemom (nunchuck vežba 3)
13.12.2016 utorak
Dan12 Vežba L6 Sistemska vremenska kontrola - spavanje, prekidi, zaključavanje
14.12.2016 sreda
Dan13 Projekat Proj1 Uart
15.12.2016 četvrtak
Dan14 Projekat Proj2 Uart
16.12.2016 petak
Dan15 Projekat Proj3 Uart
17.12.2016 subota
18.12.2016 nedelja
Agenda – četvrta nedelja radna nedelja 51
22
Datum Aktivnost Predavanja
19.12.2016 ponedeljak
Dan16 Odbrana Odbrana projekta (60 bodova)
20.12.2016 utorak
21.12.2016 sreda
Dan18 Test Teorijski test (30 bodova)
22.12.2016 četvrtak
23.12.2016 petak
24.12.2016 subota
25.12.2016 nedelja