- Configuración de pantalla:
640x480
pixels, formatoARGB
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.
-
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 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 luego de haber corrido qemu.
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 +
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
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
# 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