Я использую версию Raspberry Pi 4 (8G). Раньше он хорошо работал при общении с Pixhawk через serial0. Но несколько месяцев назад я сменил ОС с Ubuntu 16 Ubiquity на Ubuntu Mate 20. Другие функции работают хорошо, но когда я пытаюсь использовать serial0 для подключения к Pixhawk, я обнаружил, что serial0 не существует.
Я провел некоторое исследование в Интернете и обнаружил, что у некоторых пользователей есть аналогичные проблемы с отключением serial0 при использовании RPi3 и 4. Я пытался использовать некоторые сценарии, которые они упомянули, и некоторые шаги для изменения файлов, связанных с config.txt, но ни один из них не работает для меня. Основные шаги, которые я выполнил, находятся в
Включить связь UART на Pi4 Ubuntu 20.04
Я заметил, что информация dmesg имеет некоторые отличия:
В нем должно быть три строки:
$ dmesg | grep tty
[0.001061] printk: консоль [tty0] включена
[ 1.919367] fe201000.serial: ttyAMA0 в MMIO 0xfe201000 (irq = 29, base_baud = 0) является PL011 rev2
[1.924677] fe215040.serial: ttyS0 на MMIO 0x0 (irq = 31, base_baud = 62500000) — это 16550
Но мой RPi имеет только две строки:
ubuntu@ubuntu-desktop:~$ dmesg | grep tty
[0.000245] printk: консоль [tty0] включена
[1.412273] fe201000.serial: ttyAMA0 на MMIO 0xfe201000 (irq = 14, base_baud = 0) — это PL011 rev2
ubuntu@ubuntu-desktop:~$ mavproxy.py --master=/dev/ttyS0,921600
Подключить /dev/ttyS0,921600 source_system=255
Не удалось подключиться к /dev/ttyS0,921600: [Errno 2] не удалось открыть порт /dev/ttyS0: [Errno 2] Нет такого файла или каталога: '/dev/ttyS0'
Итак, похоже, что ttyS0 отключен.
Как вы думаете, это имеет какое-то отношение к командной строке ядра «8250.nr_uarts = 0»?
ubuntu@ubuntu-desktop:~$ dmesg | grep-уарт
[0.000000] Командная строка ядра: coherent_pool=1M 8250.nr_uarts=0 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 smsc95xx.macaddr=DC:A6:32:B2:AD:BF vc_mem.mem_base=0x04m_mem_base=0x04m000000vc_me net.ifnames=0 dwc_otg.lpm_enable=0 root=LABEL=доступный для записи rootfstype=ext4 lift=крайний срок rootwait fixrtc тихий всплеск тихий всплеск
Вот связанные файлы:
ubuntu@ubuntu-desktop:~$ cat /boot/firmware/config.txt
# Пожалуйста, НЕ изменяйте этот файл; если вам нужно изменить конфигурацию загрузки,
# В файл "usercfg.txt" включаются пользовательские изменения. Пожалуйста, обратитесь к
# файл README для описания различных файлов конфигурации на
# загрузочный раздел.
# Необычный порядок ниже является преднамеренным; старые прошивки (в частности
# версия изначально поставлялась с бионикой) не понимаю условного
# [разделы] ниже и просто игнорируйте их. Pi4 вообще не загружается с
# прошивка эта старая, поэтому ее можно смело размещать вверху. Из Pi2 и Pi3,
# uboot Pi3 успешно работает на Pi2, поэтому он должен идти в самом низу
# для поддержки старых прошивок.
[пи4]
ядро = uboot_rpi_4.bin
max_framebuffers=2
[пи2]
ядро = uboot_rpi_2.bin
[пи3]
ядро = uboot_rpi_3.bin
[все]
arm_64bit=1
device_tree_address = 0x03000000
# Следующие настройки являются «значениями по умолчанию», которые, как ожидается, будут переопределены
# включенная конфигурация. Единственная причина, по которой они включены, это, опять же,
# поддержка старых прошивок, которые не понимают команду "include".
# enable_uart=1
cmdline=cmdline.txt
включить syscfg.txt
включить usercfg.txt
# Включить наложение графики FKMS («Поддельный» KMS), включить прошивку камеры
# и выделяем 128Mb под память GPU
dtoverlay = vc4-fkms-v3d
gpu_mem=128
старт_х=1
# Закомментируйте следующую строку, если края рабочего стола выходят за его пределы
# края вашего дисплея
отключить_оверскан = 1
# Если у вас проблемы со звуком, попробуйте раскомментировать следующую строку
# который переводит выход HDMI в режим HDMI вместо DVI (который не
# поддержка аудиовыхода)
#hdmi_drive=2
# Если у вас CM4, раскомментируйте следующую строку, чтобы включить выходы USB2
# на плате ввода-вывода (при условии, что ваш CM4 подключен к такой плате)
#dtoverlay=dwc2,dr_mode=хост
ubuntu@ubuntu-desktop:~$ cat /boot/firmware/usercfg.txt
# Поместите изменения "config.txt" (dtparam, dtoverlay, disable_overscan и т. д.) в
# этот файл. Пожалуйста, обратитесь к файлу README для описания различных
# файлы конфигурации на загрузочном разделе.
ubuntu@ubuntu-desktop:~$ cat /boot/firmware/README
Обзор файлов в разделе /boot/firmware (1-й раздел
на SD-карте), используемый процессом загрузки Ubuntu (примерно по порядку), выглядит как
следует:
* bootcode.bin - это загрузчик второго этапа, загружаемый всеми писами с
за исключением pi4 (где это заменено flash
Память)
* config.txt — первый конфигурационный файл, прочитанный процессом загрузки
* syscfg.txt - файл, в котором будет храниться измененная конфигурация системы
размещено, включено config.txt
* usercfg.txt - файл, в котором должна быть измененная пользователем конфигурация
размещено, включено config.txt
* start*.elf - загрузчик третьей стадии, который обрабатывает дерево устройств
модификация и которая загружает...
* uboot*.bin — разные бинарники u-boot для разных pi платформ; эти
запускаются как "ядро" config.txt
* boot.scr - загрузочный скрипт, выполняемый uboot*.bin, который в свою очередь
загружает...
* vmlinuz — ядро Linux, выполняемое boot.scr
* initrd.img - файл initramfs, запускаемый boot.scr
ubuntu@ubuntu-desktop:~$ cat /boot/firmware/syscfg.txt
# Этот файл предназначен для изменения с помощью утилиты pibootctl. Пользователь
# изменения конфигурации должны быть помещены в "usercfg.txt". Пожалуйста, обратитесь к
# Файл README для описания различных файлов конфигурации при загрузке
# раздел.
enable_uart=0
dtparam=аудио=включено
dtparam=i2c_arm=включено
dtparam=spi=on
cmdline=cmdline.txt
Я также попытался изменить enable_uart=0 на 1 в /boot/firmware/syscfg.txt.
После этого система не может загрузиться, что показывает, что файл действительно влияет на систему. Затем я изменил файл обратно, и система загружается нормально.
ubuntu@ubuntu-desktop:~$ cat /boot/firmware/cmdline.txt
net.ifnames=0 dwc_otg.lpm_enable=0 root=LABEL=доступный для записи rootfstype=ext4 lift=крайний срок rootwait fixrtc тихий всплеск
ubuntu@ubuntu-desktop:~$ статус sudo systemctl [email protected]
серийный[email protected]
Загружено: замаскировано (Причина: модуль [email protected] замаскирован.)
Активный: неактивный (мертвый)
ubuntu@ubuntu-desktop:~$ группы
ubuntu adm tty dialout cdrom sudo dip video plugdev input lxd lpadmin sambashare spi i2c gpio