+ All Categories
Home > Documents > Device Drivers

Device Drivers

Date post: 06-Feb-2016
Category:
Upload: tabib
View: 56 times
Download: 0 times
Share this document with a friend
Description:
Device Drivers. B. Ramamurthy. Introduction. A device driver is computer program that allows a system to interface with hardware devices. Example driver: printer driver, bluetooth driver Example devices: your IPRE robot, USB stick - PowerPoint PPT Presentation
Popular Tags:
20
B. RAMAMURTHY 5/24/2013 Amrita-UB-MSES-2013-15 1 Device Drivers
Transcript
Page 1: Device Drivers

B. RAMAMURTHY

5/24/2013Amrita-UB-MSES-2013-15

1

Device Drivers

Page 2: Device Drivers

Introduction

5/24/2013Amrita-UB-MSES-2013-15

2

A device driver is computer program that allows a system to interface with hardware devices.

Example driver: printer driver, bluetooth driver Example devices: your IPRE robot, USB stick It is a translator between the operating system

and applications the use the devices and the devices.

A typical operating system has many device drivers built into it.

A device driver converts general IO instructions into device specific operations.

Device drivers operate in a privileged mode requires careful design

Page 3: Device Drivers

Why Device Driver?

5/24/2013Amrita-UB-MSES-2013-15

3

A typical computing system (lap top, computer, cell phone, PDA, Point of sale system) deals with a variety of devices.

Making a hardware device work as expected is a cumbersome task.

Instead adding this code every application, operating system provides a single point interface for all devices by hosting the device drivers.

Adding it under the operating systems provides the protection and security needed for the device drivers from malicious use.

The device drivers are essentially shared dynamically linked libraries.

Page 4: Device Drivers

File abstraCtion

5/24/2013Amrita-UB-MSES-2013-15

4

What do you with a device? {read, write}, {read only}, {write only}

Lets look at some examples: USB device, CD-ROM, LED Display,

What do you do with a file? open, close, read, write, ..

File is an excellent abstraction for devices.

Page 5: Device Drivers

/dev partial listing

5/24/2013Amrita-UB-MSES-2013-15

5

total 380 lrwxrwxrwx 1 root 30 Mar 7 2004 allkmem -> ../devices/pseudo/mm@0: allkmem lrwxrwxrwx 1 root 27 Aug 15 2001 arp -> ../devices/pseudo/arp@0:arp lrwxrwxrwx 1 root 7 Aug 15 2001 audio -> sound/0 lrwxrwxrwx 1 root 10 Aug 15 2001 audioctl -> sound/0ctl lrwxrwxrwx 1 root 11 Oct 4 03:06 bd.off -> /dev/term/b drwxr-xr-x 2 root 512 Aug 17 2001 cfg lrwxrwxrwx 1 root 31 Aug 15 2001 conslog -> ../devices/pseudo/log@0 :conslog lrwxrwxrwx 1 root 30 Aug 15 2001 console -> ../devices/pseudo/cn@0: console drwxr-xr-x 2 root 512 Aug 15 2001 cua drwxr-xr-x 2 root 2048 Aug 31 2002 dsk lrwxrwxrwx 1 root 29 Aug 15 2001 dump -> ../devices/pseudo/dump@0:d ump lrwxrwxrwx 1 root 50 Aug 15 2001 ecpp0 -> ../devices/pci@1f,4000/eb us@1/ecpp@14,3043bc:ecpp0 lrwxrwxrwx 1 root 8 Aug 15 2001 fb0 -> fbs/ffb0 drwxr-xr-x 2 root 512 Aug 15 2001 fbs dr-xr-xr-x 2 root 528 Nov 9 11:51 fd lrwxrwxrwx 1 root 30 Apr 7 2002 fssnapctl -> ../devices/pseudo/

Page 6: Device Drivers

Device SPACE

5/24/2013Amrita-UB-MSES-2013-15

6

Typically there are multiple devices of the same type.

All the devices controlled by the same device driver is given the same “major number”

A “minor number” distinguishes among the devices of the same type.

Example: printers have a major number since purpose is same, minor# is denote a specific printer

Page 7: Device Drivers

Examples from XINU

5/24/2013Amrita-UB-MSES-2013-15

7

Take a look at files in the include directory: device.h tty.h uart.h Also in the system directory devtable.c, initialize.c Bottom line is this, for a device xyz:1. Include a file in include directory: xyz.h

-- define the operations/functions for the device2. Add a directory xyz -- implement all functions each in its own file3. Add an entry in the devtable.c for the device (note that

this has the “minor” device number along with other things)

Page 8: Device Drivers

Lets Analyze the XINU UART Driver

5/24/2013Amrita-UB-MSES-2013-15

