Logo Studenta

Acceso al hardware

¡Este material tiene más páginas!

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

Continuar navegando