Está en la página 1de 5

Departamento de Arquitectura y Tecnologa de Computadores

PRCTICA 3
INTRODUCCIN A LOS SISTEMAS DE E/S I
ARQUITECTURA DE COMPUTADORES. 2 CURSO.

Objetivos.
Los objetivos globales de esta prctica se recogen en los siguientes apartados: Consolidar los conocimientos adquiridos sobre los mecanismos de Entrada/Salida Aprender a programar dispositivos de E/S a bajo nivel en C Conocer la gestin de E/S en Linux Adquirir soltura a la hora de manejar datasheets o informacin tcnica

Esta prctica se subdividir en dos sesiones (prcticas 3 y 4), entre las cuales se cubrir la totalidad de los objetivos descritos anteriormente.

Descripcin global del sistema a desarrollar.


PRIMERA SESIN (presente prctica) En esta sesin se realizar un repaso del lenguaje de programacin C, centrndonos en aspectos sintcticos, as como una introduccin al entorno que se utilizar en ambas sesiones. Una vez se hayan explicados dichos aspectos, se ejercitar con el lenguaje C dentro de dicho entorno de programacin, mediante una serie de ejercicios de programacin muy bsicos. SEGUNDA SESIN (siguiente prctica) Una vez conocido el entorno y el lenguaje, se llevar a cabo la finalidad de esta prctica, que no es ms que el acceso por lectura y escritura a un dispositivo de entrada/salida mediante la comunicacin con su controlador correspondiente. Se expondr el esquema de conexin y obtencin de datos, para permitir al alumno comunicarse con el Reloj de Tiempo Real (RTC) y obtener la fecha y hora del sistema; as como poder modificarlos a nuestro gusto.

SESIN 1: LENGUAJE C Y ENTORNO KDEVELOP (LINUX).


Para la realizacin de este prctica se har uso de una mquina virtual (disponible para los alumnos) con una distribucin de Linux y el entorno KDevelop instalado y funcionando correctamente. 1.1 Linux y KDevelop Antes de nada, el alumno, previa indicaciones del profesor, iniciar el programa VMWare Player y arrancar la mquina virtual denominada AC-Linux. El usuario y contrasea de acceso a dicha mquina ser: 1

Departamento de Arquitectura y Tecnologa de Computadores

User: ac Pass: ac4ever Este usuario y contrasea tienen acceso root, con lo cual nos sern de gran utilidad cuando, en la segunda sesin, necesitemos ejecutar programas con permiso de administrador. Al arrancar la mquina virtual, nos encontraremos en un entorno similar a ste:

Como podemos ver, ya tenemos el acceso en el escritorio al entorno de desarrollo que utilizaremos para programar en C. Al acceder al entorno de programacin, nos encontraremos en algo similar a lo que podemos ver a continuacin:

Departamento de Arquitectura y Tecnologa de Computadores

Por defecto, la mquina virtual que se proporciona, posee ya creado un proyecto con un programa tipo Hello World. Lo primero que haremos, antes de repasar el lenguaje de programacin C, es ver cmo se ejecutara un programa desde dicho entorno. Para ello, dentro del KDevelop debemos activar la opcin Build Build Project, y se mostrar en la ventana inferior (Messages) el proceso de compilacin y linkado que se realiza; mostrndose, si los hubiere, un listado con los errores encontrados.

A la hora de ejecutar el programa, debemos hacerlo desde la consola de comandos. El entorno KDevelop se ha elegido por integrar la consola de comandos dentro de l (Konsole en la pestaa inferior). Para ejecutar el proyecto, nos dirigiremos a la pestaa Konsole, la cual nos mostrar una consola de comandos situndonos en la ruta en la que se encuentra nuestro proyecto (/home/ac/prueba). Una vez aqu, podemos mostrar un listado de los archivos que se encuentran en dicha ubicacin utilizando el comando ls, como se muestra en la siguiente captura:

