Folosesc versiunea Raspberry Pi 4 (8G). Funcționează bine atunci când comunicați cu Pixhawk prin serial0 înainte. Dar acum câteva luni, am schimbat sistemul de operare de la Ubuntu 16 Ubiquity la Ubuntu Mate 20. Alte funcții funcționează bine, dar când încerc să folosesc serial0 pentru a mă conecta la Pixhawk, am constatat că serial0 nu există.
Am făcut câteva cercetări online și am descoperit că unii utilizatori au probleme similare cu serial0 dezactivat atunci când folosesc RPi3 și 4. Am încercat să folosesc unele scripturi pe care le-au menționat și câțiva pași pentru a schimba fișierele legate de config.txt, dar niciunul nu funcționează pentru mine. Principalii pași pe care i-am urmat sunt în
Activați comunicarea UART pe Pi4 Ubuntu 20.04
Observ că informațiile dmesg au câteva diferențe:
Ar trebui să aibă trei rânduri:
$ dmesg | grep tty
[ 0.001061] printk: consola [tty0] activată
[ 1.919367] fe201000.serial: ttyAMA0 la MMIO 0xfe201000 (irq = 29, base_baud = 0) este un PL011 rev2
[ 1.924677] fe215040.serial: ttyS0 la MMIO 0x0 (irq = 31, base_baud = 62500000) este un 16550
Dar RPi-ul meu are doar două linii:
ubuntu@ubuntu-desktop:~$ dmesg | grep tty
[ 0.000245] printk: consola [tty0] activată
[ 1.412273] fe201000.serial: ttyAMA0 la MMIO 0xfe201000 (irq = 14, base_baud = 0) este un PL011 rev2
ubuntu@ubuntu-desktop:~$ mavproxy.py --master=/dev/ttyS0,921600
Conectați /dev/ttyS0,921600 source_system=255
Nu s-a putut conecta la /dev/ttyS0,921600: [Errno 2] nu a putut deschide portul /dev/ttyS0: [Errno 2] Nu există un astfel de fișier sau director: „/dev/ttyS0”
Deci, se pare că ttyS0 este dezactivat.
Crezi că are vreo relație cu linia de comandă Kernel „8250.nr_uarts = 0”?
ubuntu@ubuntu-desktop:~$ dmesg | grep uart
[ 0.000000] Linia de comandă a kernelului: coherent_pool=1M 8250.nr_uarts=0 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 smsc95xx.macaddr=DC:A6:A6:000000000:A6:00000000:A6:00000000:A6:00000000:A6:000000 net.ifnames=0 dwc_otg.lpm_enable=0 root=LABEL=inscriptibil rootfstype=ext4 elevator=termen limită rootwait fixrtc quiet splash quiet splash
Iată fișierele conexe:
ubuntu@ubuntu-desktop:~$ cat /boot/firmware/config.txt
# Vă rugăm să NU modificați acest fișier; dacă trebuie să modificați configurația de pornire, fișierul
# Fișierul „usercfg.txt” este locul pentru a include modificările utilizatorului. Va rog, referiti-va la
# fișierul README pentru o descriere a diferitelor fișiere de configurare
# partiția de pornire.
# Ordinea neobișnuită de mai jos este deliberată; firmware-uri mai vechi (în special firmware-ul
# versiunea livrată inițial cu bionic) nu înțeleg condiționalul
# [secțiuni] de mai jos și pur și simplu ignorați-le. Pi4 nu pornește deloc cu
# firmware-uri atât de vechi, așa că este sigur de plasat în partea de sus. Dintre Pi2 și Pi3, cel
# Pi3 uboot se întâmplă să funcționeze fericit pe Pi2, așa că trebuie să meargă în partea de jos
# pentru a suporta firmware-uri vechi.
[pi4]
kernel=uboot_rpi_4.bin
max_framebuffers=2
[pi2]
kernel=uboot_rpi_2.bin
[pi3]
kernel=uboot_rpi_3.bin
[toate]
arm_64bit=1
device_tree_address=0x03000000
# Următoarele setări sunt „implicite” care se așteaptă să fie înlocuite de către
# configurație inclusă. Singurul motiv pentru care sunt incluși este, din nou, să
# acceptă firmware-urile vechi care nu înțeleg comanda „include”.
# enable_uart=1
cmdline=cmdline.txt
include syscfg.txt
include usercfg.txt
# Activați suprapunerea grafică FKMS ("Fake" KMS), activați firmware-ul camerei
# și alocați 128Mb memoriei GPU
dtoverlay=vc4-fkms-v3d
gpu_mem=128
start_x=1
# Comentați următoarea linie dacă marginile desktopului apar în exterior
# marginile afișajului dvs
disable_overscan=1
# Dacă aveți probleme cu audio, puteți încerca să anulați comentariile următoarei rânduri
# care forțează ieșirea HDMI în modul HDMI în loc de DVI (ceea ce nu
# acceptă ieșirea audio)
#hdmi_drive=2
# Dacă aveți un CM4, decomentați următoarea linie pentru a activa ieșirile USB2
# pe placa IO (presupunând că CM4 este conectat la o astfel de placă)
#dtoverlay=dwc2,dr_mode=gazdă
ubuntu@ubuntu-desktop:~$ cat /boot/firmware/usercfg.txt
# Plasați modificările „config.txt” (dtparam, dtoverlay, disable_overscan etc.) în
# acest fișier. Vă rugăm să consultați fișierul README pentru o descriere a diferitelor
# fișiere de configurare pe partiția de boot.
ubuntu@ubuntu-desktop:~$ cat /boot/firmware/README
O prezentare generală a fișierelor de pe partiția /boot/firmware (prima partiție
pe cardul SD) utilizat de procesul de boot Ubuntu (aproximativ în ordine) este ca
urmează:
* bootcode.bin - acesta este cel de-al doilea bootloader încărcat de toate pis-urile cu
cu excepția pi4 (unde acesta este înlocuit cu flash
memorie)
* config.txt - primul fișier de configurare citit de procesul de pornire
* syscfg.txt - fișierul în care va fi configurația modificată de sistem
plasat, inclus de config.txt
* usercfg.txt - fișierul în care ar trebui să fie configurația modificată de utilizator
plasat, inclus de config.txt
* start*.elf - cel de-al treilea bootloader, care se ocupă de arborele dispozitivului
modificare si care se incarca...
* uboot*.bin - diverse binare u-boot pentru diferite platforme pi; aceste
sunt lansate ca „kernel” de către config.txt
* boot.scr - scriptul de pornire executat de uboot*.bin care la rândul său
incarcaturi...
* vmlinuz - nucleul Linux, executat de boot.scr
* initrd.img - initramfs, executat de boot.scr
ubuntu@ubuntu-desktop:~$ cat /boot/firmware/syscfg.txt
# Acest fișier este destinat să fie modificat de utilitarul pibootctl. Utilizator
# modificările de configurare ar trebui plasate în „usercfg.txt”. Vă rugăm să consultați
# Fișier README pentru o descriere a diferitelor fișiere de configurare de pe boot
# partiție.
enable_uart=0
dtparam=audio=pornit
dtparam=i2c_arm=on
dtparam=spi=on
cmdline=cmdline.txt
De asemenea, am încercat să schimb enable_uart=0 la 1 în /boot/firmware/syscfg.txt.
După aceea, sistemul nu poate porni, ceea ce arată că fișierul influențează sistemul. Apoi am schimbat fișierul înapoi și sistemul pornește normal.
ubuntu@ubuntu-desktop:~$ cat /boot/firmware/cmdline.txt
net.ifnames=0 dwc_otg.lpm_enable=0 root=LABEL=inscriptibil rootfstype=ext4 elevator=termen limită rootwait fixrtc quiet splash
ubuntu@ubuntu-desktop:~$ sudo systemctl status [email protected]
â [email protected]
Încărcat: mascat (Motiv: Unitatea [email protected] este mascată.)
Activ: inactiv (mort)
ubuntu@ubuntu-desktop:~$ grupuri
ubuntu adm tty dialout cdrom sudo dip video plugdev input lxd lpadmin sambashare spi i2c gpio