INSTITUTO TECNOLÓGICO Y DE ESTUDIOS SUPERIORES DE MONTERREY
Cs95031. Interfaces y Equipo Periférico II
Departamento académico:Ciencias Computacionales
Unidades:8
Requisito:
Semestre y carrera:
Equivalencia:
Objetivo general de la materia:Diseñar y desarrollar controladores de dispositivos ("device drivers")
orientados a herramientas de "hardware" para adquisición de datos y
comunicación con dispositivos externos a una computadora, en las plataformas
Win32-Intel y Linux-Intel.
Temas y subtemas del curso:1. Arquitectura de "device drivers" para Win32.
1.1. Descripción de las funciones generales de un "device driver".
1.2. Evolución de los "device drivers" dentro de los sistemas operativos.
1.3. Planeación en el diseño de un "device driver".
1.4. Estructura general y estructuras de datos útiles en un "device driver" del tipo WDM.
1.5. Control de interrupciones y acceso al "hardware" mediante un "device driver" del tipo WDM.
1.6. Emulación en "software" de un dispositivo de expansión/comunicación.
2. Arquitectura de "device drivers" en Linux.
2.1. Descripción del sistema de archivos de Linux.
2.2. Procedimiento para "montar" un volumen de almacenamiento (disco).
2.3. Procedimiento para instalar un dispositivo.
2.4. Arquitectura de un "device driver".
2.5. Comunicación entre aplicaciones y "device drivers".
2.6. Cómo "tocar" el "hardware" desde una aplicación en Linux.
3. Arquitectura y operación del puerto USB.
3.1. Descripción de la arquitectura del puerto USB.
3.2. Descripción de los diversas técnicas para transferencias de datos por el puerto USB.
3.3. Descripción general del protocolo utilizado por el puerto USB.
3.4. Filosofía operativa "plug and play" y sus detalles de implementación en el puerto USB.
3.5. Desarrollo de un "device driver" WDM para comunicación entre una aplicación y un dispositivo USB.
3.6. Dispositivos del tipo "Human Input Device" (HID) y descripción de sus "device drivers" relacionados.
3.7. Desarrollo ("hardware" y "software") de un "mouse" con interfaz al puerto USB.
4. Arquitectura del canal PCI.
4.1. Descripción de la arquitectura del canal PCI.
4.2. Descripción de la operación de un controlador de comunicaciones PCI.
4.3. Diseño de "hardware" de expansión usando el canal PCI y el controlador AMCC5933.
4.4. Diseño y experimentación con un "device driver" genérico para transferencias de datos, utilizando diversas modalidades de comunicación con el canal PCI.
4.5. Control de interrupciones en "device drivers" WDM.
4.6. Acceso directo a memoria utilizando "device drivers" WDM.
5. Arquitectura y operación de la interfaz IrDA.
5.1. Relación del puerto serial y la interfaz IrDA.
5.2. Descripción de la arquitectura de "hardware" de la interfaz IrDA.
5.3. Descripción de la arquitectura de "software" requerida para la comunicación vía la interfaz IrDA.
5.4. Desarrollo de un "device driver" WDM para controlar la comunicación entre una computadora y un dispositivo externo, utilizando la interfaz IrDA.

Objetivos específicos de aprendizaje:1. Arquitectura de "device drivers" para Win32.
1.1. Visualizar el proceso de comunicación entre las aplicaciones computacionales y diversos dispositivos de expansión, destacando la intervención y el protocolo de interacción con su respectivo "device driver".
1.2. Diseñar "device drivers" básicos mediante el uso del "debuger" SoftIce, entendiendo la operación de este programa y sus múltiples configuraciones.
1.3. Programar un "device driver" básico (al estilo "Hello world!") para aprender la operación básica del "debuger" y verificar el funcionamiento de las secciones principales de un "device driver".
2. Arquitectura de "device drivers" para Linux.
2.1. Visualizar y analizar las diferencias entre las arquitecturas de controladores de dispositivos disponibles para Windows XP y Linux.
2.2. Diseñar un "device driver" básico (al estilo de un "Hello world") para el sistema operativo Linux.
3. Arquitectura y operación del puerto USB.
3.1. Visualizar y analizar el protocolo de comunicación entre el controlador de comunicaciones USB insatalado en un equipo computacional y los dispositivos de expansión conectados a dicho puerto.
3.2. Visualizar y analizar el protocolo de comunicación entre los diferentes "device drivers" que permiten la comunicación entre aplicaciones y dispositivos de expansión USB.
3.3. Diseñar un "mouse" para ser conectado al puerto USB de una computadora, incluyendo el soporte para el estándar HID y un "device driver" específico para ejecutar un alguna funcionalidad específica adicional a la convencional.
3.4. Construir un prototipo del "mouse" diseñado previamente, utilizando el controlador Cypress CY63001A, y programar los "device drivers" necesarios para garantizar su funcionamiento (incluyendo la modalidad "plug and play").
4. Arquitectura del canal PCI.
4.1. Analizar el protocolo de comunicación entre el microprocesador y un controlador PCI .
4.2. Diseñar y construir un dispositivo para entrada y salida de datos digitales, utilizando el canal PCI y el sistema de desarrollo basado en el controlador AMCC 5933.
4.3. Diseñar un algoritmo básico para leer y escribir datos en un dispositivo de expansión instalado en el canal PCI, utilizando el sistema de desarrollo basado en el controlador AMCC 5933.
4.4. Aplicar la teoría sobre diseño de "device drivers" para disñar y programar uno específico, adecuado al dispositivo de expansión previamente interconectado al sistema de desarrollo para el canal PCI.
5. Arquitectura y operación de la interfaz IrDA.
5.1. Visualizar y analziar el protocolo de comunicación entre una computadora y un dispositivo con interfaz IrDA.
5.2. Diseñar un dispositivo de expansión para entrada y salida de datos digitales, con enlace IrDA hacia un equipo de cómputo.
5.3. Construir el prototipo del dispositvo previamente diseñado y programar los "device drivers" correspondientes que garanticen su operación (incluyendo la modalidad "plug and play").

Metodología de enseñanza:ñanza
Tiempo estimado de cada tema:Tema 1 10 horas
Tema 2 10 horas
Tema 3 12 horas
Tema 4 9 horas
Tema 5 6 horas
Exámenes 3 horas

Políticas de evaluacion sugeridas:3 exámenes parciales acumulativos 30%
5 proyectos (tareas) 50%
1 avance de proyecto final 10%
1 proyecto final 10%
Libro de texto1:Oney, W., Programming the Microsoft Windows Driver Model, Microsoft Press, 1999.

Libro de texto2:Libro de Texto 2


Libro de texto3:Libro de Texto 3


Libro de consulta:Axelson, J., USB Complete, 2nd. Ed., Lakeview Research, 2001.
Solomon, D. y Russinovich, M., Inside Microsoft Windows 2000, 3rd. Ed., Microsoft Press, 2000.
Dekker, E. y Newcomer, J., Developing Windows NT Device Drivers, Addison Wesley, 1999.
\0Material de apoyo:NO OBLIGATORIO


Perfil del Profesor:Profesor con experiencia en el diseño y programación de interfaces computacionales para
comunicación con dispositivos de "hardware", con maestría y/o doctorado en
educación o alguna área de ciencias computacionales o ingeniería

Fecha de la última actualización: 18 de noviembre de 2003(M)