Temos acesso à área de trabalho do WinCE e executamos o Doom no osciloscópio Keysight DSOX1102G

Tradução do artigo " Rasgar em pedaços " do blog de Jason Gin

TL; DR: sim, no osciloscópio Keysight 1000 X-Series, você pode realmente executar o Doom! No entanto, isso não é fácil de fazer.


Keysight DSOX1102G

O osciloscópio deve ter em seu arsenal qualquer entusiasta da eletrônica que se preze. Os osciloscópios, em resumo, permitem estudar as ondas de sinais elétricos no circuito, e os osciloscópios digitais (DSO) são indispensáveis, pois podem encontrar erros raros no sinal que um osciloscópio ou multímetro analógico não reconhece.

O tópico do meu artigo é DSOX1102G da Keysight Technologies (anteriormente Agilent), de sua linha de osciloscópios de baixo custo, que apresenta uma boa relação qualidade-preço em comparação aos concorrentes. Como a maioria de seus osciloscópios, este modelo executa o sistema operacional Windows Embedded CE 6.0 embutido (também conhecido como Windows CE ou WinCE), mas, como na maioria dos aplicativos WinCE, você quase nunca vê sua interface - ela está oculta por trás de um dispositivo especialmente criado. interface de usuário.

Etapa 1: Despertar


Quando a série Keysight 1000-X foi lançada no início de 2017, um dos revisores da Hackaday notou que o método de salvar dados nesses osciloscópios às vezes levava a falhas e reinicializações, e observou que um ponteiro do mouse podia ser visto na tela por vários segundos antes de carregar . Havia um gif em seu post, onde ele salva um arquivo que causa uma falha, e notei algo estranho em um dos quadros da animação - era possível distinguir a barra de tarefas do Windows imediatamente na frente da tela preta com um erro. Interessante! ..



Tendo vencido meu osciloscópio graças ao concurso Scope Month da Keysight, por alguns meses, não pensei nisso até encontrar uma tela com falha sozinha. No meu caso, descobri que o cabeçalho do Windows CE estava visível no topo do manipulador de falhas do osciloscópio; arrastar o cabeçalho deixou uma marca e acabou pendurando o WinCE. Isso aconteceu muito raramente, portanto, após tropeçar em falhas posteriores, simplesmente permiti que o manipulador examinasse o sistema de arquivos e reinicializasse o sistema operacional.

No entanto, fiquei intrigado com isso e queria saber muito sobre o que estava acontecendo com o sistema WinCE subjacente. Descobri que a porta USB no osciloscópio é propensa a erros, e apenas inverter a unidade flash na porta pode causar um acidente. No entanto, isso não foi suficiente para coletar a quantidade necessária de informações, pois era um método não confiável.

Assim começou minha busca por acesso à área de trabalho do WinCE.

No começo, tentei uma solução puramente de software, tentando criar um arquivo de atualização de firmware .ksx (na verdade, é apenas um arquivo .cab) que poderia desligar o programa do osciloscópio e abrir o Windows Explorer - não funcionou. O software do osciloscópio emitiu uma mensagem de erro reclamando que não era possível abrir o arquivo. Acontece que essa solução não funcionaria, mesmo que eu a obrigasse a baixar o arquivo de atualização, pois o software do osciloscópio não vai para a área de trabalho durante a atualização. Tendo encontrado esse primeiro obstáculo sério, deixei de lado a curiosidade temporariamente e usei o osciloscópio para a finalidade pretendida.

Etapa 2: dê uma olhada mais profunda


Devido à minha curiosidade, uma vez decidi verificar se o osciloscópio pode ler e gravar disquetes de 3,5 "(ou, como dizem os jovens, um ícone de gravação impresso) via porta USB - e poderia! No entanto, notei um problema estranho: o osciloscópio falhava se eu deixasse a unidade na porta USB quando a liguei Eureka! Encontrei uma maneira de causar uma falha de maneira confiável.

Infelizmente, aqui estava um segundo obstáculo sério. Essa falha de inicialização ocorreu apenas se um único dispositivo foi incluído na porta USB - a unidade. Não houve falha se eu usasse um hub USB que incluísse uma unidade. Isso significava que eu teria que alternar muito rapidamente entre a unidade e um mouse USB com um teclado. A pressa de remover a unidade o mais rápido possível e inserir a combinação de teclado e touchpad no USB durante o processo de inicialização foi cansativa e irritante. Eu precisava de uma solução melhor - uma solução de hardware.


Chave A / B especial para USB, feita por mim para a rápida substituição de dispositivos

