1 Device driver. 2 Hardware Operating Systeem Prog1Prog2 System calls/ API Device drivers Gebruiker afschermen van de hardware.

Slides:



Advertisements
Verwante presentaties
PROS2 Les 13 Programmeren en Software Engineering 2.
Advertisements


Embedded systemen Embedded software.
PROS2 Les 2 Programmeren en Software Engineering 2.
Extern Geheugen Lol.
Hoofdstuk 8: Recursie.
Ronde (Sport & Spel) Quiz Night !
BESTURINGS SYSTEMEN Vincent Naessens.
Arduino project.
Opleiding ICT © J.W. Jonker Dia 1/22 Systemen Besturingssoftware Windows XP Mark van Heck.
PROS2 Les 11 Programmeren en Software Engineering 2.
GESPRG Les 14 Gestructureerd programmeren in C. 174 Details! The devil is in the details.
F. Rubben NI Lookout 1 06/RIS/05 - NI Lookout VTI Brugge F. Rubben, ing.
Naar het Jaareinde toe

Phoenix Contact ILC150ETH F. Rubben, Ing.. Phoenix Contact ILC150ETH F. Rubben, Ing.
Opleiding ICT © J.W. Jonker Dia 1/19 Systemen Besturingssoftware Windows XP Mark van Heck.
1 Voorwaarden hergebruik Modulair ontwerp Low coupling High cohesion.
Numerieke Natuurkunde
MICPRG Les 11 Microcontroller Programmeren in C. 112 Datastructuren in C Werkgeheugen (PC en microcontroller): Statische datastructuren (vaste grootte):
GESPRG Les 7 Gestructureerd programmeren in C. 92 Verwisselen Schrijf een functie waarmee twee int variabelen verwisseld kunnen worden. void wissel(int.
Designing Knowledge Systems b Hoofdstuk 11 van Knowledge Engineering and Management. The CommonKADS Methodology. b A.Th. Schreiber, J.M. Akkermans, A.A.Anjewierder,
Inleiding programmeren in C++ Life Science & Technology 2 februari Universiteit Leiden.
Werken aan Intergenerationele Samenwerking en Expertise.
Hoe werkt een rekenmachine?
1 Datastructuren Introductie tot de programmeeropgaven in C++ Jan van Rijn
Best8-1 Les 8: Input/Output [Lat: datarum initus exitusque]
P. 1 Vakgroep Informatietechnologie Scanf voorbeeld #include int main(void) { int i=-1,j=-1,k=-1,l=-1; int b; b=scanf("%d %d %d %d",&i,&j,&k,&l); printf("res=%d.
Deel I: Programmeertaal C 6. Arrays en Pointers
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 3 - onderwerpen Het.
Presentatie Het BIOS (wat is dat) Rondkijken in het BIOS
1 ICT Infrastructuren 19 november 2007 David N. Jansen.
Power PC Assembler. Assembler toolkit bevat Assembler zelf Linkerlibrarian.
Operating Systems Informatica.
M A K E Y O U R N E T W O R K S M A R T E R July, Middag programma.
Voorrangsregels bij rekenen (1)
De financiële functie: Integrale bedrijfsanalyse©
Tircms02-p les 7 systemcalls linux vervolg. Inleiding Onder /usr/include/linux staan bestanden die de linuxkernel o.a. gebruikt om drivers aan te spreken.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 2 definitie.
HOGESCHOOL ROTTERDAM / CMI Computersystemen 2 (TIRCCMS02 - Operating systems)
HOGESCHOOL ROTTERDAM / CMI Computersystemen 2 (TIRCCMS02 - Operating systems)
1 Zie ook identiteit.pdf willen denkenvoelen 5 Zie ook identiteit.pdf.
Tircms02-p les 4 Preprocessor In- en uitvoer Diversen.
De Block Gilles Dedeyne Michiel Nimmegeers Bjorn
Mail: (of Sheets en verdere info: Onderwerp: vervolg C
Basisfuncties Operating System.
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  programma draaien vanuit ROM.
Tircms02-p les 3 Functies Strings Structuren. Functies 1. main() 2. { int k; k = 10 ; printf(“%d\n”,fac(k)); } 3. int fac(n) int n; 4. { int f; f= 1;
tircms02-p les 1 Operating Systems practicum
Tircms03-p les 4 Klassen. Abstracte datatypes in C struct stack { char info[100]; int top; }; void reset(stack *s) { s->top = -1; } void push(stack *s,
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 3 redirection,
Les 1: Zaterdag 10 mei 2014 Wim Peeters
HOGESCHOOL ROTTERDAM / CMI Computersystemen 2 (TIRCCMS02 - Operating systems)
JAVA: een platformonafhankelijke taal
VPEMSY1, D3ECPT2 : ARM Assembler 1 Hogeschool Utrecht / Electrical Engineering & Design 1  Herhaling: CMP, CMN,
PEMSY1http:// 1  Herhaling nieuwe instructies van vorige week  nieuw: combineren van assembler en C  oefeningen: assembler.
Besturingssysteem Vaak wordt de Engelse term gebruikt: Operating System ( OS ) Plaats van het OS in een computersysteem: Hardware Applicatie Operating.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag top-down decompositie Opdrachten:
2TPRJ8 – hardware en ontwikkelomgeving Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Wouter van Ooijen Mail:
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Wouter van Ooijen Mail: Sheets.
Instructie Programmeren Task 7
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Een embedded systeem: ARM bord.
 C++ heeft een inheritance mechanisme  Manier om functionaliteit te ‘erfen’ van een parrent class ◦ Polymorphisme ◦ Zoals we het ook in C# kennen.
1 februari Web concepts formulieren. 2 File i/o (input) $filename = “FILE_IO.CSV” ;// naam van het bestand $filesize = filesize( $filename )
Studie en implementatie van input replay Cornelis Frank.
Operating Systems Informatica.
Computersystemen 2 (TIRCCMS02 - Operating systems)
Computersystemen 2 (TIRCCMS02 - Operating systems)
Wat gaan we doen? Herhaling ARM assembler instructies
Besturingssysteem.
Transcript van de presentatie:

1 Device driver

2 Hardware Operating Systeem Prog1Prog2 System calls/ API Device drivers Gebruiker afschermen van de hardware

3 Introductie Een device driver is een computer programma dat direct communiceert met een resource. Voorbeelden zijn: printerdriver, filedriver, displaydriver,…. Is de vertaalslag tussen het operating systeem en de applicaties die gebruik maken van de devices. Een devicedriver werkt in de kernelmode.

4 Het maken van een apparaat zoals verwacht is een lastige taak. Waarom werken met device drivers. Het toevoegen van drivers onder het operatingsysteem biedt de bescherming en veiligheid die nodig is voor het aansturen door malafide gebruikers. => Fouten in hardware wordt door de software (driver) gecorrigeerd. Device drivers zijn in principe gelinkte libraries In plaats van elke keer het programma te veranderen biedt het o.s. de mogelijkheid om op eenvoudige wijze een andere device te benaderen.

55 Interfacing device drivers B: met een standaard interface A: zonder een standaard interface

6 File abstractie Wat doe je met een device ? Lezen en schrijven Alleen lezen of alleen schrijven Voorbeelden: USB device, CD ROM, LED display Wat doe je met een file? Open, close, read, write,.. File is een uitstekende abstracte device.

7 Voorbeeld int fd; char cbuf; fd=open(“/dev/tty”, O_RDONLY,0); read(fd, &cbuf, 1); close(fd);

8 crw-rw-rw- 1 root root 1, :28 null brw-rw root disk 8, :28 sda brw-rw root disk 8, :28 sda1 brw-rw root disk 8, :28 sda2 Device Nummers voor “last modification” zijn de major en minor device- nummers van een bepaald device. Major nummers identificeren de drivers die overeenkomen met de device. b.v. sda, sda1 en sda2 hebben dezelfde device Minor nummers worden gebruikt door de kernel om precies te bepalen naar welke apparaat verwezen wordt.  b.v. een onderscheid maken tussen verschillende partities op een harddisk /dev/sda, / dev/sda1, / dev/sda2 hebben allemaal dezelfde major, maar verschillende minor nummers.  Wordt intern gebruikt voor indexering

9 Device type Toegankelijk via een stroom van bytes( zoals in een file) Vb: usb, modem,.. Een network Devices Een Block Devices Via een systeem buffer die functioneert als een data-cache. Voorbeeld Harddisk controllers Een Character Devices

10 User programma & Kernel Interface

11 Device driver interface

12 Device driver interface

13 Kernel Modules Versus Applicaties Kernel modules zijn event-driven User-level applicaties kunnen functies aanroepen die niet gedefinieerd zijn. Gebruik maken van externe library's Kernel module kan alleen gelinkt worden met kernel functies b.v: printk is de versie van printf wordt binnen de kernel gedefinieerd. Gebruik in de kernel module dus geen user-level library's zoals stdio.h Vergeet na disabelen van de interrupts deze niet te enabelen

14 User Space Versus Kernel-Space Een kernel module run in kernel-space, waar applicatie run in user- space Een applicatie kan zich verplaatsen van user- space naar kernel-space b.v. het aanroepen van een system-call Driver code moet re-entrant zijn. Een functie heet re-entrant als hij op ieder willekeurig punt onderbroken kan worden en een nieuwe “kopie” opgestart zonder elkaar in de weg te zitten.

15 int global_variable = 1; int f() { global_variable = global_variable + 2; return g_var; } If multiple threads call f() concurrently the result is unpredictable int g() { return f() + 2; } g() calls a non-reentrant function f(). Voorbeeld van niet re-entrant code

16 int f(int i) { return i + 2; } int g(int i) { return f(i) + 2; } Voorbeeld van niet re-entrant code

17 Driver User mode Kernel mode

18 Read en Write Methoden in linux Read en write kopieeren van en naar applicatie code. prototypes ssize_t read(struct file *filp, char __user *buff, size_t count, loff_t *offp); ssize_t write(struct file *filp, const char __user *buff, size_t count, loff_t *offp); filp: File pointer count: Grootte van de user buffer. buff: Pointer naar de user buffer Offp : offset binnen de file sss

19 Read en Write Methoden in linux Wees voorzichtig bij het omgaan met user / kernel data transfers User buffer pointers kunnen illegaal zijn Er kan een page-fault veroorzaakt worden (data is alleen virtueel aanwezig, dus niet in RAM). Pointers kunnen malvious zijn. Er zijn speciale functies die veilige data transfare verzorgt tussen de user en de kernel ruimte. unsigned long copy_to_user(void __user *to, const void *from, unsigned long count); unsigned long copy_from_user(void *to, const void __user *from, unsigned long count); sss

20 Read en Write Methoden in linux

21 Application process Operating System: dev/xyz Device driver Physical Device hardware Application process Device driver Physical Device hardware Algemene systemen versus embedded systemen

22 FILE *fp = fopen(LCD_NAME, ); fprintf(fp, "test"); Device tabel flags dev "w“ Aanroep van de driver open() close() read() write()

Hoe te werk gaan 1:Creëer de device-header file die de registers beschrijft (dit is de interface file) 2: Implementeer de driver functionaliteit 3: Test de driver (m.b.v. de main) 4:Integreer de driver.

device driver voor de HAL (NIOS II) Character-mode devices Timer devices File subsystems Ethernet devices DMA devices Flash memory devices Devices

Driverfuncties tabel

FILE *fp = fopen(LCD_NAME, ); Device tabel open() close() read() flags dev "w“ Aanroep van de driver write() alt_fd alt_dev int alt_dev_reg( alt_dev* dev );

Driverfuncties tabel schrijf( ) { } alt_fd*,const chr*,int int

_fd.h register adressen_reg.h declaraties voor de driver.hdeclaraties Diverse.h files.

alt_sys_int.c Opstarten van drivers:

NIOS II Software developer’s Handbook Hoofdstuk 7