banner
Centro de notícias
Nossa promessa é fornecer tecnologia e soluções especializadas que sejam confiáveis ​​e eficientes.

Analisadores lógicos: explorando os segredos do Raspberry Pi

Sep 02, 2023

Hoje, gostaria de destacar uma ferramenta que leva suas habilidades de hacking a um nível totalmente novo e faz isso sem gastar muito – na verdade, considerando quanto tempo de depuração você pode economizar, quantas atividades divertidas você pode desbloquear, e os inúmeros recursos que você pode adicionar, esta pode ser uma das ferramentas mais baratas que você obterá. Seja depurando problemas estranhos, otimizando seu código, investigando um gadget que você está fazendo engenharia reversa ou talvez tentando entender a biblioteca de código aberto de alguém, você provavelmente estará perdendo muito se não tiver um analisador lógico disponível. !

É doloroso para mim que alguns hackers ainda não saibam o valor que um analisador lógico traz. Repetidas vezes, a aplicação tática de um analisador lógico me ajudou a ver uma perspectiva totalmente diferente sobre algo que eu estava hackeando, e é exatamente isso que gostaria de demonstrar hoje.

Um analisador lógico possui diversas entradas digitais e lê continuamente o estado dessas entradas digitais, enviando-as para o seu computador ou exibindo-as em uma tela – é como um osciloscópio somente de nível lógico. Se você tiver um barramento I2C com um MCU controlando um sensor, conecte um analisador lógico ao relógio e aos pinos de dados, conecte o terra, inicie o software analisador lógico em seu computador e veja o que realmente está acontecendo.

Por exemplo, você já notou os pinos ID_SC e ID_SD no conector Raspberry Pi GPIO? Você está se perguntando para que servem? Você não quer verificar o que realmente acontece nesses pinos? Vamos fazer isso agora mesmo!

Estou usando um analisador lógico de US $ 10 que você pode comprar no Aliexpress ou Amazon, um laptop e um Raspberry Pi com um cartão SD e uma fonte de alimentação. Aqui está conectado – você só precisa de três fios fêmea-fêmea, dois sinais e um terra. “SD” e “SC” soam como I2C – a frequência I2C típica é geralmente 100 kHz ou 400 kHz. Uma boa regra é definir sua frequência para ser três ou quatro vezes maior que a frequência do clock do fluxo de dados que você está prestes a capturar. Como tal, pretendo definir a taxa de amostragem do meu analisador lógico para 2 MHz. Se for muito lento para acompanhar os dados que estão sendo transferidos, posso aumentar a taxa de amostragem e apenas fazer a amostragem novamente.

O software que estou usando é o Pulseview – é uma GUI maravilhosa para analisadores lógicos e pode fazer interface com uma grande variedade de analisadores lógicos. É de código aberto, compatível com Linux, hackeável e tem uma boa experiência do usuário, mesmo que não tenha sido mantido recentemente. Você pode instalá-lo a partir do repositório da sua distribuição ou baixar o .exe se estiver no Windows. Com o analisador lógico conectado, eu o conecto na minha porta USB, inicio o Pulseview, defino a taxa de amostragem e a duração da leitura, que pode ser infinita, desativo todos os canais exceto os dois que me interessam, pressiono 'Capture' e conecto o Pi no poder.

Depois de conectar o Pi, os níveis lógicos em ambos os pinos aumentam à medida que a energia de 3,3 V aparece – e, após alguns segundos, há uma pequena explosão de atividade nesses dois pinos. Aumentando o zoom, a atividade realmente se parece com I2C – e no Pulseview, é muito fácil de decodificar! Pressione o botão “Decodificadores de protocolo” na barra de tarefas de configurações, digite “I2C” no teclado, selecione o decodificador I2C, clique duas vezes na tag do decodificador à esquerda e selecione quais canais são SCL e SDA – é fácil saber, SCL irá olhar como um sinal de clock com altos e baixos iguais, enquanto os intervalos altos e baixos no SDA variam; na imagem acima, D1 é SCL e D0 é SDA. Ampliando os eventos I2C decodificados, podemos ver que esta atividade são solicitações I2C para leitura de dados do endereço 0x50, e essas solicitações são seguidas por eventos NACK (marcador vermelho), o que significa que não recebem resposta.

Agora, se você examinou o design do Raspberry Pi HAT, você já deve adivinhar que essas solicitações I2C vêm do bootloader Raspberry Pi, que está procurando a EEPROM I2C contendo informações do dispositivo no HAT, para que o Pi possa carregar o dispositivo Árvore sobrepõe dados dele e usa esses dados para configurar qualquer hardware no HAT conectado. Você não precisa confiar nas poucas informações disponíveis on-line sobre esse processo – com um analisador lógico, você pode investigar o que realmente acontece, encontrar quaisquer recursos ocultos e advertências, de modo que até mesmo o hardware proprietário seja um obstáculo mínimo para você. que possível.