Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Lenguaje C Acceso al hardware Universidad Tecnológica Nacional Facultad Regional Haedo Informática I Acceso al hardware: necesidad Como futuros ingenieros electrónicos tendremos que acceder a dispositivos de hardware de diferente tipo: Parte I: Modelo de capas de software Cada dispositivo posee una interfaz definida por el fabricante, para conectarlo a nuestra aplicación será necesario utilizar una biblioteca de código denominada driver que permite operar sobre el dispositivo. Dispositivo Driver Aplicación Hardware Software Acceso al hardware: modelo de capas Dispositivo Driver Aplicación Hardware Software El fabricante del dispositivo: • Define la interfaz de comunicación (SPI, I2C, serial, USB, paralelo, mapeado a memoria, entre otras). • Provee una hoja de datos (datasheet) con los detalles del dispositivo (configuración, comandos, modos, etc.) El driver es una biblioteca de código que permite acceder al dispositivo, usualmente en bajo nivel, por ejemplo, para configurarlo, leer datos, enviar comandos, entre otras funciones. En general, está diseñado específicamente para un determinado dispositivo o para clases de dispositivos. Acceso al hardware: modelo de capas Dispositivo Driver Aplicación Hardware Software La aplicación accede al dispositivo, lee y/o escribe datos, los procesa, envía comandos y ejecuta las diferentes funciones para cumplir con el objetivo del proyecto. El driver facilita a la aplicación el acceso al hardware en el bajo nivel, preferentemente a través de llamadas de alto nivel. De esta forma abstrae a la aplicación de las particularidades del hardware. Paradigma interfaz/implementación Fuente: “The Object Oriented Thought Process”, Weisfeld M., Third Edition, Addison Wesley Inc. Paradigma interfaz/implementación Fuente: “The Object Oriented Thought Process”, Weisfeld M., Third Edition, Addison Wesley Inc. Aplicación Driver / Dispositivo Paradigma interfaz/implementación Fuente: “The Object Oriented Thought Process”, Weisfeld M., Third Edition, Addison Wesley Inc. Aplicación La abstracción se logra manteniendo una determinada interfaz independientemente de la implementación Driver / Dispositivo HardwareSoftware Paradigma interfaz/implementación Aplicación Driver SensorPuerto HardwareSoftware Paradigma interfaz/implementación - Imprime los valores de temperatura ordenados de menor a mayor. - Genera una alarma si se detecta una temperatura mayor a determinado valor Aplicación Driver SensorPuerto HardwareSoftware Paradigma interfaz/implementación - Imprime los valores de temperatura ordenados de menor a mayor. - Genera una alarma si se detecta una temperatura mayor a determinado valor Aplicación - Interactúa con el sensor a través de un puerto. - Configurar el sensor. Por ejemplo, la precisión de la medición (8 o 12 bits). - Realiza una medición y retorna un valor un valor en ºC. Driver SensorPuerto HardwareSoftware Paradigma interfaz/implementación - Imprime los valores de temperatura ordenados de menor a mayor. - Genera una alarma si se detecta una temperatura mayor a determinado valor Aplicación - Interactúa con el sensor a través de un puerto. - Configurar el sensor. Por ejemplo, la precisión de la medición (8 o 12 bits). - Realiza una medición y retorna un valor un valor en ºC. Driver Sensor - Es una capa fìsica que permite generar las señales eléctricas para comunicarse con el sensor. - Existen multiples tipos de puertos, Puerto HardwareSoftware Paradigma interfaz/implementación - Imprime los valores de temperatura ordenados de menor a mayor. - Genera una alarma si se detecta una temperatura mayor a determinado valor Aplicación - Interactúa con el sensor a través de un puerto. - Configurar el sensor. Por ejemplo, la precisión de la medición (8 o 12 bits). - Realiza una medición y retorna un valor un valor en ºC. Driver - Sensor de Temperatura DHT11. - Posee una hoja de datos donde se describe el formato de los registros utilizados para la configurar y leer el sensor. Sensor - Es una capa fìsica que permite generar las señales eléctricas para comunicarse con el sensor. - Existen multiples tipos de puertos, Puerto Paradigma interfaz/implementación - Imprime los valores de temperatura ordenados de menor a mayor. - Genera una alarma si se detecta una temperatura mayor a determinado valor Aplicación Driver - Sensor de Temperatura DHT11. HardwarePuerto Paradigma interfaz/implementación - Imprime los valores de temperatura ordenados de menor a mayor. - Genera una alarma si se detecta una temperatura mayor a determinado valor Aplicación Driver - Sensor de Temperatura DHT11. HardwarePuerto Driver - Sensor de Temperatura LM35 HardwarePuerto Parte II: el rol de los sistemas operativos Siguiendo la definición de A. Tanenbaum, los sistemas operativos pueden entenderse desde dos puntos de vista: • Cómo máquina virtual • Cómo administrador de recursos Fuente: “Modern Operating Systems”, Tanenbaum A., Fourth Edition, Pearson Education Acceso al hardware: el rol de los sistemas operativos Siguiendo la definición de A. Tanenbaum, los sistemas operativos pueden entenderse desde dos puntos de vista: • Cómo máquina virtual Provee al programador de aplicaciones una serie de llamadas de alto nivel que le abstraen del acceso al hardware. Fuente: “Modern Operating Systems”, Tanenbaum A., Fourth Edition, Pearson Education Sistema operativo printf() scanf() Acceso al hardware: el rol de los sistemas operativos Siguiendo la definición de A. Tanenbaum, los sistemas operativos pueden entenderse desde dos puntos de vista: • Cómo administrador de recursos El sistema operativo se apropia de los recursos de hardware (CPU, memoria, dispositivos, etc.), establece mecanismos y ordena el acceso a los mismos a partir de criterios predefinidos. Fuente: “Modern Operating Systems”, Tanenbaum A., Fourth Edition, Pearson Education Acceso al hardware: el rol de los sistemas operativos Driver A Driver B Driver C Sistema operativo Aplicaciones Hardware Sistema operativo Aplicación El rol del ingeniero electrónico: hardware Hardware Especificar, seleccionar componentes, diseñar, fabricar y ensayar dispositivos de hardware. El rol del ingeniero electrónico: hardware Hardware Diseñar, desarrollar y ensayar los drivers para dispositivos de fabricación propia o externa. Driver A Driver B Driver C Sistema operativo Drivers El rol del ingeniero electrónico: hardware Hardware Diseñar y desarrollar aplicaciones que hacen uso de dispositivos de hardware para cumplir los objetivos de un determinado proyecto. Driver A Driver B Driver C Sistema operativo Drivers Aplicación Aplicaciones Parte III: Mapeo de dispositivos • Port-mapped input/output (PMIO) Existen dos mapas separados para acceder a memoria y periféricos, explícitamente: un mapa de memoria y un mapa de puertos. Se requiere el uso de instrucciones explícitas del procesador para acceder a los puertos. En este caso no se pueden usar punteros. Mapa de memoria Direcciones de memoria Mapa de puertos Direcciones de puertos Parte III: Mapeo de dispositivos • Port-mapped input/output (PMIO) Un ejemplo de aplicación es la arquitectura de los procesadores Intel, donde existen dos tipos de instrucciones específicas para acceder a ambos mapas: Mapa de memoria Direcciones de memoria Mapa de puertos Direcciones de puertos Instrucciones: IN , OUTInstrucciones: LDx, STx Acceso a dispositivos en Linux: ioperm #include <sys/io.h> /* for glibc */ int ioperm(unsigned long from, unsigned long num, int turn_on); Argumentos: • from: Dirección del Puerto base para el que se van a solicitar permisos • num: Cantidad de puertos • turn_on: 0 para deshabilitar permisos y 1 para habilitar permisos Valor devuelto: • 0 en caso de éxito • -1 en caso de existir un inconveniente Acceso a dispositivos en Linux: ioperm Ejemplo: ioperm(0x200, 16,1); Solicita la habilitación de los puertos 0x200 a 0x20F Acceso a dispositivos en Linux: outb #include <sys/io.h> /* for glibc */ void outb(unsigned char value, unsigned short int port) Argumentos: • value: Valor a escribir en el puerto • port: Dirección del puerto a escribir Valor devuelto: • No devuelve ningún valor Acceso a dispositivos en Linux: inb, outb Ejemplo: outb(0xFF,0x201); Escribe el valor 0xFF en el puerto 0x201. Acceso a dispositivos en Linux: outb #include <sys/io.h> /* for glibc */ unsigned char inb(unsigned short int port) Argumentos: • port: Dirección del puerto a leer Valor devuelto: • Devuelve el valor obtenido de la lectura del puerto cuya dirección se indica Acceso a dispositivos en Linux: inb, outb Ejemplo: valor=inb(0x201); Lee el puerto 0x201 y guarda el resultado obtenido en la variable “valor”. Acceso a dispositivos en Linux Advertencia: Este enfoque implica acceder directamente al mapa de puertos otorgándole a la aplicación permisos de administración. Hardware Driver A Driver B Sistema operativo Drivers Aplicación Aplicaciones
Compartir