LABORATORIO DE ARQUITECTURA DE COMPUTADORES
Enviado por Marcel Caceres Bretti • 9 de Noviembre de 2015 • Práctica o problema • 676 Palabras (3 Páginas) • 155 Visitas
UNIVERSIDAD DIEGO PORTALES
ARQUITECTURA DE COMPUTADORES
LABORAORIO 4
AYUDANTE
LJUBO FRANULIC
INTEGRANTE
MARCEL CÁCERES BRETTI
INDICE
INTRODUCCIÓN
OBJETIVO GENERAL
OBJETIVO ESPECIFICO
DESARROLLO
MATERIALES
PROCEDIMIENTO
PLANEACIÓN
IMPLEMENTACIÓN
USANDO LA NUEVA FUNCIÓN
RESULTADOS
CONCLUSION
INTRODUCCIÓN
En el presente documento se describe la experiencia correspondiente al laboratorio 4, en la que seguiremos ahondando en las características presentes en la Raspberry pi, en esta ocasión realizaremos operaciones con el temporizador de 1MHZ que viene incorporado como hardware en este dispositivo.
OBJETIVO GENERAL
Reconocer los elementos de hardware que forman un computador y entender como se organizan, por medio de una Raspberry Pi, un ordenador de placa reducida que contiene todos los elementos de un sistema con arquitectura ARM.
OBJETIVO ESPECIFICO
En la presente experiencia, el alumno continuará con el manejo del hardware de la Raspberry, controlando el Led en intervalos precisos ocupando el timer incluido en la placa.
DESARROLLO
MATERIALES
- Raspberry Pi modelo B
- Tarjeta SD con Raspbian
- Cargador micro USB de al menos 5v
- Plantilla para un nuevo sistema operativo.
PROCEDIMIENTO
PLANEACIÓN
Se creó otro archivo llamado systemTimer.s para escribir instrucciones con el fin manejar el controlador de tiempo presente en el dispositivo, como el contador es un valor de 8 bytes, pero en cada registro se puede almacenar 4 bytes, la mejor forma de hacer esto es calcular la diferencia entre el valor actual del contador y el valor de cuando comenzó el método, y luego comparar esto con el valor de espera pedido.
IMPLEMENTACIÓN
Basándonos en la experiencia anterior, la primera función que se creó fue la función que sirve para obtener la dirección del temporizador del sistema:
. globl GetSystemTimerBase
GetSystemTimerBase :
ldr r0 ,=0 x20003000
mov pc ,lr
Luego se codificó una función para guardar el valor actual del contador en los registros r0 y r1:
. globl GetTimeStamp
GetTimeStamp :
push {lr}
bl GetSystemTimerBase
ldrd r0 ,r1 ,[r0 ,#4]
pop {pc}
Posteriormente se construyó la función de espera, Este código copia el valor de nuestro método, la cantidad de tiempo a esperar (al cual llamamos \delay"), en r2, y luego llama a GetTimeStamp, que sabemos retornara el valor actual del contador en r0 y r1. Luego copia los 4 bytes más bajos del valor del contador a r3. Después necesitamos calcular la diferencia entre el valor del contador actual y la lectura que acabamos de tomar, y seguir haciendo esto hasta que la brecha entre ellos es al menos del valor de \delay" (nuestro retraso).
...