- Configuración de pantalla:
640x480pixels, formatoARGB32 bits. - El registro
X0contiene 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.
-
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.
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
$ make runQEMUEsto 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).
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
- Para construir el container hacer
docker build -t famaf/rpi-qemu .- Para arrancarlo
xhost +
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
docker exec -d rpi-qemu make runQEMU- Para terminar el container
docker kill rpi-qemuEn MacOS primero tienen que instalar un X server (i.e. XQuartz)
- Para construir el container hacer
# 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/bashmodificado segun aula virtual: link