Usando um cabo USB antigo, um hub USB morto e um comutador DPDT, criei um comutador USB A / B para simplificar e acelerar o processo de alternância entre dispositivos. Usando esse método, eu tentei estabelecer contato com o sistema operacional WinCE por uma fração de segundo, enquanto a barra de tarefas estava visível na tela e até o manipulador de falhas quebrar todas as framboesas para mim. Usando a mágica em filmagem em câmera lenta do meu Samsung Galaxy S9, pude determinar que posso enviar pressionamentos de tecla para o WinCE e processá-los - mesmo no protetor de tela do sistema! Consegui obter informações sobre o sistema pressionando cegamente as teclas e depois estudando a resposta quando um software do osciloscópio falha. Então eu corri para um segundo obstáculo.

A possibilidade de uma interação muito breve com o WinCE é boa, mas foi inútil, já que eu não podia controlá-lo até que o gerenciador de falhas reinicie o sistema. O manipulador se apegou firmemente ao sistema operacional e não deslizar o teclado e Ctrl + Alt + Delete me permitiu voltar ao WinCE.

Etapa 3: procurando um ponto de apoio


E, novamente, minha curiosidade de tocar periodicamente veio a calhar quando decidi usar meu antigo Sony Clie PEG-NX73V (computador de mão no PalmOS de 2003) como um drive USB. Ele tinha uma função de importação de dados que permitia arrastar e soltar arquivos no cartão de memória da mesma maneira que em um disco removível.

Assim como em uma unidade USB, ocorreu uma falha no sistema quando liguei o osciloscópio sem retirar o PDA. No entanto, desta vez, o manipulador de falhas decidiu que o sistema de arquivos PDA é uma seção de firmware danificada e sugeriu o download da atualização de firmware de uma unidade flash USB externa.



Esse comportamento não era regular, às vezes o software do osciloscópio ainda estava carregado e uma janela muito estranha apareceu no WinCE com um ponteiro azul brilhante do mouse, deixando rastros na tela. No entanto, nesse estado estranho, consegui puxar a janela do software do osciloscópio InfiniiVision para o lado e tentei puxar o SO. Mas o software do osciloscópio se comportou de forma muito agressiva e recuperou o foco todas as vezes depois de clicar fora da janela. Depois de alguns problemas com um sistema operacional estranhamente pintado, eu pude contorná-lo. Não consegui visualizar o sistema de arquivos, porque não consegui assumir o controle por um longo tempo na janela do software do osciloscópio, mas consegui chamar a caixa de diálogo de propriedades do sistema, onde estava escrito que o osciloscópio se baseia no Windows CE 6.00 e tem 100 MB de RAM.



Então decidi vasculhar os fóruns do EEVblog, onde as pessoas estão tentando ativamente invadir o osciloscópio para abrir possibilidades adicionais. Aí descobri que o software estava procurando o arquivo infiniiVisionStartupOverride.txt na raiz da unidade flash USB e, se o fizer, está tentando fazer o download do software do osciloscópio. E, embora, aparentemente, o firmware não tenha realmente baixado o software da unidade flash, esse processo interrompeu o lançamento do software do osciloscópio e ninguém assumiu o controle do SO por mim. A partir desse momento, tudo ficou mais interessante - o gerenciador de falhas abriu a janela do Explorer e digitou "*. *" No campo de nome do arquivo, pude começar a vasculhar o sistema de arquivos do osciloscópio e uma unidade flash USB! Isso é exatamente o que eu precisava para obter o controle do WinCE. No entanto, encontrei outro obstáculo: o osciloscópio reiniciou após 60 segundos, por causa do qual não tive muito tempo para cavar no sistema operacional.


Pedido de atualização de firmware DSOX1102G com uma caixa de diálogo de seleção de arquivo de uma unidade flash


O gerenciador de tarefas do Windows CE mostra processos em execução na tela de recuperação de firmware

Depois de copiar várias ferramentas do Windows CE, por exemplo, o Windows CE Task Manager, notei dois processos interessantes que foram iniciados quando o manipulador de falhas ainda estava visível - recoverInfiniiVision.exe e processStartupFolder.exe; Aparentemente, o primeiro foi um manipulador de falhas que não me deu acesso ao WinCE após uma falha no software do osciloscópio. Tendo vencido o segundo processo usando o iTaskMgr (a versão gratuita do gerenciador de tarefas do WinCE não permite processos de interrupção), consegui impedir a reinicialização do osciloscópio e, após vencer o primeiro, vi uma área de trabalho limpa do WinCE - e aqui estou eu! Infelizmente, não consegui restaurar a barra de tarefas, e é por isso que navegar no sistema operacional foi bastante inconveniente.

Criei uma nova pasta na área de trabalho para abrir o Explorer e, finalmente, pude estudar o sistema de arquivos do osciloscópio. O programa Total Commander / CE, que possui um editor de texto embutido, que não estava nesta versão do WinCE, ajudou muito.