8

Starting point: uart.h in include directoryuart directory functionssystem directory devtable.c, initialize.cUsage of the devices is through device table:Ex: pdev = &devtab[i]; (pdevinit)(pdev);

Page 9: Device Drivers

UART Driver in EXINU9

1. General device driver related files: device.h, devtable.c

2. Uart files: uart.h defining the physical features of the uart

3. All the files in the uart directory that implement the operations related to the uart.

uartControl.c uartInit.c uartIntr.c uartPutChar.c uartWrite.c uartGetChar.c

uartRead.c

5/24/2013Amrita-UB-MSES-2013-15

Page 10: Device Drivers

Device Drivers10

On board devices are called internal peripherals and one outside are called external peripherals UART Chip (internal) TTY (external)

UART transceiverRS232D-9 connector laptop serial socket WRT54GL board and modifications

5/24/2013Amrita-UB-MSES-2013-15

Page 11: Device Drivers

Device drivers (contd.)11

Embedded processor interacts with a peripheral device through a set of control and status registers.

Registers are part of the peripheral device.Registers within a serial controller are

different from those in a timer.These devices are located in the memory

space of the processor or I/O space of the processor-- two types: memory-mapped or I/O mapped respectively.

5/24/2013Amrita-UB-MSES-2013-15

Page 12: Device Drivers

Device driver (contd.)1. 12

The keyword volatile should be used when declaring pointers to device drivers. Bit patterns for testing, setting, clearing,

toggling, shifting bits, bitmasks, and bitfields.Struct overlays:

In embedded systems featuring memory mapped IO devices, it is common to overlay a C struct on to each peripheral’s control and status registers.

This will provide the offsets for the various registers from the base address of the device.

5/24/2013Amrita-UB-MSES-2013-15

Page 13: Device Drivers

Device Driver Philosophy13

Hide the hardware completely: hardware abstraction If the device generates any interrupts include interrupt

controllers. Device driver presents a generic interface for

applications at higher level to access the devices: device.h

Device drivers in embedded systems are different from general purpose operating systems: See diagram in slide #14 Applications in general purpose systems accesses OS

(Operating Systems) which in turn accesses device drivers.

Applications in embedded systems can directly access device drivers.

5/24/2013Amrita-UB-MSES-2013-15

Page 14: Device Drivers

14

General Purpose OS vs. Embedded System

Application

process

Operating System: dev/xyz

Device driver

Physical Device

hardware

Application

process

Device driver

Physical Device

hardware

5/24/2013Amrita-UB-MSES-2013-15

Page 15: Device Drivers

Device Driver development stepsDevice Driver development steps15

1. An interface to the control and status registers.2. Variables to track the current state of the

physical and logical devices -- Major and minor device number, device name

3. A routine to initialize the hardware to known state

4. An API for users of the device driver -- Read, write, seek5. Interrupts service routines

5/24/2013Amrita-UB-MSES-2013-15

Page 16: Device Drivers

Example: A serial device driver16

Read the text for explanation and general example of a timer

Now lets look at the UARTdriver of the embedded xinu and WRT54GL.

Study the tty driver that is a logical device that is layered on top of the UART driver.

In our Lab 3 you will write a device driver for a framebuffer.

5/24/2013Amrita-UB-MSES-2013-15

Page 17: Device Drivers

Shift Operators

5/24/2013

17

<< left shift>> right shiftUsage:unsigned int x = 70707;//x = 00000000 00000001 00010100 00110011unsigned int y, z;y = x << 2;// y = 00000000 00000100 01010000 11001100z = x >> 2;//z = 00000000 00000000 01000101 00001100

Amrita-UB-MSES-2013-15

Page 18: Device Drivers

Logic Operators

5/24/2013

18

Bitwise & (AND)Bitwise inclusive | (OR)Bitwise exclusive ^ (XOR)Bitwise negation ~Usage:unsigned exp1 = 1;unsigned exp2 = 4;printf (“ %d\n”, exp1 | exp2); printf (“ %d\n”, exp1 & exp2);printf (“ %d\n”, exp1 ^ exp2);printf (“ %d\n”, ~exp1);

Amrita-UB-MSES-2013-15

Page 19: Device Drivers

Relevance of shift and logic operators

5/24/2013

19

Bitwise operations are necessary for much low-level programming, such as writing device drivers, low-level graphics, communications protocol packet assembly and decoding.

Device drivers use these operators to test the presence or absence of a bit in a serial port or a device input, for example. (checking for on or off)

Amrita-UB-MSES-2013-15

Page 20: Device Drivers

Summary20

We studied the design and development of device drivers.

We analyzed the code for a sample UART driver.

5/24/2013Amrita-UB-MSES-2013-15


Recommended