Ordinateurs

Jusqu’aux genoux dans la LED : les pirates informatiques lancent Doom sur l’ampoule intelligente Ikea

Ce site peut gagner des commissions d’affiliation à partir des liens sur cette page. Conditions d’utilisation.

Mise à jour: Depuis que nous avons écrit cette histoire, le lien original sur Next-Hack et la vidéo associée ont tous deux disparu. Nous avons laissé le lien vers Next-Hack au cas où l’histoire reviendrait, mais nous avons supprimé le lien vidéo pour éviter d’avoir une intégration morte sans raison. Il n’y a aucune raison donnée pour laquelle le projet a été retiré. Un lien vers la page d’origine, avec certains des éléments visuels, est disponible sur le Archives Internet. Histoire originale ci-dessous :

Un groupe de hackers a lancé Doom sur une plate-forme inhabituelle : une ampoule intelligente Ikea. Le groupe a écrit son projet sur Next-Hack et partagé les détails de la mise en œuvre.

Ce groupe a décidé de lancer Doom sur une plate-forme bas de gamme et se fixent des règles spécifiques sur ce qui serait et ne serait pas acceptable. L’appareil doit avoir une puissance de calcul raisonnable par rapport aux exigences d’origine de Doom. L’équipe fait référence à un 486-33, bien que je puisse vous dire par expérience personnelle que vous pouvez y jouer avec un frustum de visualisation modeste sur un matériel aussi faible qu’un 80386SX-16. Seul le microcontrôleur à l’intérieur de l’appareil choisi pourrait être utilisé pour exécuter le jeu. L’ajout d’un petit écran couleur et d’une mémoire flash supplémentaire pour stocker les fichiers était acceptable. L’objectif minimum était de jouer à E1M1, autrement connu comme le premier niveau de « Knee-Deep in the Dead ».

L’équipe avait initialement prévu de déployer une lampe Ikea Trådefri. Alors que le modeste Cortex M4 à 40 MHz était très puissant, la puce ne disposait que de 32 Ko de RAM. Cela a été jugé impossible. Puis, quelques mois plus tard, Ikea a mis à jour avec un nouveau modèle. Ces nouvelles lampes comportaient un Cortex-M33 à 80 MHz et 108 Ko de RAM au total avec 1 Mo de flash NAND. L’équipe a également joint 8 Mo supplémentaires de mémoire flash NAND.

Le développement a été géré sur un Cortex-M7 relativement puissant. La puce STM qu’ils ont utilisée, une STM32H743dispose d’une puce flash NAND QSPI (quad serial parallel interface) mappée en mémoire, permettant à l’équipe de la traiter comme une mémoire flash mappée.

L’équipe passe en revue les optimisations qu’elle a apportées pour que Doom fonctionne avec moins de 108 Ko de RAM, par opposition aux 160 Ko + qu’elle estime nécessaires par défaut. Ils ont économisé une quantité substantielle de mémoire en convertissant les types de données – Doom utilisait des entiers 32 bits dans certains cas, où seuls 8 ou 16 bits étaient nécessaires. Dans plusieurs cas, ils ont pris des données initialement stockées dans la RAM et les ont déplacées vers la mémoire flash NAND pour libérer suffisamment de capacité pour permettre au jeu de fonctionner en premier lieu. Ils ont même optimisé la mémoire tampon pour économiser 5 Ko de RAM. Une chose intéressante révélée par leurs tests : les performances, même sur une ampoule intelligente, sont davantage déterminées par la vitesse d’accès à la mémoire flash que par la vitesse du processeur.

Mais même après tout cela, l’équipe avait un problème : les vitesses de transfert de données sur le STM32H743 étaient assez rapides, mais l’EFR32MG21 avec lequel ils travaillaient à l’intérieur de l’ampoule intelligente Ikea ne prenait pas en charge la même interface à haut débit (relativement). Leur bande passante de stockage initiale était limitée à 2,5 Mo/s jusqu’à ce qu’ils overclockent la puce à 80 MHz. Cela a amélioré la bande passante jusqu’à 5 Mo/s. Je vais les laisser expliquer comment ils l’ont encore doublé :

L’EFR32MG21 a trois USART. L’un d’entre eux est utilisé pour imprimer les messages de débogage et télécharger le fichier WAD sur la mémoire flash externe. Il nous reste deux USART… et le système réflexe périphérique ! Avec ces deux, nous pouvons synchroniser les deux USART (fonctionnant en mode SPI) afin qu’ils lisent les données en même temps, créant en fait un double SPI (DSPI). Heureusement, la mémoire QSPI supporte aussi la double lecture, et de cette manière, on peut atteindre les 10 Mo/s !

L’histoire continue en décrivant comment ils ont maintenu la synchronisation des deux SPI et le travail supplémentaire que l’équipe a effectué pour que l’audio fonctionne. et Jouez au jeu en difficulté Ultra Violence sans manquer de RAM. Il existe également des instructions étape par étape sur la façon de construire l’appareil. Les performances globales et la qualité d’image sont meilleures que la version GBA. Le groupe souligne que l’ARM7TDMI 16,7 MHz du GBA n’était capable que de 0,9 DMIPS/MHz, tandis que le CM33 atteint ~ 1,5 DMIPS/MHz et fonctionne à 80 MHz. L’équipe n’a pas fini d’optimiser Doom pour sa petite plate-forme et prévoit d’améliorer à la fois les performances et l’utilisation de la RAM dans les prochains jours.

Maintenant lis:

Bouton retour en haut de la page