Skip to content

aledjv22/Lab-OrgCompu-23

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Laboratorio de Organización del Computador - Edición 2023

  • Configuración de pantalla: 640x480 pixels, formato ARGB 32 bits.
  • El registro X0 contiene la dirección base del FrameBuffer (Pixel 1).
  • El código de cada consigna debe ser escrito en el archivo app.s.
  • El archivo start.s contiene la inicialización del FrameBuffer (NO EDITAR), al finalizar llama a app.s.
  • El código de ejemplo pinta toda la pantalla un solo color.

Estructura

  • app.s Este archivo contiene a apliación. Todo el hardware ya está inicializado anteriormente.

  • start.s Este archivo realiza la inicialización del hardware.

  • Makefile Archivo que describe como construir el software (que ensamblador utilizar, que salida generar, etc).

  • memmap Este archivo contiene la descripción de la distribución de la memoria del programa y donde colocar cada sección.

  • README.md este archivo.

Uso

El archivo Makefile contiene lo necesario para construir el proyecto. Se pueden utilizar otros archivos .s si les resulta práctico para emprolijar el código y el Makefile los ensamblará.

Para correr el proyecto ejecutar

Debe ubicarse en el directorio ejercicio01 o en el directorio ejercicio02, ya que dependiendo del ejercicio que quiera correr obtendrá un resultado distinto.

$ make runQEMU

Esto construirá el código y ejecutará qemu para su emulación.

Si qemu se queja con un error parecido a qemu-system-aarch64: unsupported machine type, prueben cambiar raspi3 por raspi3b en la receta runQEMU del Makefile (línea 23 si no lo cambiaron).

Para correr el gpio manager

$ make runGPIOM

Ejecutar en otra terminal luego de haber corrido qemu.

Ejercicio 1:

El código genera la imagen de una carretera con arboles de copa circular, un auto azul y una camioneta blanca. De pulsar la tecla W los arboles pasan a ser pinos, los vehiculos cambian de lugar y color. De pulsar W se regresa a la imagen inicial.

Ejercicio 2:

La animacion muestra 3 paisajes distintos de rutas diferenciadas por los tipos de arboles y suelo, se pueden cambiar con las teclas W y S ya que son un ciclo bidireccional. La tecla A cambia las lineas punteadas del asfalto por lineas amarillas. Tecla D elimina y aparece uno a uno las camionetas mediante un ciclo repetitivo. El 'espacio' genera una secuencia de persecución entre un auto y una avioneta terminando el vehiculo eliminado por un misil. Tras detenerse la línea de ruta se habilita el uso de la W y S.

Imagenes de ejecución:

Ej01A

Ej01B

Ej02A

Ej02B

Ej02C

Ej02D

Ej02E

Ej02F

Ej02G

Como correr qemu y gcc usando Docker containers

Los containers son maquinas virtuales livianas que permiten correr procesos individuales como el qemu y gcc.

Para seguir esta guia primero tienen que instala docker y asegurarse que el usuario que vayan a usar tenga permiso para correr docker (ie dockergrp) o ser root

Linux

  • Para construir el container hacer
docker build -t famaf/rpi-qemu .
  • Para arrancarlo
xhost +
cd rpi-asm-framebuffer
docker run -dt --name rpi-qemu --rm -v $(pwd):/local --privileged -e "DISPLAY=${DISPLAY:-:0.0}" -v /tmp/.X11-unix:/tmp/.X11-unix -v "$HOME/.Xauthority:/root/.Xauthority:rw" famaf/rpi-qemu
  • Para correr el emulador y el simulador de I/O
docker exec -d rpi-qemu make runQEMU
docker exec -it rpi-qemu make runGPIOM
  • Para terminar el container
docker kill rpi-qemu

MacOS

En MacOS primero tienen que instalar un X server (i.e. XQuartz)

  • Para construir el container hacer
docker build -t famaf/rpi-qemu .
  • Para arrancarlo
xhost +
cd rpi-asm-framebuffer
docker run -dt --name rpi-qemu --rm -v $(pwd):/local --privileged -e "DISPLAY=host.docker.internal:0" -v /tmp/.X11-unix:/tmp/.X11-unix -v "$HOME/.Xauthority:/root/.Xauthority:rw" famaf/rpi-qemu
  • Para correr el emulador y el simulador de I/O
docker exec -d rpi-qemu make runQEMU
docker exec -it rpi-qemu make runGPIOM
  • Para terminar el container
docker kill rpi-qemu

Otros comandos utiles

# Correr el container en modo interactivo
docker run -it --rm -v $(pwd):/local --privileged -e "DISPLAY=${DISPLAY:-:0.0}" -v /tmp/.X11-unix:/tmp/.X11-unix -v "$HOME/.Xauthority:/root/.Xauthority:rw" famaf/rpi-qemu
# Correr un shell en el container
docker exec -it rpi-qemu /bin/bash

Licencia

Este proyecto es software libre, y está disponible bajo la licencia MIT.

Autores