Traduction de l'article " Tear to pieces " du blog de Jason GinTL; DR: oui, sur l'oscilloscope Keysight 1000 X-Series, vous pouvez réellement exécuter Doom! Cependant, ce n'est pas facile à faire.
Keysight DSOX1102GL'oscilloscope devrait avoir dans son arsenal tout passionné d'électronique qui se respecte. Les oscilloscopes, en bref, vous permettent d'étudier les ondes de signaux électriques dans le circuit, et les oscilloscopes numériques (DSO) sont indispensables en ce qu'ils peuvent trouver de rares erreurs dans le signal qu'un oscilloscope ou multimètre analogique ne reconnaît pas.
Le sujet de mon article est le
DSOX1102G de Keysight Technologies (anciennement Agilent), de leur gamme d'oscilloscopes bon marché, qui ont un bon rapport qualité / prix par rapport aux produits concurrents. Comme la plupart de leurs oscilloscopes, ce modèle exécute le système d'exploitation
Windows Embedded CE 6.0 intégré (également connu sous le nom de Windows CE ou WinCE), mais, comme dans la plupart des applications WinCE, vous ne voyez presque jamais son interface - il est caché derrière un système spécialement conçu interface utilisateur.
Étape 1: l'éveil
Lorsque la série Keysight 1000-X a été lancée au début de 2017, l'un des examinateurs de
Hackaday a remarqué que la méthode d'enregistrement des données sur ces oscilloscopes entraînait parfois leurs plantages et redémarrages, et a noté qu'un pointeur de la souris pouvait être vu à l'écran pendant plusieurs secondes avant le chargement. . Il y avait un gif dans son message, où il enregistre un fichier qui provoque un crash, et j'ai remarqué quelque chose d'étrange sur l'une des images de l'animation - là, vous pouviez distinguer la barre des tâches de Windows immédiatement devant l'écran noir avec une erreur. Intéressant! ..

