Controlador de Puerto Serie Alejandro Furfaro Progrmación 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 2 3 4 Alejandro Furfaro (PSO - DC) Comunicación serie Hardware Controladores de comunicación Comunicación asincrónica UART 16550 Hardware Interfaz de programación Coding Controlador de Puerto Serie 19 de Mayo de 2011 2 / 22 Comunicación serie Comparación serie paralelo COMUNICACION PARALELO Gran velocidad. Distancias cortas. No se garantiza el tiempo de transito. Muchas lı́neas de interconexión. El dato esta presente en un bit por cada lı́nea de datos. Volumen de software para la atención del sincronismo. COMUNICACION SERIE Velocidad Inferior. Distancias grandes. Cantidad reducida de lı́neas de interconexión (mı́nimo tres). El dato se transmite bit por bit. Asincrónica o Sincrónica. Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 3 / 22 Comunicación serie Comparación serie paralelo COMUNICACION PARALELO Gran velocidad. Distancias cortas. No se garantiza el tiempo de transito. Muchas lı́neas de interconexión. El dato esta presente en un bit por cada lı́nea de datos. Volumen de software para la atención del sincronismo. COMUNICACION SERIE Velocidad Inferior. Distancias grandes. Cantidad reducida de lı́neas de interconexión (mı́nimo tres). El dato se transmite bit por bit. Asincrónica o Sincrónica. Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 3 / 22 Comunicación serie Comparación serie paralelo COMUNICACION PARALELO Gran velocidad. Distancias cortas. No se garantiza el tiempo de transito. Muchas lı́neas de interconexión. El dato esta presente en un bit por cada lı́nea de datos. Volumen de software para la atención del sincronismo. COMUNICACION SERIE Velocidad Inferior. Distancias grandes. Cantidad reducida de lı́neas de interconexión (mı́nimo tres). El dato se transmite bit por bit. Asincrónica o Sincrónica. Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 3 / 22 Comunicación serie Comparación serie paralelo COMUNICACION PARALELO Gran velocidad. Distancias cortas. No se garantiza el tiempo de transito. Muchas lı́neas de interconexión. El dato esta presente en un bit por cada lı́nea de datos. Volumen de software para la atención del sincronismo. COMUNICACION SERIE Velocidad Inferior. Distancias grandes. Cantidad reducida de lı́neas de interconexión (mı́nimo tres). El dato se transmite bit por bit. Asincrónica o Sincrónica. Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 3 / 22 Comunicación serie Comparación serie paralelo COMUNICACION PARALELO Gran velocidad. Distancias cortas. No se garantiza el tiempo de transito. Muchas lı́neas de interconexión. El dato esta presente en un bit por cada lı́nea de datos. Volumen de software para la atención del sincronismo. COMUNICACION SERIE Velocidad Inferior. Distancias grandes. Cantidad reducida de lı́neas de interconexión (mı́nimo tres). El dato se transmite bit por bit. Asincrónica o Sincrónica. Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 3 / 22 Comunicación serie Comparación serie paralelo COMUNICACION PARALELO Gran velocidad. Distancias cortas. No se garantiza el tiempo de transito. Muchas lı́neas de interconexión. El dato esta presente en un bit por cada lı́nea de datos. Volumen de software para la atención del sincronismo. COMUNICACION SERIE Velocidad Inferior. Distancias grandes. Cantidad reducida de lı́neas de interconexión (mı́nimo tres). El dato se transmite bit por bit. Asincrónica o Sincrónica. Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 3 / 22 Comunicación serie Comparación serie paralelo COMUNICACION PARALELO Gran velocidad. Distancias cortas. No se garantiza el tiempo de transito. Muchas lı́neas de interconexión. El dato esta presente en un bit por cada lı́nea de datos. Volumen de software para la atención del sincronismo. COMUNICACION SERIE Velocidad Inferior. Distancias grandes. Cantidad reducida de lı́neas de interconexión (mı́nimo tres). El dato se transmite bit por bit. Asincrónica o Sincrónica. Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 3 / 22 Comunicación serie Comparación serie paralelo COMUNICACION PARALELO Gran velocidad. Distancias cortas. No se garantiza el tiempo de transito. Muchas lı́neas de interconexión. El dato esta presente en un bit por cada lı́nea de datos. Volumen de software para la atención del sincronismo. COMUNICACION SERIE Velocidad Inferior. Distancias grandes. Cantidad reducida de lı́neas de interconexión (mı́nimo tres). El dato se transmite bit por bit. Asincrónica o Sincrónica. Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 3 / 22 Comunicación serie Comparación serie paralelo COMUNICACION PARALELO Gran velocidad. Distancias cortas. No se garantiza el tiempo de transito. Muchas lı́neas de interconexión. El dato esta presente en un bit por cada lı́nea de datos. Volumen de software para la atención del sincronismo. COMUNICACION SERIE Velocidad Inferior. Distancias grandes. Cantidad reducida de lı́neas de interconexión (mı́nimo tres). El dato se transmite bit por bit. Asincrónica o Sincrónica. Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 3 / 22 Comunicación serie Comparación serie paralelo COMUNICACION PARALELO Gran velocidad. Distancias cortas. No se garantiza el tiempo de transito. Muchas lı́neas de interconexión. El dato esta presente en un bit por cada lı́nea de datos. Volumen de software para la atención del sincronismo. COMUNICACION SERIE Velocidad Inferior. Distancias grandes. Cantidad reducida de lı́neas de interconexión (mı́nimo tres). El dato se transmite bit por bit. Asincrónica o Sincrónica. Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 3 / 22 Comunicación serie Comparación serie paralelo COMUNICACION PARALELO Gran velocidad. Distancias cortas. No se garantiza el tiempo de transito. Muchas lı́neas de interconexión. El dato esta presente en un bit por cada lı́nea de datos. Volumen de software para la atención del sincronismo. COMUNICACION SERIE Velocidad Inferior. Distancias grandes. Cantidad reducida de lı́neas de interconexión (mı́nimo tres). El dato se transmite bit por bit. Asincrónica o Sincrónica. Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 3 / 22 Comunicación serie Comparación serie paralelo COMUNICACION PARALELO Gran velocidad. Distancias cortas. No se garantiza el tiempo de transito. Muchas lı́neas de interconexión. El dato esta presente en un bit por cada lı́nea de datos. Volumen de software para la atención del sincronismo. COMUNICACION SERIE Velocidad Inferior. Distancias grandes. Cantidad reducida de lı́neas de interconexión (mı́nimo tres). El dato se transmite bit por bit. Asincrónica o Sincrónica. Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 3 / 22 Comunicación serie Comparación serie paralelo COMUNICACION SINCRONICA Un par de lı́neas para datos y una lı́nea de clock COMUNICACION ASINCRONICA No hay clock, el transmisor y el receptor se ponen de acuerdo en la velocidad de transmisión. Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 4 / 22 Hardware Controladores de comunicación USARTs y UARTs USART : Unidad Sincrónica Asincrónica Receptora Transmisora. Maneja los dos tipos de comunicación. Cayó en desuso hace muchos años ya que transmitir el clock agrega complejidad al hardware, especialmente en distancias largas. UART : Unidad Asincrónica Receptora Transmisora. Es la interfaz serie que utiliza la PC. Actualmente está siendo remplazada por USB, pero es una interfaz sumamemnte utilizada aún 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 comunicación UARTs: evolución Chip Funcionalidad 8250 Primer UART de la serie. Contiene no scratch register. El 8250A fue una versión mejorada del 8250 que opera mas rápido 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 8250’s). Opera a 38.4KBPS sin problemas. 16550 Primer generación de UART buffereada. Tiene un buffer de 16 bytes, sin embargo, no funcionó adecuadamente y fue reemplazado por el 16550A. 16550A Es la UART mas común utilizada para Modems de comunicaciones. Ls buffers de 16 bytes funcionan correctamente. 16650 Contiene un FIFO de 32 bytes, X-On / X-Off caracteres programables y soporte a manejo de energı́a. 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 comunicación 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 Comunicación asincrónica 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 programación 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 programación 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 programación Velocidad de Transmisión Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 13 / 22 UART 16550 Interfaz de programación Velocidad de Transmisión Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 14 / 22 UART 16550 Interfaz de programación 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 ) ; o u t b ( DLL , 0 x0C ) ; o u t b (DLM , 0 x00 ) ; // s e t DLAB − // 9600 8 ,N, 1 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 programación 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 programación 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 programación 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 programación Interrupciones Simultáneas Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 19 / 22 UART 16550 Interfaz de programación 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 SERIAL IER SERIAL LCR SERIAL FIFO SERIAL IIR SERIAL MCR equ equ equ equ equ equ serial setup : mov al ,0 mov dx , SERIAL IER out dx , a l mov mov out a l , 0 x80 dx , SERIAL LCR dx , a l Alejandro Furfaro (PSO - DC) 0 x3f8 SERIAL SERIAL SERIAL SERIAL SERIAL PORT+1 PORT+3 PORT+2 PORT+2 PORT+4 ; disable interrupts ; e n a b l e DLAB Controlador de Puerto Serie 19 de Mayo de 2011 21 / 22 Coding En assembler... para no perder la costumbre mov mov out a l , 0 x01 dx , SERIAL PORT dx , a l mov mov out al ,0 dx , SERIAL PORT+1; s e t b a u d r a t e dx , a l mov mov out a l , 0 x03 dx , SERIAL LCR dx , a l ; 8 N 1 mov mov out al ,0 dx , SERIAL FIFO dx , a l ; FIFO c o n t r o l r e g i s t e r , d i s a b l e FIF Alejandro Furfaro (PSO - DC) ; ” s e t b a u d r a t e a l mango” : 112000 Controlador de Puerto Serie 19 de Mayo de 2011 22 / 22 Coding En assembler... para no perder la costumbre mov mov out a l , 0 x0b dx , SERIAL MCR dx , a l ; t u r n on DTR, RTS and OUT2 in and out a l , 0 x21 al ,11101111 b 21h , a l ; h a b i l i t a r IRQ de COM1 mov mov out a l , 0 x01 dx , SERIAL IER dx , a l ; enable data r e c e p t i o n i n t e r r u p t Alejandro Furfaro (PSO - DC) Controlador de Puerto Serie 19 de Mayo de 2011 23 / 22