Documente Academic
Documente Profesional
Documente Cultură
Alejandro Furfaro
Progrmaci on Sistemas Operativos
28 de Abril de 2011
1 / 49
Temario
1
El Floppy Disk Introducci on El Floppy Disk Drive (FDD) El Floppy Disk Controller (FDC) Arquitectura del FDC Registros del 765 Registros agregados en la AT y PS/2 Registros Agregados en la PS/2 Programaci on del FDC Fases del Controlador Comandos Guias de programaci on Handshake en la fase de Comandos y Resultados
28 de Abril de 2011
2 / 49
El Floppy Disk
Introducci on
El controlador de Floppy Disk est a basado en un viejo controlador de NEC: el PD765. Intel introdujo a posteriori un par de controladores mas modernos pero compatibles: el 82072A utilizado en las PCs basadas en procesadores 80286 y posteriores y el 82077A para los modelos denominados IBM PS/2. Este curso abarca el hardware de PCs. Por lo tanto no nos enfocaremos demasiado en las particularidades de los sistemas PS/2 ya que estos sistemas no han perdurado.
28 de Abril de 2011
3 / 49
El Floppy Disk
Introducci on
Diagrama General
28 de Abril de 2011
4 / 49
El Floppy Disk
Componentes
El Drive (disquetera) tiene cinco componentes b asicos Cabezas de Lecura/Escritura: Se trata de un arreglo de dos cabezas similiares a las cabezas lectoras de cintas, ubicadas a ambos lados del disco. Se mueven en conjunto. Motor del Drive: Se trata de un peque no motor de Corriente Cont nua que engrana al disco en una ranura de su centro met alico y lo hace girar t picamente a 360 Rotaciones por minuto (RPM). Motor paso a paso (Stepper): Calibrado con un eje a rosca, hace mover con precisi on el ensamble de cabezas de lectura/escritura a la pista exacta que ha seleccionado en controlador. El armado de cabezas est a mec anicamente ensamblado al eje de este motor. Estructura Mec anica: Conjunto de piezas mec anicas que abren la peque na ventana del disquete para que las cabezas puedan acceder a la supercie magnetica del disco, mas el bot on que permite eyectar el disco, etc. Circuiter a: Toda la electr onica necesaria para manejar las se nales que se leen y escriben en el disco, para accionar el ectricamente a los dos motores y regular su velocidad y detenci on y ubicar las cabezas en el disco.
Alejandro Furfaro (PSO - DC) Controlador de Floppy Disk 28 de Abril de 2011 5 / 49
El Floppy Disk
28 de Abril de 2011
6 / 49
El Floppy Disk
28 de Abril de 2011
7 / 49
El Floppy Disk
M etodos de grabaci on
FM (Modulaci on de Frecuencia): Graba un pulso de clock por cada bit. Se usa en los oppys viejos de Simple Densidad.
MFM (Frecuencia Modulada Modicada): Los clocks solo se graban entre dos ceros consecutivos.
28 de Abril de 2011
8 / 49
El Floppy Disk
28 de Abril de 2011
9 / 49
El Floppy Disk
Soft Sectoring
V alido para MFM (los viejos oppys tienen otra conformaci on en cantidad de bytes y en sus valores) Los bytes 0xa1 tienen una transici on clock perdida entre los bit 4 and 5 y precongura el CRC. EL CRC es un algoritmo mas sosticado que el checksum En estos controladores se utiliza un polinomio estandarizado por el CCITT: g (x ) = 1 + x 5 + x 12 + x 16 El algoritmo ver a al contenido a analizar como un ujo continuo de bits (stream), tomando de a 16 (mismo grado del polinomio), y xoreando amos valores. El polinomio se desplaza a la derecha a trav es del stream, hasta llegar al nal.
28 de Abril de 2011
10 / 49
El Floppy Disk
Diagrama interno
28 de Abril de 2011
11 / 49
El Floppy Disk
28 de Abril de 2011
12 / 49
Ideas...
enum F l o p p y R e g i s t e r s { STATUS REGISTER A STATUS REGISTER B DIGITAL OUTPUT REGISTER TAPE DRIVE REGISTER MAIN STATUS REGISTER DATARATE SELECT REGISTER DATA FIFO DIGITAL INPUT REGISTER CONFIGURATION CONTROL REGISTER };
= = = = = = = = =
// r e a d o n l y // r e a d o n l y
// r e a d o n l y // w r i t e o n l y // r e a d o n l y // w r i t e o n l y
28 de Abril de 2011
13 / 49
DMA GATE
RESET
DRIVE SEL0
SEL1,
DRIVE
Descripci on Control de Motor para oppy drive D, C, B, A. 1=Start motor 0=Stop motor. Se setea el bit correspondiente a la vez que se escribe el n umero de Drive en los bits DRIVE SEL1, DRIVE SEL0. Es de pr actica setear el conjunto MOT ENi junto con DRIVE SEL0 y DriveSEL 1, de una sola vez. Habilita las interfaces de DMA e IRQ. 1=Enabled, 0=Disabled. Cuando se deshabilita, los terminales DACK, DRQ, TC, e INT se ponen en three state (Impedancia infnita) Controller reset. No afecta a este registro, pero inicializa el resto del controlador incluida la FIFO. 1=Controller enabled 0=Execute controller reset Drive select. 00=drive 0 (A) 01=drive 1 (B) 10=drive 2 (C) 11=drive 3 (D)
Notas: Un drive no puede ser seleccionado (Bits 0 y 1) a menos que su motor est e ON. La mayoria de los sistemas no soporta los drives C y D. Cuando RESET = 0, no se aceptan comandos y se env a un reset general a todos los sistemas y registros del FDC (excepto a DOR) Alejandro Furfaro (PSO - DC) Controlador de Floppy Disk 28 de Abril de 2011 14 / 49
Arrancar el motor del drive A, utilizando DMA e Interrupciones, Controlador habilitado, y Seleccionar drive 00)
mov a l , 00000001 b mov dx , 0 x 3 f 2 out dx , a l
Resetear el controlador:
mov a l , 00000000 b mov dx , 0 x 3 f 2 out dx , a l
28 de Abril de 2011
15 / 49
Bit RQM
DIO
Descripci on Indica al procesador si es posible ejecutar una transferencia de datos con el FDC. 1=Data Register Ready 0=Data Register Not Ready Indica la direcci on de la pr oxima transferencia. Solo es signicativo si RQM=1. 1=Lectura (Controlador > CPU), 0=Escritura (CPU > Controlador) Modo No DMA. 1=Controller no est a en modo DMA, 0=Controlador en modo DMA Comando en proceso. Se pone en 1 hasta que el comando termine, incluida la fase de resultado. Si no hay fase de resultado (SEEK, RECALIBRATE, por ej.), vuelve a cero luego de culminada la fase de ejecuci on. Si est a en 0 no hay comando en curso de ejecucci on. Drive Busy. Estos bits se setean solo cuando un drive est a en la porci on SEEK de un comando, (inclutendo RECALIBRATE).
28 de Abril de 2011
17 / 49
Testear si el controlador est a listo para recibir un comando o un dato, requiere conocer RQM, y DIO.
mrqloop : mov dx , 03 f 4 h i n a l , dx and a l , 11000000 b cmp a l , 10000000 b j n e mrqloop
Puede ser que se requiere chaequear otras opciones y no solo la dosponibilidad para un comando y entonces solo hay que modicar la m ascara de bits de la and.
28 de Abril de 2011
18 / 49
DSKCHG monitorea el pin hom onimo del FDC y reeja el valor opuesto que lee del cable del disco, sin importar el valor de INVERT DIR para PS/2
DRATE SEL1-0 retornan el valor actual de la velocidad de datos seleccionada HIGH DENS es 0 siempre que se haya seleccionado una velocidad de trasnferencia de 500 Kbps o 1 Mbps.
Alejandro Furfaro (PSO - DC) Controlador de Floppy Disk 28 de Abril de 2011 20 / 49
Los bits remanentes van en 0. Data Rate como en la tabla al pie. CCR para PS/2
28 de Abril de 2011
21 / 49
Descripci on Indica al procesador si el controlador tiene una IRQ pendiente de atenci on (activa). 1=Activa, 0=No activa 1=Un solo drive conectado, 0=DOs drives conectados 1=Pulso enviado al stepper, 0=No se envi o pulso al stepper 1=La cabeza est a encima del track 0, 0La cabeza est a en cualquier otra pista del disco Selector de Cabezal.0=head0, 1=Head1 Index Mark Detected. 0= Detectada, 1=No detectada. Write Protection. 0=Disco protegido contra escritura, 1=Disco No protegido contra escritura. Direcci on de la cabeza. 0=Hacia cilindros externos (Num ericamente menores), 1=Hacia cilindros internos (Num ericamente mayores).
28 de Abril de 2011
22 / 49
Descripci on Drive 0 Seleccionado. 1=Drive0, 0=Cualquier otro Write Data. 1=Se puede transferir datos al drive, 0=No se puede transferir datos al drive. Read Data.1=Se puede leer datos del drive, 0=No se puede leer datos desde el drvive. Write Enabled. 1=La cabeza est a activada para escrituras, 0La cabeza est a ubicada para lectura. Motor of drive 1, 0.0=Motor apagado, 1=Motor encendido
28 de Abril de 2011
23 / 49
M aquina de estados
Fase de Comandos Luego de un reset o cuando se enciende el equipo, el FDC ingresa en esta fase. Fase de Ejecuci on Es en la fase que ocurren las transferencias de datos, producto de los comandos enviados en la fase previa. Fase de Resultados Se ingresa aqui lugo de generada la Interrupci on, para devolver los resultados de las transferencias.
28 de Abril de 2011
24 / 49
Fase de Comandos
Los comandos se denen en la secci on previa y consisten en diferentes secuencias de bytes que deben ser enviados en el orden establecido. Antes de escribir un comando el sofware debe examinar los bits MSR.RQM, y MSR.DIO que deben estar en 1 y 0 respevtivamente para poder acceder. A menos que se haya enviado un comando ilegal, luego de recibido correctamente el u ltimo byte MSR.RQM se pone en 0 y se ingresa en la fase siguiente, denida para cada comando (Transferencia o Resultado). Durante esta fase se deshabilita la FIFO Read del controlador
28 de Abril de 2011
25 / 49
Fase de Ejecuci on
Todos los comandos recibidos en la fase anterior puede ejecutarse en Modo DMA o NO-DMA. Dependiendo de ello se solicita al procesador transferir un byte activando el pin INT o DRQ.
Transferencias NO-DMA desde la FIFO hacia la CPU.Cuando el FIFO contiene (16-umbral) bytes listos para transferir, se setea MSR.RQM, y se activa el pin INT. Cuando se vac a la FIFO, INT y MSR.RQM, se desactivan solos. Transferencias NO-DMA desde la CPU hacia la FIFO.Se setea MSR.RQM, y se activa el pin INT como respuesta al comando. Cuando el FIFO contiene (16-umbral) bytes listos para transferir, (full) se desactivan solos. Transferencias DMA desde la FIFO hacia la CPU.Cuando el FIFO contiene (16-umbral) bytes listos para transferir, se activa el pin DRQ. El Controlador de DMA termina de leer el u ltimo byte transferencia y activa el pin DACK del controlador. Al recibir DACK el FDC desactiva DRQ. Transferencias DMA desde la CPU hacia la FIFO.Cuando el FDC est a listo para la transferencia luego de haber recibido el comando activa DRQ. El Controlador de DMA activa los pines de escritura y DACK y escribe un byte en la FIFO. El FDC deja el pin DRQ activo hasta que la FIFO est e llena.
Alejandro Furfaro (PSO - DC) Controlador de Floppy Disk 28 de Abril de 2011 26 / 49
Fase de Resultados
Los bits MSR.RQM y MSR DIO deben estar en 1 antes de que el resultado se lea de la FIFO. Una vez le do el resultado vuelven al estado 1 0 respectivamente. Adem as se pone en 0 MSR.CMD BSY para indicar que el controlador est a desocupado.
28 de Abril de 2011
27 / 49
Comandos
Estructura
Los comandos se env an al FDC en la Fase de comandos. Cada comando tiene un set de par ametros que se escriben en el FDC como una secuencia de bytes. El FDC analiza el primer byte del comando para chequear que se trate de un comando v alido. Si es v alido toma el resto, procede a ejecutarlo y devuelve una fase de estados y un set de resultados.
28 de Abril de 2011
28 / 49
Comandos
7 IC1
Bit ICx
6 IC0
5 SE
4 UC
2 H
1 US1
0 US0
SE EC
H DSx
Descripci on Interrupt Code. 00 = Terminaci on normal del comando. 01 = Terminaci on anornal: el comando se inici o pero no puedo terminar. 10 = Comando Inv alido. 11 = Terminaci on anormal causada por polling.. Seek End. El FDC completo un comando SEEK o RECALIBRATE, o un comando READ o WRITE que implicaron un seek. Equipment Check. El Pin TRK0 no pudo seterase en 1, luego de 80 pulsos al stepper en un comando RECALIBRATE, o si un comando SEEK RELATIVE llev o el cabezal mas all a del Track 0. No se utiliza, normalmente devuelve 0. Head Address. Devuelve la direcci on del Cabezal en uso. Drive Select.Devuelve el n umero de Drive seleccionado
28 de Abril de 2011
29 / 49
Comandos
5 DE
4 OR
2 ND
1 NW
0 MA
DE OR ND
NW
MA
Descripci on End Of Cilynder. Indica que el FDC intent o acceder a un sector mas all a del nal de una pista. Puede setearse en respuesta a una ausencia de Terminal Count desde el DMA en respuesta a un comando READ o WRITE. No se utiliza, normalmente devuelve 0. Data Error. El FDC detect o un error en el CRC del campo ID o en el campo de Datos del sector. Overrun / Underrun. Se pone en 1 para indicar que el procesador o el DMA Controller no ha atendido al FDC y en consecuencia se pis o o perdi o un dato. No se utiliza, normalmente devuelve 0. No Data. Vale 1 si: los comandos READ DATA READ DELETED DATA no encuentran el sector que se les especic o, o si el comando READ ID no puede leer el ID del sector sin error, o si READ TRACK no puede encontrar la secuencia de sectores correcta No Writable. Este bit devuelve 1, si mientras el FDC est a ejecuntando un comando WRITE DATA, WRITE DELETED DATA, o FORMAT TRACK, el pin WP se pone en 1. Missing Address Mark. Indica que el FDC no encuentra el ID Address Mark de la pista especicada, luego de recibir por dos veces por el pin IDX el pulso Index, o si no puede detectar la marca de direcci on de la pista.
Controlador de Floppy Disk 28 de Abril de 2011 30 / 49
Comandos
6 CM
5 DD
4 WC
1 BC
0 MD
DD WC BC
MD
Descripci on No se utiliza, normalmente devuelve 0. Control Mark. Indica que o bien a consecuencia de un comando READ DATA se encontr o una marca de direcci on de dato borrado, o bien que un READ DELETED DATA encontr o una marca de direcci on de datos. Data Error in Data Field. El FDC detect o un error en el CRC del campo de Datos del sector. Wrong Cylinder. La direcci on de pista le da del ID del sector no coincide con la mantenida por el FDC. No se utiliza, normalmente devuelve 0. No se utiliza, normalmente devuelve 0. La direcci on de pista le da del ID del sector no coincide con la mantenida por el FDC, y es igual a 0xFF que indica pista err onea con un error de hardware de acuerdo con el formato de soft-sectoring de IBM. Missing Address Data Mark. Indica que no se puede detectar la marca de direcc on de dato o la marca de direcci on de dato borrado.
28 de Abril de 2011
31 / 49
Comandos
7
Bit WP T0 HD DSx
6 WP
4 T0
2 HD
1 DS1
0 DS0
Descripci on No se utiliza, normalmente devuelve 0. Write Protected. Indica el estado del bit WP. No se utiliza, normalmente devuelve 1. Track 0. Indica el estado del pin T0. No se utiliza, normalmente devuelve 1. Head address. Indica el estado del pin HDSEL. Drive Select. Indica el estado de los pines DS1 y DS0 .
28 de Abril de 2011
32 / 49
Comandos
28 de Abril de 2011
33 / 49
Comandos
28 de Abril de 2011
34 / 49
Comandos
28 de Abril de 2011
35 / 49
Comandos
Bit MT
Comandos
READ: Respuesta
Luego de los bytes ST0, ST1, y ST2, el comando READ devuelve los valores de las direcciones de Cilindro, Cabezal, Sector, y el tama no de sector que recibi o en el comando. Es para poder veriacr en el software que se est a leyendo lo mismo que se solicit o.
Byte C H R N Descripci on Nro. de cilindro (0-255) Cabezal (0 o 1) Nro.de sector Tama no del sector (00:128 bytes, 01:256 bytes, 02:512 bytes, 03:1024 bytes, .... 07:16Kbytes)
28 de Abril de 2011
37 / 49
Comandos
28 de Abril de 2011
38 / 49
Comandos
28 de Abril de 2011
39 / 49
Comandos
28 de Abril de 2011
40 / 49
Comandos
WRITE: Respuesta
Luego de los bytes ST0, ST1, y ST2, el comando WRITE devuelve los valores de las direcciones de Cilindro, Cabezal, Sector, y el tama no de sector que recibi o en el comando. Es para poder veriacr en el software que se escribi o lo mismo que se solicit o.
Byte C H R N Descripci on Nro. de cilindro (0-255) Cabezal (0 o 1) Nro.de sector Tama no del sector (00:128 bytes, 01:256 bytes, 02:512 bytes, 03:1024 bytes, .... 07:16Kbytes)
28 de Abril de 2011
41 / 49
Comandos
VERIFY: Formato
28 de Abril de 2011
42 / 49
Comandos
Descripci on Nro. de cilindro (0-255) Cabezal (0 o 1) Nro.de sector Tama no del sector (00:128 bytes, 01:256 bytes, 02:512 bytes, 03:1024 bytes, .... 07:16Kbytes) EOT End Of Track. Nro de sector nal de la pista actual GPL GAP Length. Tama no del GAP 3 DTL/EC Tama no especial de sector. Si N=00, DTL permite controlar la cantidad de bytes a transferir. Si N DPL se lee el sector completo y se chequea su CRC pero solo se pasan DPL bytes al procesador. Si N != 00 DPL no tiene signicado y debe valer 0xFF
Alejandro Furfaro (PSO - DC) Controlador de Floppy Disk 28 de Abril de 2011 43 / 49
Comandos
Descripci on Selecciona cabeza 0 o 1 de acurdo a su valor (0 o 1) Seleccionan el drive (00=Drive 0... 11=Drive3) Descripci on Nuevo Nro. de cilindro (0-255). Es el cilindro en el que se quiere posicionar las cabezas.
Controlador de Floppy Disk 28 de Abril de 2011 44 / 49
Guias de programaci on
28 de Abril de 2011
45 / 49
Guias de programaci on
28 de Abril de 2011
46 / 49
Guias de programaci on
28 de Abril de 2011
47 / 49
Guias de programaci on
28 de Abril de 2011
48 / 49
Guias de programaci on
28 de Abril de 2011
49 / 49