UART and UART DriverUART and UART DriverB. Ramamurthy
1
•UARTUARTUART: Universal Asynchronous
Receiver/Transmitter device Device connected to the system bus; it takes parallel
data converts into RS232C serial format and transmits it; and receives data in serial format and converts it to parallel format for CPU bus
-- parallel byte is converted into start bit, 8 bits, parity bit and stop bit serial form and vice versa
Asynchronous transmission allows data to be transmitted without the sender having to send a clock signal to the receiver. Instead, the sender and receiver must agree on timing parameters in advance and special bits are added to each word which are used to synchronize the sending and receiving units.
-- That’s why you set the baud rate in your xinu environment
2
16550 UART Chip16550 UART ChipLets study the layout and
operation of 16550 UART chip.Page 1: The featuresPage 2: Basic chip configurationPage 6 …: RD and WR cycle
timingPage 11: Pin descriptionsPage 14: Register summaryPage 15…: Register explanation
3
RS 232C StandardRS 232C Standard Serial communication standard.
See the DE-9 pin configuration: G (5), TxD (3), RxD(2), DTR(4), DSR(6), RTS(7), CTS(8), DCD(1), RI (9)
4
XINU UART DriverXINU UART Driverxinu_mips-1.0.2/include/uart.hxinu_mips-1.0.2/uart/*Map all that you learned in the
last few slides to the code in uart.h and the driver implementation in uart directory
5
ReferencesReferenceshttp://www.freebsd.org/doc/en/articles/
serial-uart/http://cache.national.com/ds/NS/
NS16C552.pdfhttp://xinu.mscs.mu.edu/
National_Semiconductor_16550_UART#Physical_UART
http://en.wikipedia.org/wiki/RS-232Linux device-driver:http://www.networkcomputing.com/
unixworld/tutorial/010/010.txt.html6
Device driver context Device driver context User
process
Operating System: dev/xyz
Device driver
Physical Device
hardware
7
UART Driver in EXINUUART Driver in EXINU1. General device driver related files:
device.h, devtable.c2. Uart files: uart.h defining the
physical features of the uart3. 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
8
Device DriversDevice Drivers
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
9
10
Serial Port Block Diagram Serial Port Block Diagram (general)(general)
Processor
UARTPeripher
al
RS-232Transceive
r
COM1DB-9
connector
Our SetupOur Setup
11
WRT54GLProcessor:BCM5353
UARTPeripheralTI 16552
RS-232Transceiver
AMD202
COM1DB-9
connector
Device driversDevice driversEmbedded 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.
12
Device driver (contd.)Device driver (contd.)The keyword volatile should be used when
declaring pointers to device drivers.Our text goes on to discuss bit manipulation:
please read it)◦ 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.
1.13
Device Driver PhilosophyDevice Driver PhilosophyHide 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 #7 ◦ Applications in general purpose systems accesses
OS (Operating Systems) which in turn accesses device drivers.
◦ Applications in embedded systems can directly access device drivers.
14
15
General Purpose OS vs. General Purpose OS vs. Embedded SystemEmbedded System
Application
process
Operating System: dev/xyz
Device driver
Physical Device
hardware
Application
process
Device driver
Physical Device
hardware
Device Driver development Device Driver development stepssteps1. 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
name3. A routine to initialize the hardware to
known state4. An API for users of the device driver -- Read, write, seek5. Interrupts service routines
16
Example: A serial device Example: A serial device driverdriverNow 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.
Framebuffer is an example of logical device driver.
17
SummarySummaryWe studied the design and
development of device drivers.We analyzed the code for a
sample UART driver.Read the UART device driver
exinu and wrt54gl.
18