Indo para o sistema de arquivos usando o Total Commander / CE (nenhuma barra de tarefas ainda)

Etapa 4: controle total


Agora, tendo conseguido acessar a área de trabalho azul celeste, para obter a experiência completa do WinCE, tive que restaurar a barra de tarefas. Pesquisando, subindo no Stack Overflow, lancei um pequeno programa para isso. Ao abri-lo no Explorer, obtive a versão completa da área de trabalho do WinCE! Finalmente, eu tinha controle total sobre o sistema operacional base!


Liberdade - um desktop completo do WinCE em um osciloscópio!

A partir desse momento, comecei a vasculhar o sistema de arquivos e ver quais ferramentas interessantes podem ser encontradas lá. O intérprete da linha de comando não quis iniciar, mas procurei no registro e encontrei a chave HKEY_LOCAL_MACHINE \ Drivers \ Console \ OutputTo, cujo valor era 0xFFFFFFFF. Ao alterá-lo para 0, consegui tornar o prompt de comando visível na área de trabalho, e criei outro pequeno programa que fazia exatamente isso.

Tudo correu bem, criei um arquivo em lotes com todos os comandos necessários para matar o software do osciloscópio, o manipulador de pastas de início, o manipulador de falhas, restaurar a barra de tarefas e permitir o lançamento do Prompt de Comando. No entanto, meu PDA foi solicitado a abrir o menu do manipulador de falhas, o que significava que outros não seriam capazes de reproduzir esse efeito.

Revendo ainda mais, descobri que, assim que a tela inicial apareceu e os LEDs no painel começaram a piscar, o WinCE começou a processar pressionamentos de tecla, mesmo sem o software cair do dispositivo. Pressionar win + U suspendeu o osciloscópio, porque isso abriu o menu Iniciar e selecionou a opção Suspender (e o SO não teve a oportunidade de retornar o controle depois disso, porque o osciloscópio tinha apenas um botão de desligamento). Com isso em mente, renomeei meu arquivo para a.bat para facilitar a digitação do nome e tentei executá-lo ao carregar via win + R o comando \ usb \ a.bat e pressionar Enter. Mas o osciloscópio, como resultado, simplesmente mostrou o protetor de tela na tela, embora no fundo o WinCE estivesse vivo, e eu simplesmente não conseguia ver o que estava acontecendo lá. Acontece que o manipulador de falhas era um componente necessário para demonstrar a área de trabalho do SO, e eu só precisava adicionar algumas linhas ao arquivo em lotes para iniciar e parar o manipulador de falhas. Ao adicionar esses retoques finais, eu consegui (semiautomaticamente) carregar o osciloscópio antes da área de trabalho aparecer, usando apenas uma unidade flash USB, mouse e teclado!

Etapa 4: Sim, ele executa o DOOM!


Tendo obtido acesso ao WinCE, finalmente pude responder à pergunta: "O Doom começa nele?" E, como se viu, realmente começa! Depois de iniciar o osciloscópio, demorou um ano e meio, mas finalmente cheguei a esse marco.


Não é uma farsa: você pode executar o Doom em um osciloscópio Keysight 1000 X!


Doom II é executado no meu DSOX1102G! (3 quadros por segundo)


O lançamento de Doom em uma janela de 320 × 240 permitiu espremer quadros suficientes por segundo para o jogo. Olha que paleta de cores!

No próximo artigo, jogarei um pouco mais com este lendário videogame em um pedaço de ferro, que nunca foi destinado a jogos.


Desgraça em ação com uma resolução de 320 × 240, 256 cores! No osciloscópio!

Arquivos para download


Carreguei os arquivos que você pode precisar para tentar a mesma coisa no meu osciloscópio - mas lembre-se de que não sou responsável por transformá-lo em um tijolo ou em algo desagradável! Testei tudo isso apenas no meu DSOX1102G, mas suspeito que outros modelos da série 1000 X e outros osciloscópios Keysight que possuem o recurso de recuperação de firmware também possam funcionar. O firmware do osciloscópio é feito para que todo o WinCE seja executado na RAM e não seja salvo após uma reinicialização; portanto, todas as alterações no sistema operacional que interrompem o sistema não transformarão o osciloscópio em um tijolo (os arquivos com firmware estão nos diretórios da unidade flash NAND que não podem ser abertos pelo Explorer, mas Você pode discar apenas pelo nome).

A unidade flash precisará ser formatada em FAT ou FAT32 e descompacte o arquivo zip do Scope Liberator em sua raiz. As instruções estão em readme.txt.

Se você estiver interessado no código fonte dos programas auxiliares que retornam a barra de tarefas e o interpretador de linha de comando, eu também os publiquei.

Source: https://habr.com/ru/post/pt428265/


All Articles