COMPUTING

Hasta las rodillas en el LED: los piratas informáticos hacen que Doom funcione con la bombilla inteligente de Ikea

Un grupo de piratas informáticos ha puesto en marcha a Doom en una plataforma inusual: una bombilla inteligente Ikea. El grupo escribió su proyecto en Next-Hack y compartió detalles de la implementación.

Este grupo decidió poner en marcha Doom en una plataforma de gama baja y establecer reglas específicas para ellos mismos sobre lo que sería y no sería aceptable. El dispositivo debe tener una potencia informática razonable en relación con los requisitos originales de Doom. El equipo hace referencia a un 486-33, aunque puedo decirte por experiencia personal que podrías jugarlo con un frustum de visualización modesto en hardware tan débil como un 80386SX-16. Solo el microcontrolador dentro del dispositivo elegido podría usarse para ejecutar el juego. Era aceptable agregar una pequeña pantalla a color y una memoria flash adicional para almacenar archivos. El objetivo mínimo era jugar E1M1, también conocido como el primer nivel de “Knee-Deep in the Dead”.

El equipo originalmente planeó desplegar una lámpara Ikea Trådefri. Si bien el modesto Cortex M4 de 40MHz era bastante poderoso, el chip solo tenía 32KB de RAM. Esto se consideró imposible. Luego, algunos meses después, Ikea se actualizó con un nuevo modelo. Estas nuevas lámparas presentaban una Cortex-M33 de 80MHz y 108KB de RAM en total con 1MB de flash NAND. El equipo también adjuntó 8 MB adicionales de flash NAND.

https://www.youtube.com/watch?v=7ybybf4tJWw

El desarrollo se manejó en un Cortex-M7 comparativamente poderoso. El chip STM que usaron, un STM32H743, cuenta con un chip flash NAND QSPI (interfaz paralela serie cuádruple) mapeado en memoria, lo que permite al equipo tratarlo como flash mapeado en memoria.

El equipo repasa las optimizaciones que hizo para que Doom funcione con menos de 108 KB de RAM en lugar de los 160 KB + que estiman que requiere de forma predeterminada. Ahorraron una cantidad sustancial de memoria al convertir tipos de datos: Doom usó enteros de 32 bits en algunos casos, donde solo se requerían 8 o 16 bits. En varios casos, tomaron datos que originalmente estaban almacenados en la RAM y los movieron a la memoria flash NAND para liberar suficiente capacidad para que el juego se ejecutara en primer lugar. Incluso optimizaron el búfer de memoria para ahorrar 5 KB de RAM. Una cosa interesante que revelaron sus pruebas: el rendimiento, incluso en una bombilla inteligente, está determinado más por la velocidad de los accesos a la memoria flash que por la velocidad de la CPU.

Pero incluso después de todo esto, el equipo tuvo un problema: las velocidades de transferencia de datos en el STM32H743 eran lo suficientemente rápidas, pero el EFR32MG21 con el que estaban trabajando dentro de la bombilla inteligente Ikea no admitía la misma interfaz de alta velocidad (relativamente). Su ancho de banda de almacenamiento inicial estaba limitado a 2.5 MB / s hasta que overclockearon el chip a 80MHz. Ese ancho de banda mejorado hasta 5 MB / s. Dejaré que me expliquen cómo lo volvieron a duplicar:

El EFR32MG21 tiene tres USART. Uno de los elementos se utiliza para imprimir mensajes de depuración y descargar el archivo WAD a la memoria flash externa. Nos quedan dos USART… ¡y el sistema de reflejos periféricos! Con estos dos, podemos sincronizar los dos USART (trabajando en modo SPI) para que lean datos al mismo tiempo, creando en realidad un SPI doble (DSPI). Afortunadamente, la memoria QSPI también admite lectura dual y, de esta manera, ¡podemos alcanzar los 10 MB / s!

La historia continúa describiendo cómo mantuvieron los dos SPI sincronizados y el trabajo adicional que hizo el equipo para que el audio funcionara. y Juega en dificultad Ultra Violence sin quedarte sin RAM. También hay instrucciones paso a paso sobre cómo construir el dispositivo. El rendimiento general y la calidad de imagen son mejores que la versión GBA. El grupo señala que el ARM7TDMI de 16.7MHz de GBA solo era capaz de 0.9 DMIPS / MHz, mientras que el CM33 alcanza ~ 1.5DMIPS / MHz y funciona a 80MHz. El equipo no ha terminado de optimizar Doom para su diminuta plataforma y planean mejorar tanto el rendimiento como el uso de RAM en los próximos días.

Publicaciones relacionadas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar
Cerrar