Traducción del artículo " Rasgar en pedazos " del blog de Jason GinTL; DR: sí, en el osciloscopio Keysight 1000 X-Series, ¡puedes ejecutar Doom! Sin embargo, esto no es fácil de hacer.
Keysight DSOX1102GEl osciloscopio debe tener en su arsenal a cualquier entusiasta de la electrónica que se precie. En resumen, los osciloscopios le permiten estudiar las ondas de señales eléctricas en el circuito, y los osciloscopios digitales (DSO) son indispensables porque pueden encontrar errores raros en la señal que un osciloscopio o multímetro analógico no reconoce.
El tema de mi artículo es
DSOX1102G de Keysight Technologies (anteriormente Agilent), de su línea económica de osciloscopios, que tienen una buena relación calidad-precio en comparación con la competencia. Como la mayoría de sus osciloscopios, este modelo ejecuta el
sistema operativo
Windows Embedded CE 6.0 incorporado (también conocido como Windows CE o WinCE), pero, como en la mayoría de las aplicaciones WinCE, casi nunca ve su interfaz: está oculto detrás de un sistema especialmente diseñado interfaz de usuario
Etapa 1: despertar
Cuando se lanzó la serie Keysight 1000-X a principios de 2017, uno de los revisores con
Hackaday notó que el método de guardar datos en estos osciloscopios a veces provocaba bloqueos y reinicios, y señaló que se podía ver un puntero del mouse en la pantalla durante varios segundos antes de cargar . Había un gif en su publicación, donde guarda un archivo que causa un bloqueo, y noté algo extraño en uno de los cuadros de la animación: allí se podía distinguir la barra de tareas de Windows inmediatamente delante de la pantalla en negro con un error. Interesante! ..

Después de haber ganado mi osciloscopio gracias al concurso Scope Month de Keysight, durante un par de meses no lo pensé hasta que me encontré con una pantalla con un fallo por mi cuenta. En mi caso, descubrí que el encabezado de Windows CE estaba visible en la parte superior del controlador de fallas del osciloscopio; arrastrando el encabezado dejó una marca, y terminó colgando WinCE. Esto sucedió muy raramente, por lo tanto, después de haber tropezado con fallas después, simplemente permití que el controlador escaneara el sistema de archivos y reiniciara el sistema operativo.
Sin embargo, estaba intrigado por esto, y quería saber mucho sobre lo que estaba sucediendo con el sistema WinCE subyacente. Descubrí que el puerto USB en el osciloscopio es bastante propenso a errores, y simplemente voltear la unidad flash en el puerto podría causar un bloqueo. Sin embargo, esto no fue suficiente para recopilar la cantidad necesaria de información, ya que era un método poco confiable.
Así comenzó mi búsqueda de acceso al escritorio WinCE.
Al principio probé una solución puramente de software, intentando crear un archivo de actualización de firmware .ksx (de hecho, es solo un archivo .cab), que podría cerrar el programa del osciloscopio y abrir el Explorador de Windows; no funcionó. El software del osciloscopio emitió un mensaje de error quejándose de que no era posible abrir el archivo. Resulta que tal solución no funcionaría, incluso si la obligara a descargar el archivo de actualización, ya que el software del osciloscopio no va al escritorio durante la actualización. Habiendo encontrado este primer obstáculo serio, temporalmente dejé de lado la curiosidad y usé el osciloscopio para el propósito previsto.
Etapa 2: echa un vistazo más profundo
Debido a mi curiosidad, una vez decidí ver si el osciloscopio puede leer y escribir disquetes de 3.5 "(o, como dicen los jóvenes, un icono de guardar impreso) a través del puerto USB, ¡y podría! Sin embargo, noté un problema extraño; el osciloscopio se bloqueó si dejé el disco en el puerto USB cuando lo encendí Eureka! Encontré una manera confiable de causar un bloqueo.
Aquí, desafortunadamente, me esperaba un segundo obstáculo serio. Esta falla de arranque se produjo solo si se incluyó un solo dispositivo en el puerto USB: la unidad. No hubo falla si utilicé un concentrador USB que incluía una unidad. Esto significaba que tendría que cambiar muy rápidamente entre la unidad y un mouse USB con teclado. La prisa por extraer la unidad lo más rápido posible e insertar la combinación de teclado y panel táctil en el USB durante el proceso de arranque fue agotador y molesto. Necesitaba una mejor solución: una solución de hardware.
Interruptor especial A / B para USB, hecho por mí para el reemplazo rápido de dispositivosUsando un viejo cable USB, un concentrador USB muerto y un interruptor DPDT, creé un interruptor USB A / B para simplificar y acelerar el proceso de cambio entre dispositivos. Usando este método, logré establecer contacto con el sistema operativo WinCE por una fracción de segundo, mientras la barra de tareas estaba visible en la pantalla, y hasta que el controlador de fallas me rompió todas las frambuesas. Utilizando la magia en cámara lenta de mi Samsung Galaxy S9, pude determinar que puedo enviar pulsaciones de teclas a WinCE y las procesa, ¡incluso en el protector de pantalla del sistema! Pude obtener información sobre el sistema presionando ciegamente las teclas y luego estudiando la respuesta cuando falla un software de osciloscopio. Entonces me encontré con un segundo obstáculo.
La posibilidad de una interacción muy breve con WinCE es buena, pero fue inútil, ya que no pude controlarla hasta que el controlador de fallas reinició el sistema. El controlador se aferró firmemente al sistema operativo, y no deslizar el teclado y Ctrl + Alt + Suprimir me permitió volver a WinCE.
Etapa 3: buscando un punto de apoyo
Y nuevamente, mi curiosidad por jugar periódicamente fue útil cuando decidí usar mi viejo
Sony Clie PEG-NX73V (portátil en PalmOS desde 2003) como una unidad USB. Tenía una función de importación de datos que le permitía arrastrar y soltar archivos en una tarjeta de memoria de la misma manera que en un disco extraíble.
Al igual que con una unidad USB, se produjo un bloqueo del sistema cuando encendí el osciloscopio sin sacar el PDA. Sin embargo, esta vez el manejador de fallas decidió que el sistema de archivos PDA es una sección de firmware dañada y sugirió descargar la actualización del firmware desde una unidad flash USB externa.