Ayant gagné mon oscilloscope grâce au concours Scope Month de Keysight, pendant quelques mois, je n'y ai pas pensé jusqu'à ce que je tombe sur un écran avec un échec de moi-même. Dans mon cas, j'ai trouvé que l'en-tête Windows CE était visible au-dessus du gestionnaire de pannes de l'oscilloscope; faire glisser l'en-tête a laissé une marque et a fini par accrocher WinCE. Cela s'est produit très rarement, donc, après être tombé sur des échecs par la suite, j'ai simplement autorisé le gestionnaire à analyser le système de fichiers et à redémarrer le système d'exploitation.
Cependant, cela m'a intrigué et je voulais en savoir beaucoup sur ce qui se passait avec le système WinCE sous-jacent. J'ai trouvé que le port USB de l'oscilloscope est assez sujet aux erreurs, et le simple fait de retourner le lecteur flash dans le port pourrait provoquer un crash. Cependant, cela ne suffit pas pour collecter la quantité d'informations nécessaire, car il s'agit d'une méthode peu fiable.
C'est ainsi qu'a commencé ma recherche d'accès au bureau WinCE.
Au début, j'ai essayé une solution purement logicielle, en essayant de créer un fichier de mise à jour du firmware .ksx (en fait, c'est juste une archive .cab), qui pourrait arrêter le programme de l'oscilloscope et ouvrir l'Explorateur Windows - cela n'a pas fonctionné. Le logiciel de l'oscilloscope a émis un message d'erreur se plaignant qu'il n'était pas possible d'ouvrir le fichier. Il s'avère qu'une telle solution ne fonctionnerait pas, même si je la forçais à télécharger le fichier de mise à jour, car le logiciel de l'oscilloscope ne va pas sur le bureau pendant la mise à jour. Ayant rencontré ce premier obstacle sérieux, j'ai temporairement mis de côté la curiosité et utilisé l'oscilloscope pour sa destination.
Étape 2: jetez un œil plus profond
À cause de ma curiosité, j'ai décidé une fois de voir si l'oscilloscope pouvait lire et écrire des disquettes 3,5 pouces (ou, comme le disent les jeunes, une icône de sauvegarde imprimée) via le port USB - et il le pouvait! Cependant, j'ai remarqué un problème étrange; l'oscilloscope il s'est écrasé si j'ai laissé le lecteur dans le port USB lorsque je l'ai allumé Eureka! J'ai trouvé un moyen de provoquer un crash de manière fiable.
Ici, malheureusement, un deuxième obstacle sérieux m'attendait. Cet échec de démarrage s'est produit uniquement si un seul périphérique était inclus dans le port USB - le lecteur. Il n'y a pas eu d'échec si j'ai utilisé un concentrateur USB comprenant un lecteur. Cela signifiait que je devrais basculer très rapidement entre le lecteur et une souris USB avec un clavier. La précipitation pour retirer le disque le plus rapidement possible et insérer la combinaison du clavier et du pavé tactile dans l'USB pendant le processus de démarrage était fatigante et ennuyeuse. J'avais besoin d'une meilleure solution - une solution matérielle.
Commutateur A / B spécial pour USB, fabriqué par mes soins pour un remplacement rapide des appareilsÀ l'aide d'un vieux câble USB, d'un concentrateur USB mort et d'un commutateur DPDT, j'ai créé un commutateur USB A / B pour simplifier et accélérer le processus de commutation entre les appareils. En utilisant cette méthode, j'ai réussi à établir un contact avec WinCE OS pendant une fraction de seconde, alors que la barre des tâches était visible à l'écran, et jusqu'à ce que le gestionnaire de pannes me casse toutes les framboises. En utilisant la magie de la prise de vue au ralenti de mon Samsung Galaxy S9, j'ai pu déterminer que je pouvais envoyer des touches à WinCE et qu'il les traitait - même sur l'économiseur d'écran du système! J'ai pu obtenir des informations sur le système en appuyant aveuglément sur des touches, puis en étudiant la réponse lorsqu'un logiciel d'oscilloscope se bloque. Puis je suis tombé sur un deuxième obstacle.
La possibilité d'une interaction très brève avec WinCE est bonne, mais elle était inutile, car je ne pouvais pas en prendre le contrôle jusqu'à ce que le gestionnaire d'erreurs ait redémarré le système. Le gestionnaire s'accrochait étroitement au système d'exploitation, et aucun glissement sur le clavier et Ctrl + Alt + Suppr ne me permettait de revenir à WinCE.
Étape 3: à la recherche d'un pied
Et encore une fois, ma curiosité de jouer périodiquement m'a été utile lorsque j'ai décidé d'utiliser mon ancien
Sony Clie PEG-NX73V (ordinateur de poche sur PalmOS à partir de 2003) comme clé USB. Il avait une fonction d'importation de données qui vous permettait de glisser-déposer des fichiers sur une carte mémoire de la même manière que sur un disque amovible.
Tout comme avec une clé USB, un plantage du système s'est produit lorsque j'ai allumé l'oscilloscope sans retirer le PDA. Cependant, cette fois, le gestionnaire de fautes a décidé que le système de fichiers PDA était une section de micrologiciel endommagée et a suggéré de télécharger la mise à jour du micrologiciel à partir d'un lecteur flash USB externe.

Ce comportement n'était pas régulier, parfois le logiciel de l'oscilloscope était toujours chargé, et une fenêtre très étrange apparaissait de WinCE avec un pointeur de souris bleu vif laissant des traces sur l'écran. Cependant, dans cet état étrange, j'ai réussi à tirer la fenêtre du logiciel de l'oscilloscope InfiniiVision sur le côté et j'ai essayé de pousser l'OS. Mais le logiciel de l'oscilloscope s'est comporté de manière très agressive et a retrouvé la concentration à chaque fois après avoir cliqué en dehors de la fenêtre. Après quelques histoires avec un OS étrangement peint, j'ai pu le contourner. Je ne pouvais pas afficher le système de fichiers, car je ne pouvais pas prendre le contrôle depuis longtemps à partir de la fenêtre du logiciel de l'oscilloscope, mais j'ai pu appeler la boîte de dialogue des propriétés du système, où il était écrit que l'oscilloscope était basé sur Windows CE 6.00 et qu'il avait 100 Mo de RAM.

