PROYECTO CURSO 2006-2007
En este curso se pretende leer y escribir una memoria EEPROM Serie, con protocolo SPI, a través del puerto paralelo con la temporización adecuada. Para ello se va a utilizar una de estas memorias como dispositivo simple de protección hardware para una aplicación desarrollada por nosotros (vosotros). Este dispositivo también es conocido como "mochila".
La memoria elegida es la 25LC040, memoria EEPROM de 4BKits, organizados como 512x8 bits, con acceso serie tipo SPI. El sistema de protección consiste en que en la memoria habrá una serie de datos en determinadas posiciones. El programa a proteger deberá leer la memoria y comprobar que en dichas posiciones se encuentra la clave esperada. En caso afirmativa el programa podrá ejecutarse y en caso negativo no se le dará acceso y se saldrá al sistema operativo, indicando al usuario que no se puede ejecutar pues no se dispone de la llave necesaria. Los datos a escribir y las posiciones utilizadas serán elección del alumno. Se puede complicar todo lo que se quiera.El acceso a la memoria se realizará a través de un driver, programa residente que por un lado atiende las peticiones de la aplicación y por otro genera las señales necesarias para leer la memoria, que estará conectada al puerto paralelo. Se recomienda leer con especial atención las páginas 7 a 11 de la hoja de datos de la memoria, donde se describe la forma de acceso, tanto para lectura como para escritura, de la memoria.
PC
Para definir el contenido de la memoria se utilizará el formato .s19 o el formato binario. Estos formatos determinan el contenido de cada posición de memoria, el formato s19 en un formato de texto, más sencillo de editar, y el formato binario como copia exacta de cada posición de memoria.
Práctica 1
Descripción:
El alumno realiza un programa complejo en ensamblador, dividido en varias librerías. Este programa será el clásico juego de derribar una pared de ladrillos. Este programa accederá a un simulador, proporcionado y documentado por nosotros, que se comportará como una llave hardware. Sin dicha llave, el programa no podrá funcionar.Objetivos:
- Realizar un primer programa COMPLEJO en ensamblador
- Aprender el uso de librerías
- Acceso a servicios propios
- Uso del teclado
- Creación de ficheros Makefiles (PERO MAKEFILES DE VERDAD)
Elementos que se le proporcionan al alumno
- Creación de librerías
- Formato de ficheros binarios
- Edición de Makefiles y ejemplos
- Simulador que se comporta como llave hardware (con documentación). El simulador leerá un fichero binario que representará el contenido de la llave. Este fichero deberá proporcionarlo el alumno, cada uno con el contenido de memoria correspondiente.
- Librería grafica de uso opcional
Elementos que entrega el alumno
Ficheros fuente (.asm), contenido de la memoria (fichero binario) y Makefile
Práctica 2
Descripción:
El alumno dispondrá de una placa hardware conectada al puerto paralelo y diseñará un driver de acceso a dicha placa. El driver debe de poder interactuar con el programa de la práctica 1. Se premiará lo bien/mal protegido que este el programa. El diseño hardware se podrá adquirir de dos formas. Bien se lo construye el alumno con la documentación completa que se publicará, o bien lo puede tomar prestado de la Escuela, quedándoselo hasta que finalice el curso, devolviéndolo al final.
Objetivos:
- Creación de ficheros .com
- Instalación/Desinstalación de interrupciones
- Uso del puerto paralelo- Formato de ficheros binarios
- Uso del RTC (Real Time Clock o Reloj de Tiempo Real)
Elementos que se le proporcionan al alumno
- Creación de ficheros .COM
- Documentación del Puerto Paralelo
- Documentación del RTC
- Planos de la placa, tanto eléctricos como del Circuito Impreso, así como lista de componentes.
- Aplicación software que programa la EEPROM a partir de un fichero binario que se le proporcione.
Elementos que entrega el alumno
Ficheros fuente (.asm) y Makefile de la Práctica 1 (Pueden haber cambiado)
Ficheros fuente (.asm) y Makefile del driver
Pequeña memoria explicando cómo ha protegido su software
Fichero binario del contenido que ha de tener la EEPROM
Práctica 3
Descripción:
El alumno diseñará un programa en C que escribe/lee eeproms a través de su driver. Programador de memorias EEPROM.
Al alumno se le proporciona el .ejecutable de un compañero y debe de intentar saltarse la protección.
Objetivos:
- Interacción C/ASM
- USO DEL DEBUGGER
Elementos que se le proporcionan al alumno
Ejecutable del compañero
Documentación del interfaz entre C y ASM
Elementos que entrega el alumno
Ficheros fuentes (.c y .asm) que escribe/lee eeproms
Fichero .S19 para reventar la práctica compañero
Memoria detallando cómo lo ha hecho
Driver: Un driver es un programa (generalmente residente) que accede directamente a ciertos recursos, ofreciendo la interfaz entre estos y el programa de usuario. La ventaja en el uso de drivers es que independiza el funcionamiento del programa de usuario de los recursos que se utilicen. Cobra una mayor importancia cuando los recursos son hardware que se conecta al PC, ya que si el circuito cambia (por ejemplo se actualiza una tarjeta), basta con actualizar también el driver y todos los programas que lo utilizaran seguirán funcionando (siempre que el driver siga cumpliendo con la interfaz anterior, lógicamente). Suponer lo que sería diseñar un programa diferente para cada tarjeta gráfica que hay en el mercado. Lo que se hace es definir una interfaz común para todos y cada fabricante, al diseñar el driver de su tarjeta, se ocupará de cumplir con esos requerimientos, mientras el acceso a su tarjeta puede cambiar en cualquier momento para obtener el máximo rendimiento. En nuestra aplicación, el driver es el que realmente va a acceder a la memoria, gestionando la lectura y escritura de los datos, la temporización, etc.
Bibliografía recomendada para este proyecto.
Además de la bibliografía recomendada para la asignatura, se incluyen unas referencias que describen el funcionamiento del puerto paralelo: