banner
Центр новостей
Мы обещаем предоставлять экспертные технологии и решения, которые будут надежными и эффективными.

Логические анализаторы: раскрываем секреты Raspberry Pi

Sep 02, 2023

Сегодня я хотел бы выделить инструмент, который выводит ваши хакерские навыки на совершенно новый уровень и делает это, не тратя денег – фактически, учитывая, сколько времени на отладку вы можете сэкономить, сколько интересных занятий вы можете разблокировать, Благодаря многочисленным функциям, которые вы можете добавить, это может быть один из самых дешевых инструментов, которые вы получите. Будь то отладка странных проблем, оптимизация вашего кода, исследование гаджета, который вы реконструируете, или, возможно, попытка понять чью-то библиотеку с открытым исходным кодом, вы, вероятно, многое упускаете, если у вас нет под рукой логического анализатора. !

Меня разбивает сердце, что некоторые хакеры до сих пор не осознают ценность логического анализатора. Снова и снова тактическое применение логического анализатора помогало мне увидеть совершенно другую точку зрения на то, над чем я работал, и это именно то, что я хотел бы продемонстрировать сегодня.

Логический анализатор имеет несколько цифровых входов, и он постоянно считывает состояние этих цифровых входов, отправляя их на ваш компьютер или показывая на экране – это похоже на осциллограф только с логическим уровнем. Если у вас есть шина I2C с одним микроконтроллером, управляющим датчиком, подключите логический анализатор к выводам часов и данных, подключите заземление, запустите программное обеспечение логического анализатора на своем компьютере и посмотрите, что на самом деле происходит.

Например, вы когда-нибудь замечали контакты ID_SC и ID_SD на разъеме GPIO Raspberry Pi? Вам интересно, для чего они? Разве вы не хотите проверить, что на самом деле происходит на этих пинах? Давайте сделаем это прямо сейчас!

Я использую логический анализатор за 10 долларов, который можно купить на Aliexpress или Amazon, ноутбук и Raspberry Pi с SD-картой и блоком питания. Здесь он подключен — вам нужны всего три провода «мама-мама», два сигнала и одно заземление. «SD» и «SC» звучат как I2C — типичная частота I2C обычно составляет 100 кГц или 400 кГц. Хорошее практическое правило — установить частоту в три или четыре раза выше, чем тактовая частота потока данных, который вы собираетесь захватить. Поэтому я планирую установить частоту дискретизации моего логического анализатора на уровне 2 МГц. Если окажется, что он слишком медленно успевает за передаваемыми данными, я могу увеличить частоту выборки и просто выполнить выборку еще раз.

Программное обеспечение, которое я использую, — Pulseview — это замечательный графический интерфейс для логических анализаторов, который может взаимодействовать с большим количеством логических анализаторов. Он с открытым исходным кодом, совместим с Linux, его можно взломать и у него хороший пользовательский интерфейс, даже если он не поддерживается в последнее время. Вы можете установить его из репозитория вашего дистрибутива или загрузить .exe, если вы используете Windows. Подключив логический анализатор, я подключаю его к USB-порту, запускаю Pulseview, устанавливаю частоту дискретизации и продолжительность чтения, которая может быть бесконечной, отключаю все каналы, кроме двух, которые меня интересуют, нажимаю «Захват» и подключаю Pi. во власть.

После того, как я подключаю Pi, логические уровни на обоих контактах повышаются при появлении напряжения 3,3 В — и через несколько секунд на этих двух контактах наблюдается короткий всплеск активности. При увеличении масштаба активность действительно выглядит как I2C, а в Pulseview ее довольно легко расшифровать! Нажмите кнопку «Декодеры протокола» на панели задач настроек, введите «I2C» на клавиатуре, выберите декодер I2C, затем дважды щелкните тег декодера слева и выберите, какие каналы являются SCL и SDA — это легко определить, SCL будет выглядеть как тактовый сигнал с одинаковыми максимумами и минимумами, тогда как интервалы максимумов и минимумов на SDA будут различаться; на рисунке выше D1 — это SCL, а D0 — SDA. Увеличивая декодированные события I2C, мы видим, что эта активность представляет собой запросы I2C на чтение данных с адреса 0x50, и за этими запросами следуют события NACK (красный маркер), что означает, что они не получают ответа.

Теперь, если вы изучили дизайн Raspberry Pi HAT, вы, возможно, уже догадались, что эти запросы I2C поступают от загрузчика Raspberry Pi, который ищет I2C EEPROM, содержащий информацию об устройстве в HAT, чтобы Pi мог загрузить устройство. Наложите на него дерево данных и используйте эти данные для настройки любого оборудования, подключенного к HAT. Вам не нужно полагаться на любую доступную в Интернете информацию об этом процессе — с помощью логического анализатора вы можете исследовать, что на самом деле происходит, найти любые скрытые функции и предостережения, так что даже проприетарное оборудование не станет для вас небольшим препятствием. насколько это возможно.