Последовательная консоль позволяет просматривать журналы загрузки еще до того, как ядро 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
Если выполнение любой из приведенных выше команд не приводит ни к какому результату, то
- Значение параметра
enable_uart
установлено в0
вместо1
. - Строка, определяющая значение параметра
enable_uart
, закомментирована. - Значение параметра
enable_uart
даже не определено.
В этом случае добавьте следующую строку в конец файла config.txt
:
enable_uart=1
Установка программы последовательной связи
Существует множество вариантов использования программы, обеспечивающей последовательную связь. Вот несколько из них:
picocom
: Это то, что я предпочитаю.minicom
: В большинстве руководств используется именно этот вариант, так что если вы новичок, использованиеminicom
может оказаться выгодным. Хотя в этой статье я буду использоватьpicocom
, так как это очень просто.screen
: В некоторых руководствах это также упоминается, но я никогда не пробовал.
Поскольку ни один из них не является «новым», даже самые стабильные LTS-дистрибутивы, такие как RHEL 7.x, должны иметь все три из них в репозиториях первой партии. Просто используйте менеджер пакетов для установки любого из них. Я буду использовать picocom
.
Присоединение последовательного адаптера
Пожалуйста, выполните следующие шаги по порядку:
- Подключите USB-конец последовательного адаптера к компьютеру/ноутбуку.
- Получите последовательное устройство с выхода
sudo dmesg
- Безопасное выключение питания Raspberry Pi.
- Используя приведенную ниже схему распиновки GPIO, подключите
- RX адаптера к TX Raspberry Pi (контакт 8 на схеме)
- TX адаптера к RX Raspberry Pi (контакт 9 на схеме)
- Ground адаптера к любому контакту земли на Raspberry Pi (контакт 14 на схеме)
- 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 (или любому другому одноплатному компьютеру, если на то пошло!).
Комментарии (0)