Controlador de Puerto Serie
Alejandro Furfaro
Progrmacion Sistemas Operativos
19 de Mayo de 2011 - 1c2011
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 1 / 22
Temario
1 Comunicacion serie
2 Hardware
Controladores de comunicacion
Comunicacion asincronica
3 UART 16550
Hardware
Interfaz de programacion
4 Coding
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 2 / 22
Comunicacion serie
Comparacion serie paralelo
COMUNICACION PARALELO
Gran velocidad.
Distancias cortas.
No se garantiza el tiempo de transito.
Muchas lneas de interconexion.
El dato esta presente en un bit por cada lnea de datos.
Volumen de software para la atencion del sincronismo.
COMUNICACION SERIE
Velocidad Inferior.
Distancias grandes.
Cantidad reducida de lneas de interconexion (mnimo tres).
El dato se transmite bit por bit.
Asincronica o Sincronica.
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 3 / 22
Comunicacion serie
Comparacion serie paralelo
COMUNICACION PARALELO
Gran velocidad.
Distancias cortas.
No se garantiza el tiempo de transito.
Muchas lneas de interconexion.
El dato esta presente en un bit por cada lnea de datos.
Volumen de software para la atencion del sincronismo.
COMUNICACION SERIE
Velocidad Inferior.
Distancias grandes.
Cantidad reducida de lneas de interconexion (mnimo tres).
El dato se transmite bit por bit.
Asincronica o Sincronica.
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 3 / 22
Comunicacion serie
Comparacion serie paralelo
COMUNICACION PARALELO
Gran velocidad.
Distancias cortas.
No se garantiza el tiempo de transito.
Muchas lneas de interconexion.
El dato esta presente en un bit por cada lnea de datos.
Volumen de software para la atencion del sincronismo.
COMUNICACION SERIE
Velocidad Inferior.
Distancias grandes.
Cantidad reducida de lneas de interconexion (mnimo tres).
El dato se transmite bit por bit.
Asincronica o Sincronica.
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 3 / 22
Comunicacion serie
Comparacion serie paralelo
COMUNICACION PARALELO
Gran velocidad.
Distancias cortas.
No se garantiza el tiempo de transito.
Muchas lneas de interconexion.
El dato esta presente en un bit por cada lnea de datos.
Volumen de software para la atencion del sincronismo.
COMUNICACION SERIE
Velocidad Inferior.
Distancias grandes.
Cantidad reducida de lneas de interconexion (mnimo tres).
El dato se transmite bit por bit.
Asincronica o Sincronica.
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 3 / 22
Comunicacion serie
Comparacion serie paralelo
COMUNICACION PARALELO
Gran velocidad.
Distancias cortas.
No se garantiza el tiempo de transito.
Muchas lneas de interconexion.
El dato esta presente en un bit por cada lnea de datos.
Volumen de software para la atencion del sincronismo.
COMUNICACION SERIE
Velocidad Inferior.
Distancias grandes.
Cantidad reducida de lneas de interconexion (mnimo tres).
El dato se transmite bit por bit.
Asincronica o Sincronica.
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 3 / 22
Comunicacion serie
Comparacion serie paralelo
COMUNICACION PARALELO
Gran velocidad.
Distancias cortas.
No se garantiza el tiempo de transito.
Muchas lneas de interconexion.
El dato esta presente en un bit por cada lnea de datos.
Volumen de software para la atencion del sincronismo.
COMUNICACION SERIE
Velocidad Inferior.
Distancias grandes.
Cantidad reducida de lneas de interconexion (mnimo tres).
El dato se transmite bit por bit.
Asincronica o Sincronica.
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 3 / 22
Comunicacion serie
Comparacion serie paralelo
COMUNICACION PARALELO
Gran velocidad.
Distancias cortas.
No se garantiza el tiempo de transito.
Muchas lneas de interconexion.
El dato esta presente en un bit por cada lnea de datos.
Volumen de software para la atencion del sincronismo.
COMUNICACION SERIE
Velocidad Inferior.
Distancias grandes.
Cantidad reducida de lneas de interconexion (mnimo tres).
El dato se transmite bit por bit.
Asincronica o Sincronica.
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 3 / 22
Comunicacion serie
Comparacion serie paralelo
COMUNICACION PARALELO
Gran velocidad.
Distancias cortas.
No se garantiza el tiempo de transito.
Muchas lneas de interconexion.
El dato esta presente en un bit por cada lnea de datos.
Volumen de software para la atencion del sincronismo.
COMUNICACION SERIE
Velocidad Inferior.
Distancias grandes.
Cantidad reducida de lneas de interconexion (mnimo tres).
El dato se transmite bit por bit.
Asincronica o Sincronica.
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 3 / 22
Comunicacion serie
Comparacion serie paralelo
COMUNICACION PARALELO
Gran velocidad.
Distancias cortas.
No se garantiza el tiempo de transito.
Muchas lneas de interconexion.
El dato esta presente en un bit por cada lnea de datos.
Volumen de software para la atencion del sincronismo.
COMUNICACION SERIE
Velocidad Inferior.
Distancias grandes.
Cantidad reducida de lneas de interconexion (mnimo tres).
El dato se transmite bit por bit.
Asincronica o Sincronica.
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 3 / 22
Comunicacion serie
Comparacion serie paralelo
COMUNICACION PARALELO
Gran velocidad.
Distancias cortas.
No se garantiza el tiempo de transito.
Muchas lneas de interconexion.
El dato esta presente en un bit por cada lnea de datos.
Volumen de software para la atencion del sincronismo.
COMUNICACION SERIE
Velocidad Inferior.
Distancias grandes.
Cantidad reducida de lneas de interconexion (mnimo tres).
El dato se transmite bit por bit.
Asincronica o Sincronica.
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 3 / 22
Comunicacion serie
Comparacion serie paralelo
COMUNICACION PARALELO
Gran velocidad.
Distancias cortas.
No se garantiza el tiempo de transito.
Muchas lneas de interconexion.
El dato esta presente en un bit por cada lnea de datos.
Volumen de software para la atencion del sincronismo.
COMUNICACION SERIE
Velocidad Inferior.
Distancias grandes.
Cantidad reducida de lneas de interconexion (mnimo tres).
El dato se transmite bit por bit.
Asincronica o Sincronica.
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 3 / 22
Comunicacion serie
Comparacion serie paralelo
COMUNICACION PARALELO
Gran velocidad.
Distancias cortas.
No se garantiza el tiempo de transito.
Muchas lneas de interconexion.
El dato esta presente en un bit por cada lnea de datos.
Volumen de software para la atencion del sincronismo.
COMUNICACION SERIE
Velocidad Inferior.
Distancias grandes.
Cantidad reducida de lneas de interconexion (mnimo tres).
El dato se transmite bit por bit.
Asincronica o Sincronica.
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 3 / 22
Comunicacion serie
Comparacion serie paralelo
COMUNICACION SINCRONICA Un par de lneas para
datos y una lnea de clock
COMUNICACION ASINCRONICA No hay clock, el
transmisor y el receptor se ponen de acuerdo en
la velocidad de transmision.
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 4 / 22
Hardware Controladores de comunicacion
USARTs y UARTs
USART : Unidad Sincronica Asincronica Receptora
Transmisora. Maneja los dos tipos de
comunicacion. Cayo en desuso hace muchos
anos ya que transmitir el clock agrega
complejidad al hardware, especialmente en
distancias largas.
UART : Unidad Asincronica Receptora Transmisora.
Es la interfaz serie que utiliza la PC.
Actualmente esta siendo remplazada por USB,
pero es una interfaz sumamemnte utilizada aun
en sistemas embeeded, debido a su simpleza de
manejo y su versatilidad.
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 5 / 22
Hardware Controladores de comunicacion
UARTs: evolucion
Chip Funcionalidad
8250 Primer UART de la serie. Contiene no scratch register. El 8250A fue una
version mejorada del 8250 que opera mas rapido del lado bus.
8250A Esta UART es que el 8250 del lado bus. Para el software se ve tal como
un 16450.
8250 Muy similar a la UART 8250.
16450 Utilizado en las AT (Mejora la velocidad de bus respecto del 8250s). Opera
a 38.4KBPS sin problemas.
16550 Primer generacion de UART buffereada. Tiene un buffer de 16 bytes, sin
embargo, no funciono adecuadamente y fue reemplazado por el 16550A.
16550A Es la UART mas comun utilizada para Modems de comunicaciones. Ls buf-
fers de 16 bytes funcionan correctamente.
16650 Contiene un FIFO de 32 bytes, X-On / X-Off caracteres programables y
soporte a manejo de energa.
16750 Producido por Texas Instruments. Contiene un FIFO de 64 bytes.
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 6 / 22
Hardware Controladores de comunicacion
Erase una vez una PC y sus puertos serie...
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 7 / 22
Hardware Comunicacion asincronica
Control de flujo por software
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 8 / 22
UART 16550 Hardware
16550. Diarama en Bloques
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 9 / 22
UART 16550 Hardware
16550: Diagrama en Bloques simplificado
RBR: Receiver Buffer Register (Read only)
THR: Transmitter Holding Register (Write only)
DLL: Divisor Latch LSB
DLM: Divisor Latch MSB
IER: Interrupt Enable Register
IIR: Interrupt Identification Register (Read only)
FCR: FIFO Control Register
LCR: Line Control Register
MCR: MODEM Control Register
LSR: Line Status Register
MSR: MODEM Status Register
SCR: Scratch Register
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 10 / 22
UART 16550 Interfaz de programacion
LCR: Line Control Register BASE+3
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 11 / 22
UART 16550 Interfaz de programacion
LCR: Line Control Register BASE+3
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 12 / 22
UART 16550 Interfaz de programacion
Velocidad de Transmision
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 13 / 22
UART 16550 Interfaz de programacion
Velocidad de Transmision
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 14 / 22
UART 16550 Interfaz de programacion
Programando del Baud Rate
v o i d OpenCom ( v o i d )
{
unsigned char b y t e ;
o u t b ( LCR , 0 x83 ) ; // s e t DLAB 8 ,N, 1
o u t b ( DLL , 0 x0C ) ; // 9600
o u t b (DLM , 0 x00 ) ;
b y t e = i n b (LCR ) ;
o u t b ( LCR , 0 x7F & b y t e ) ; // c l e a r DLAB
}
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 15 / 22
UART 16550 Interfaz de programacion
LSR Line Status Register BASE + 5
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 16 / 22
UART 16550 Interfaz de programacion
IER Interrupt Enable Register BASE + 1
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 17 / 22
UART 16550 Interfaz de programacion
IIR Interrupt Enable Register BASE + 2
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 18 / 22
UART 16550 Interfaz de programacion
Interrupciones Simultaneas
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 19 / 22
UART 16550 Interfaz de programacion
Interrupciones Diagrama General detallado
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 20 / 22
Coding
En assembler... para no perder la costumbre
SERIAL PORT equ 0 x3f8
SERIAL IER equ SERIAL PORT+1
SERIAL LCR equ SERIAL PORT+3
SERIAL FIFO equ SERIAL PORT+2
SERIAL IIR equ SERIAL PORT+2
SERIAL MCR equ SERIAL PORT+4
serial setup :
mov al ,0
mov dx , SERIAL IER
out dx , a l ; disable interrupts
mov a l , 0 x80
mov dx , SERIAL LCR ; e n a b l e DLAB
out dx , a l
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 21 / 22
Coding
En assembler... para no perder la costumbre
mov a l , 0 x01
mov dx , SERIAL PORT ; s e t b a u d r a t e a l mango : 112000
out dx , a l
mov al ,0
mov dx , SERIAL PORT+1; s e t b a u d r a t e
out dx , a l
mov a l , 0 x03
mov dx , SERIAL LCR ; 8 N 1
out dx , a l
mov al ,0
mov dx , SERIAL FIFO ; FIFO c o n t r o l r e g i s t e r , d i s a b l e FIF
out dx , a l
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 22 / 22
Coding
En assembler... para no perder la costumbre
mov a l , 0 x0b
mov dx , SERIAL MCR ; t u r n on DTR, RTS and OUT2
out dx , a l
in a l , 0 x21
and al ,11101111 b ; h a b i l i t a r IRQ de COM1
out 21h , a l
mov a l , 0 x01
mov dx , SERIAL IER ; enable data r e c e p t i o n i n t e r r u p t
out dx , a l
Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 23 / 22