Использование последовательного USB-адаптера UART для отладки Raspberry Pi

Последовательная консоль позволяет просматривать журналы загрузки еще до того, как ядро Linux начнет загружаться! Поэтому последовательная консоль, подключенная к Raspberry Pi, поможет вам найти причины следующих проблем:

  • Новый дистрибутив Linux, который вы прошили на Raspberry Pi, не загружается.
  • Ваш Raspberry Pi загружается со старым ядром, хотя вы установили более новое ядро, предоставленное сопровождающим дистрибутива с помощью apt/pacman/dnf.
  • Вы установили новое ядро с помощью apt/pacman/dnf, но теперь порт Ethernet не работает, и вы не можете подключиться к нему по SSH, чтобы удалить это ядро.
  • Ваш Raspberry Pi не загружается вообще.
  • Вы изучаете разработку ядра и хотите посмотреть, почему сделанное вами изменение не позволяет ядру загружаться.
  • У вас так много Raspberry Pi, что у вас закончились дисплеи для подключения, и вы просто хотите посмотреть журналы загрузки, чтобы проверить, правильно ли они загружаются или нет.

Если какие-то из перечисленных выше пунктов вас заинтересовали (а в основном это «Моя Raspberry Pi не загружается, и я не могу понять, почему»), следуйте дальше!

Что такое последовательный адаптер?

Проще говоря, последовательный адаптер – это как кабель HDMI/DP. Но вместо того, чтобы передавать данные в виде видео, он передает данные в виде обычного текста. Это означает, что драйверы, необходимые для инициализации последовательного интерфейса, очень просты и могут быть загружены без каких-либо зависимостей (т.е. как можно раньше в потоке загрузки).

Выбор и покупка последовательного адаптера

Теперь, когда вы знаете о функциях последовательного адаптера, вы можете захотеть его приобрести. А вариантов последовательных адаптеров так же много, как и дистрибутивов Linux! И, как и в случае с дистрибутивами Linux, есть несколько, которые предпочитаю я.

Это последовательные адаптеры со следующими чипсетами:

  • CP2102: Это мой лучший чипсет почти всегда. Вы можете приобрести его на Яндекс.Маркете – ссылка на продавца.
  • Серия FT232: Некоторые платы используют скорость передачи данных (мы обсудим «скорость передачи данных» позже в этой статье) в 1,5 миллиона. Максимальная скорость CP2102 составляет 921 600 бод. В этом случае CP2102 работать не будет. Поэтому использование адаптера с этим чипсетом – отличный вариант. Вы можете приобрести его на Яндекс.Маркете – ссылка на продавца.
  • Adafruit 954: Это последовательный адаптер, который стоит купить, если вы можете переварить [сравнительно] высокую цену. Он довольно хорош! (954 – это просто идентификатор продукта Adafruit.) Вот ссылка на Яндекс.Маркете – ссылка на продавца.
  • Raspberry Pi Debug Probe: Этот аксессуар от фонда Raspberry Pi не только предоставляет устройство UART (то, что мы рассматриваем в рамках этой статьи), но и работает с OpenOCD!

Последовательный адаптер, использующий любой из этих чипсетов, будет отлично работать с Raspberry Pi. Но если вы не уверены, я рекомендую вам выбрать адаптер, использующий чипсет CP2102.

Если вы приобрели последовательный адаптер с открытыми контактами (металлическими штырьками) на одной стороне (как на изображении ниже), то вам необходимо приобрести перемычки female to female для подключения последовательного адаптера к контактам GPIO Raspberry Pi! (Нам нужно всего 3 таких провода-перемычки.)

Вы можете легко приобрести их в любом магазине электроники.

Предварительная настройка

Прежде чем подключать их к Raspberry Pi, необходимо выполнить некоторые предварительные настройки.

Включить UART

Выполняйте этот шаг только в том случае, если вы подключаетесь к Raspberry Pi. Если нет, пропустите этот шаг, так как для других SBC/компьютеров это не нужно делать.

Загрузчик Raspberry Pi считывает файл config.txt перед загрузкой ядра Linux. Он находится в каталоге /boot под именем /boot/config.txt . Если вы используете Bookworm или более позднюю версию Raspberry Pi OS, файл config.txt находится по адресу /boot/firmware/config.txt.