J'ai ensuite décidé de fouiller dans les
forums EEVblog, où les gens essaient activement de pirater l'oscilloscope pour ouvrir des possibilités supplémentaires. Là, j'ai trouvé que le logiciel recherchait le fichier infiniiVisionStartupOverride.txt à la racine du lecteur flash USB, et s'il le fait, il essaie de télécharger le logiciel de l'oscilloscope à partir de celui-ci. Et bien que, apparemment, le micrologiciel n'ait pas réellement téléchargé le logiciel à partir du lecteur flash, ce processus a interrompu le lancement du logiciel de l'oscilloscope, puis personne ne m'a pris le contrôle du système d'exploitation. À partir de ce moment, tout est devenu plus intéressant - le gestionnaire de fautes a ouvert la fenêtre de l'Explorateur et a entré "*. *" Dans le champ du nom de fichier, j'ai pu commencer à fouiller dans le système de fichiers de l'oscilloscope et une clé USB! C'est exactement ce dont j'avais besoin pour prendre le contrôle de WinCE. Cependant, j'ai rencontré un autre obstacle: l'oscilloscope a redémarré après 60 secondes, à cause duquel je n'ai pas eu beaucoup de temps pour creuser dans le système d'exploitation.
Demande de mise à jour du firmware DSOX1102G avec une boîte de dialogue de sélection de fichier à partir d'un lecteur flash
Le gestionnaire de tâches Windows CE affiche les processus en cours d'exécution sur l'écran de récupération du micrologicielAprès avoir copié plusieurs outils Windows CE, par exemple, le Gestionnaire des tâches Windows CE, j'ai remarqué deux processus intéressants qui ont démarré lorsque le gestionnaire de pannes était encore visible - RecoverInfiniiVision.exe et processStartupFolder.exe; Apparemment, le premier était un gestionnaire de fautes qui ne m'a pas donné accès à WinCE après un crash logiciel de l'oscilloscope. Après avoir battu le deuxième processus à l'aide d'iTaskMgr (la version gratuite du gestionnaire de tâches WinCE ne permet pas de tuer les processus), j'ai pu empêcher l'oscilloscope de redémarrer, et après avoir battu le premier, j'ai vu un bureau WinCE propre - et me voici à l'intérieur! Malheureusement, je n'ai pas pu restaurer la barre des tâches, c'est pourquoi la navigation dans le système d'exploitation était plutôt gênante.
J'ai créé un nouveau dossier sur le bureau pour ouvrir l'Explorateur, et finalement j'ai pu étudier le système de fichiers de l'oscilloscope. Le programme Total Commander / CE, qui a un éditeur de texte intégré, qui n'était pas dans cette version de WinCE, a beaucoup aidé.
Creuser dans le système de fichiers à l'aide de Total Commander / CE (pas encore de barre des tâches)Étape 4: contrôle total
Maintenant, après avoir réussi à accéder au bureau bleu ciel, pour l'expérience complète de WinCE, j'ai dû restaurer la barre des tâches. Googler, grimper sur Stack Overflow, j'ai lancé un petit programme pour cela. En l'ouvrant depuis Explorer, j'ai obtenu la version complète du bureau WinCE! Enfin, j'avais un contrôle total sur le système d'exploitation de base!
Freedom - un bureau WinCE complet sur un oscilloscope!À partir de ce moment, j'ai commencé à fouiller dans le système de fichiers et à voir quels outils intéressants peuvent y être trouvés. L'interpréteur de ligne de commande ne voulait pas démarrer, mais j'ai fouillé dans le registre et trouvé la clé HKEY_LOCAL_MACHINE \ Drivers \ Console \ OutputTo, dont la valeur était 0xFFFFFFFF. En le changeant à 0, j'ai réussi à rendre l'invite de commande visible sur le bureau, j'ai donc créé un autre petit programme qui faisait exactement cela.
Tout s'est bien passé, j'ai créé un fichier batch avec toutes les commandes nécessaires pour tuer le logiciel de l'oscilloscope, le gestionnaire de dossier de démarrage, le gestionnaire d'échec, restaurer la barre des tâches et permettre à l'invite de commandes de démarrer. Cependant, mon PDA devait ouvrir le menu du gestionnaire de pannes, ce qui signifiait que d'autres ne seraient pas en mesure de reproduire un tel effet.
En fouillant plus loin, j'ai constaté que dès que l'écran de démarrage est apparu et que les voyants du panneau ont commencé à clignoter, WinCE a commencé à traiter les frappes même sans logiciel de suppression de périphérique. Appuyer sur win + U a suspendu l'oscilloscope, car cela a ouvert le menu Démarrer et sélectionné l'option Suspendre (et le système d'exploitation n'a pas eu la possibilité de revenir au contrôle après cela, car l'oscilloscope n'avait qu'un bouton de mise hors tension). Dans cet esprit, j'ai renommé mon fichier en a.bat afin que son nom soit plus facile à taper et j'ai essayé de l'exécuter lors du chargement via win + R, la commande \ usb \ a.bat et en appuyant sur Entrée. Mais l'oscilloscope a simplement montré l'économiseur d'écran à l'écran, bien qu'en arrière-plan WinCE était vivant, et je ne pouvais tout simplement pas voir ce qui se passait là-bas. Il s'avère que le gestionnaire d'erreurs était un composant nécessaire pour démontrer le bureau du système d'exploitation, et j'avais juste besoin d'ajouter quelques lignes au fichier de commandes pour démarrer puis arrêter le gestionnaire d'erreurs. En ajoutant ces touches finales, j'ai pu (semi-automatiquement) charger l'oscilloscope juste avant l'apparition du bureau, en utilisant uniquement une clé USB, une souris et un clavier!
Étape 4: Oui, il exécute DOOM!
Ayant accédé à WinCE, j'ai finalement pu répondre à la question: "Doom démarre-t-il?" Et, comme il s'est avéré, ça commence vraiment! Après avoir démarré l'oscilloscope, cela a pris un an et demi, mais j'ai finalement atteint ce jalon.
Ce n'est pas un canular: vous pouvez exécuter Doom sur un oscilloscope Keysight 1000 X!
Doom II fonctionne sur mon DSOX1102G! (3 images par seconde)
Le lancement de Doom dans une fenêtre de taille 320 × 240 a permis de serrer suffisamment d'images par seconde pour le jeu. Regardez quelle palette de couleurs!Dans le prochain article je jouerai un peu plus avec ce légendaire jeu vidéo sur un morceau de fer, qui n'a jamais été destiné aux jeux.
Doom en action à une résolution de 320 × 240, 256 couleurs! Sur l'oscilloscope!Fichiers à télécharger
J'ai téléchargé les fichiers dont vous pourriez avoir besoin pour essayer la même chose sur mon oscilloscope - mais rappelez-vous, je ne suis pas responsable de le transformer en brique ou autre chose désagréable! J'ai testé tout cela uniquement sur mon DSOX1102G, mais je soupçonne que d'autres modèles de la série 1000 X et d'autres oscilloscopes Keysight dotés de la fonction de récupération du firmware peuvent également fonctionner. Le micrologiciel de l'oscilloscope est conçu pour que tous les WinCE fonctionnent en RAM et ne soient pas enregistrés après un redémarrage.Par conséquent, toutes les modifications du système d'exploitation qui cassent le système ne transformeront pas l'oscilloscope en brique (les fichiers avec le micrologiciel se trouvent dans les répertoires du lecteur flash NAND qui ne peuvent pas être ouverts via l'Explorateur, mais Vous ne pouvez composer que par nom).
Le lecteur flash devra être formaté en FAT ou FAT32 et décompressez l'archive zip
Scope Liberator dans sa racine. Les instructions sont dans readme.txt.
Si vous êtes intéressé par le
code source des programmes auxiliaires qui renvoient la barre des tâches et l'interpréteur de ligne de commande, je les ai également publiés.