Este comportamiento no era regular, a veces el software del osciloscopio todavía estaba cargado, y apareció una ventana muy extraña de WinCE con un puntero azul brillante que dejaba rastros en la pantalla. Sin embargo, en este extraño estado, logré tirar a un lado la ventana del software del osciloscopio InfiniiVision e intenté sacar el sistema operativo. Pero el software del osciloscopio se comportó de manera muy agresiva y recuperó el foco cada vez que hizo clic fuera de la ventana. Después de un alboroto con un sistema operativo extrañamente pintado, pude evitarlo. No pude ver el sistema de archivos, porque no pude tomar el control durante mucho tiempo desde la ventana del software del osciloscopio, pero pude llamar al cuadro de diálogo de propiedades del sistema, donde estaba escrito que el osciloscopio está basado en Windows CE 6.00 y tiene 100 MB de RAM.

Luego decidí hurgar en los
foros de EEVblog, donde las personas están intentando piratear activamente el osciloscopio para abrir posibilidades adicionales. Allí descubrí que el software está buscando el archivo infiniiVisionStartupOverride.txt en la raíz de la unidad flash USB, y si lo hace, está tratando de descargar el software del osciloscopio. Y aunque, aparentemente, el firmware en realidad no descargó el software de la unidad flash, este proceso interrumpió el inicio del software del osciloscopio, y luego nadie me quitó el control del sistema operativo. A partir de ese momento, todo se volvió más interesante: el controlador de fallas abrió la ventana del Explorador e ingresó "*. *" En el campo de nombre de archivo, ¡pude comenzar a hurgar en el sistema de archivos del osciloscopio y una unidad flash USB! Esto es exactamente lo que necesitaba para obtener el control de WinCE. Sin embargo, me encontré con otro obstáculo: el osciloscopio se reinició después de 60 segundos, por lo que no tuve mucho tiempo para cavar en el sistema operativo.
Solicitud de actualización de firmware DSOX1102G con un cuadro de diálogo de selección de archivo desde una unidad flash
El administrador de tareas de Windows CE muestra los procesos en ejecución en la pantalla de recuperación de firmwareDespués de copiar varias herramientas de Windows CE, por ejemplo, el Administrador de tareas de Windows CE, noté dos procesos interesantes que comenzaron cuando el controlador de fallas aún era visible: recoveryInfiniiVision.exe y processStartupFolder.exe; Aparentemente, el primero fue un controlador de fallas que no me dio acceso a WinCE después de un bloqueo del software del osciloscopio. Después de haber superado el segundo proceso usando iTaskMgr (la versión gratuita del administrador de tareas de WinCE no permite procesos de eliminación) pude evitar que el osciloscopio se reiniciara, y después de haber superado el primero, vi un escritorio WinCE limpio, ¡y aquí estoy dentro! Desafortunadamente, no pude restaurar la barra de tareas, por lo que navegar por el sistema operativo fue bastante inconveniente.
Creé una nueva carpeta en el escritorio para abrir el Explorador, y finalmente pude estudiar el sistema de archivos del osciloscopio. El programa Total Commander / CE, que tiene un editor de texto incorporado, que no estaba en esta versión de WinCE, ayudó mucho.
Excavando en el sistema de archivos usando Total Commander / CE (todavía no hay barra de tareas)Etapa 4: control total
Ahora, habiendo logrado llegar al escritorio azul cielo, para la experiencia completa de WinCE, tuve que restaurar la barra de tareas. Buscando en Google, subiendo en Stack Overflow, lancé un pequeño programa para esto. Al abrirlo desde Explorer, obtuve la versión completa del escritorio WinCE. ¡Finalmente, tenía control total sobre el sistema operativo base!
Freedom: ¡un escritorio WinCE completo en un osciloscopio!Desde ese momento comencé a hurgar en el sistema de archivos y ver qué herramientas interesantes se pueden encontrar allí. El intérprete de línea de comandos no quería comenzar, pero busqué en el registro y encontré la clave HKEY_LOCAL_MACHINE \ Drivers \ Console \ OutputTo, cuyo valor era 0xFFFFFFFF. Al cambiarlo a 0, logré hacer que el símbolo del sistema sea visible en el escritorio, así que hice otro pequeño programa que hizo exactamente eso.
Todo salió bien, hice un archivo por lotes con todos los comandos necesarios para eliminar el software del osciloscopio, el controlador de la carpeta de inicio, el controlador de fallas, restaurar la barra de tareas y permitir el inicio del símbolo del sistema. Sin embargo, se requirió que mi PDA abriera el menú del controlador de fallas, lo que significaba que otros no podrían reproducir tal efecto.
Hurgando aún más, descubrí que tan pronto como apareció la pantalla de bienvenida y los LED en el panel comenzaron a parpadear, WinCE comenzó a procesar las pulsaciones de teclas incluso sin un software de caída del dispositivo. Al presionar win + U se suspendió el osciloscopio, ya que esto abrió el menú Inicio y seleccionó la opción Suspender (y el sistema operativo no tuvo la oportunidad de devolver el control después de eso, porque el osciloscopio solo tenía un botón de apagado). Con esto en mente, cambié el nombre de mi archivo a a.bat para que su nombre fuera más fácil de escribir, e intenté ejecutarlo al cargar mediante win + R, el comando \ usb \ a.bat y presioné Enter. Pero el osciloscopio como resultado simplemente mostró el protector de pantalla en la pantalla, aunque en el fondo WinCE estaba vivo, y simplemente no podía ver lo que estaba sucediendo allí. Resulta que el controlador de fallas era un componente necesario para demostrar el escritorio del sistema operativo, y solo necesitaba agregar algunas líneas al archivo por lotes para iniciar y luego detener el controlador de fallas. Al agregar estos toques finales, pude (semiautomáticamente) cargar el osciloscopio justo antes de que apareciera el escritorio, ¡usando solo una unidad flash USB, un mouse y un teclado!
Etapa 4: Sí, se ejecuta DOOM!
Habiendo obtenido acceso a WinCE, finalmente pude responder la pregunta: "¿Doom comienza con eso?" Y, como resultó, ¡realmente comienza! Después de comenzar el osciloscopio, me llevó un año y medio, pero finalmente llegué a este hito.
No es un engaño: ¡puedes ejecutar Doom en un osciloscopio Keysight 1000 X!
¡Doom II se ejecuta en mi DSOX1102G! (3 cuadros por segundo)
Lanzar Doom en una ventana de 320 × 240 permitió exprimir suficientes fotogramas por segundo para el juego. ¡Mira qué paleta de colores!En el próximo artículo jugaré un poco más con este legendario videojuego en una pieza de hierro, que nunca fue diseñado para juegos.
¡Doom en acción con una resolución de 320 × 240, 256 colores! En el osciloscopio!Archivos para descargar
Cargué los archivos que pueda necesitar para probar lo mismo en mi osciloscopio, pero recuerde, ¡no soy responsable de convertirlo en un ladrillo u otra cosa desagradable! Probé todo esto solo en mi DSOX1102G, pero sospecho que otros modelos de la serie 1000 X y otros osciloscopios Keysight que tienen la función de recuperación de firmware también pueden funcionar. El firmware del osciloscopio está hecho para que todo WinCE se ejecute en RAM y no se guarde después de un reinicio, por lo que todos los cambios en el sistema operativo que rompan el sistema no convertirán el osciloscopio en un bloque (los archivos con firmware están en los directorios de la unidad flash NAND que no se pueden abrir a través del Explorador, pero Solo puede marcar por nombre).
La unidad flash deberá formatearse en FAT o FAT32 y descomprimir el archivo zip de
Scope Liberator en su raíz. Las instrucciones están en readme.txt.
Si está interesado en el
código fuente de los programas auxiliares que devuelven la barra de tareas y el intérprete de línea de comandos, también los publiqué.