Этот файл отвечает за включение или выключение UART. По какой-то причине значение по умолчанию для UART установлено на off. Я не знаю, почему было принято такое решение, ведь его включение не оказывает никакого негативного влияния (насколько я знаю)!

Настало время включить его. В файле /boot/config.txt убедитесь, что значение параметра enable_uart установлено в 1 (включено), а также что он не закомментирован.

before Bookworm release
sudo grep '^enable_uart=1' /boot/config.txt
enable_uart=1
Bookworm and later releases
sudo grep '^enable_uart=1' /boot/firmware/config.txt
enable_uart=1

Если выполнение любой из приведенных выше команд не приводит ни к какому результату, то

  1. Значение параметра enable_uart установлено в 0 вместо 1.
  2. Строка, определяющая значение параметра enable_uart, закомментирована.
  3. Значение параметра enable_uart даже не определено.

В этом случае добавьте следующую строку в конец файла config.txt:

enable_uart=1

Установка программы последовательной связи

Существует множество вариантов использования программы, обеспечивающей последовательную связь. Вот несколько из них:

  • picocom: Это то, что я предпочитаю.
  • minicom: В большинстве руководств используется именно этот вариант, так что если вы новичок, использование minicom может оказаться выгодным. Хотя в этой статье я буду использовать picocom, так как это очень просто.
  • screen: В некоторых руководствах это также упоминается, но я никогда не пробовал.

Поскольку ни один из них не является «новым», даже самые стабильные LTS-дистрибутивы, такие как RHEL 7.x, должны иметь все три из них в репозиториях первой партии. Просто используйте менеджер пакетов для установки любого из них. Я буду использовать picocom.

Присоединение последовательного адаптера

Пожалуйста, выполните следующие шаги по порядку:

  1. Подключите USB-конец последовательного адаптера к компьютеру/ноутбуку.
  2. Получите последовательное устройство с выхода sudo dmesg
  3. Безопасное выключение питания Raspberry Pi.
  4. Используя приведенную ниже схему распиновки GPIO, подключите
  5. RX адаптера к TX Raspberry Pi (контакт 8 на схеме)
  6. TX адаптера к RX Raspberry Pi (контакт 9 на схеме)
  7. Ground адаптера к любому контакту земли на Raspberry Pi (контакт 14 на схеме)
  8. PLEASE MAKE SURE NOT TO CONNECT ANY 5v OR 3.3v PINS!

Подключитесь к последовательному интерфейсу с помощью команды: picocom --quiet --baud 115200 <serial device>

picocom теперь начал слушать последовательный адаптер, который вы упомянули, но не волнуйтесь, если нет вывода. Raspberry Pi выключен и поэтому не обменивается данными с вашим компьютером/ноутбуком. Пришло время включить его, чтобы мы могли посмотреть его журналы загрузки.

Если вы хотите выйти из «picocom», нажмите Ctrl + a, а затем Ctrl + x.

Следующая запись загрузки Raspberry Pi OS на моем Raspberry Pi 4B:

Как вы можете видеть на приведенной выше записи моего терминала, на экране компьютера видны журналы загрузки при загрузке ядра Linux. Как правило, эти сообщения можно увидеть в выводе команды dmesg.

Но это еще не все. Вы также можете взаимодействовать с ним! В конце вы могли заметить, что я нахожусь на getty (приглашение к входу в консоль). Я мог бы войти в систему, но не стал этого делать, чтобы не затягивать запись.

Иногда, когда вы возитесь с ядром Linux, оно может «запаниковать» и выбросить вас в оболочку initramfs, чтобы вы могли отменить/исправить все, что считаете потенциально проблемным. Вы можете взаимодействовать с ней, используя эту последовательную консоль!

Подумайте об этом как о клавиатуре, напрямую подключенной к Raspberry Pi, но выводящей данные на экран вашего терминала:)

Заключение

Здесь я рассказал о том, что вообще означает последовательная консоль, почему она используется и чем полезна. Я также объяснил, как получить последовательный адаптер и как подключить его к Raspberry Pi (или любому другому одноплатному компьютеру, если на то пошло!).

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен itsfoss.com

Похожие статьи

Комментарии (0)