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)