Departamento de Arquitectura y Tecnologa de Computadores

Como se puede observar, aparece un listado de archivos, entre los cuales aparecen de diferentes colores. Los archivos de color azul se corresponden con directorios (o carpetas). Al compilar nuestro programa, los archivos temporales y el ejecutable los sita dentro de la carpeta src. As pues, podemos utilizar el comando cd seguido del nombre de la carpeta para acceder a dicho contenido desde la consola de comandos:

El fichero ejecutable es el denominado prueba, que se encuentra en color verde. A la hora de ejecutar un archivo ejecutable en Linux, debemos utilizar el prefijo ./ seguido del archivo ejecutable siempre que nos encontremos en el mismo directorio donde se encuentra el ejecutable. As pues, al ejecutar nuestro programa de prueba, quedar lo siguiente:

Con esto, concluye el tutorial de KDevelop y el proceso de compilacin y ejecucin bajo Linux. 1.2 Programacin en C Se realizar un breve resumen de la programacin en el lenguaje C. As pues, la estructura de un programa en C (solo con los elementos que utilizaremos) es la siguiente: a) b) c) d) e) f) Inclusin de libreras Definicin de constantes Prototipos de funciones Declaracin de variables globales Funcin principal (main) Definicin del resto de funciones

Un ejemplo global es el siguiente:

Departamento de Arquitectura y Tecnologa de Computadores #include <stdio.h> #define PI 3.141592 float calculaAreaCircunferencia (float); float radio = 8; void main () { float res; printf(Clculo del rea de una circunferencia dado radio\n); res=calculaAreaCircunferencia (radio); printf(El resultado del clculo ha sido: %f\n, res); } float calculaAreaCircunferencia (float r) { return (PI*r*r); }

el

Recordando la estructura de un programa escrito en lenguaje C, damos paso a la realizacin de una serie de ejercicios en este lenguaje de cara a practicar para la prxima sesin. EJERCICIOS Ejercicio 1: Utilice las funciones de peticin y obtencin de datos (printf y scanf) para crear un programa que calcule el rea de una circunferencia, pero no con un radio fijo, sino con el radio que le introducimos por teclado. Nota: reutilice la funcin definida en el ejemplo. Ejercicio 2: Utilice los operadores de desplazamiento que nos aporta C (>> y <<) para, con un dato solicitado por teclado, multiplicar este dato por 2 y por 4, para posteriormente obtener el resultado. Nota: los operadores funcionan de la siguiente forma variable << N (desplaza N bits de variable a la izquierda). De igual forma, realcelo para dividir dicho valor entre 2 y 4. Ejercicio 3: Realice un programa que, con un dato obtenido por teclado, vaya mostrando el resultado de desplazar dicho valor un bit a la derecha; y que esto se repita hasta que el valor sea 0. Nota: utilice estructuras iterativas tipo while o for para este propsito. Ejercicio 4: Ahora trabajaremos con mscaras. Para ello realice una funcin que reciba por parmetros un nmero entero sin signo, y que devuelva este mismo entero pero mostrando solo la parte baja de la palabra (16 bits menos significativos). Nota: C posee mscaras binarias OR ( | ) y AND ( & ), por ejemplo variable & 0x01 devuelve la variable despus de eliminar el valor de todos los bits exceptuando el menos significativo Ejercicio 5: Realice una funcin que reciba por parmetros un nmero entero sin signo, y que devuelva este mismo entero pero mostrando solo la parte alta de la palabra (16 bits ms significativos), despus de haberlos desplazado hasta la zona baja (desplazamiento de bits). Ejercicio 6: realice una funcin que reciba un nmero entero sin signo de 8 bits y devuelva dicho nmero despus de convertirlo a formato BCD empaquetado. Nota: la conversin de binario a BCD empaquetado es la siguiente:

((4 bits ms significativos del nmero Binario) desplazados a la parte baja)* 10 + (4 bits menos significativos del nmero Binario) 5

También podría gustarte