首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Pi4 Ubuntu20.04上启用UART通信

在Pi4 Ubuntu20.04上启用UART通信
EN

Ask Ubuntu用户
提问于 2020-06-27 19:11:49
回答 3查看 19.8K关注 0票数 4

我在RPI4 (4GB)上安装了Ubuntu20.04 (32位)。我在8,10针上安装了回回电线。

我需要使用蓝牙和基本的串行通信超过8,10与机器人爪电机控制器通信。

使用https://github.com/EmilGus/install_raspi-config上的脚本在Ubuntu上安装了RASPI,但是即使安装成功,它也会加载不正确的引导配置错误。这使我找到了/boot/firmware目录,在那里我找到了config.txtcmdline.txt等,我删除了console=...

代码语言:javascript
复制
$ dmesg | grep tty
[    0.001061] printk: console [tty0] enabled
[    1.919367] fe201000.serial: ttyAMA0 at MMIO 0xfe201000 (irq = 29, base_baud = 0) is a PL011 rev2
[    1.924677] fe215040.serial: ttyS0 at MMIO 0x0 (irq = 31, base_baud = 62500000) is a 16550

所以看起来不像是我禁用了控制台。我该怎么做?

代码语言:javascript
复制
$ ls -l /dev/ttyS[0123]
crw-rw---- 1 root dialout 4, 64 Jun 27 12:32 /dev/ttyS0
代码语言:javascript
复制
$ ls -l /dev/serial
lrwxrwxrwx 1 root root 7 Apr  1 11:23 /dev/serial1 -> ttyAMA0

第二,当我运行sudo minicom -b 115200 -o -D /dev/ttyS0时(已正确安装环回)

我没有看到任何人物。没有与串行通信的验证。

尝试更改波特率、奇偶校验、流控制设置,但没有任何效果。

还有一个简单的串行测试python,它也无法在/dev/ttyS0上发送/接收串口,无论我是否使用sudo运行。

UPDATE我得到了一个更新的安装脚本(上面相同的github链接),现在已经成功地安装了RASPI- config,但是,虽然我可以运行它,但是RPi4 w/ Ubuntu20.04上的目录结构非常不同,以至于它找不到它试图更改的配置文件。

代码语言:javascript
复制
$ sudo raspi-config
grep: /boot/cmdline.txt: No such file or directory
sed: can't read /boot/cmdline.txt: No such file or directory
sed: can't read /boot/cmdline.txt: No such file or directory

我猜想,这是其他的Raspberry Pi 4的所有者谁打算使用串口,并有一种方式来做RASPI-CONFIG是试图在Ubuntu。

我在/boot/firmware中找到了这些文件

我应该通过脚本手动更改RASPI-CONFIG应该做什么?

EN

回答 3

Ask Ubuntu用户

发布于 2021-03-25 00:38:25

在Ubuntu20.04 (64位)下,我在rpi4 (B型)上与一台机器人爪电机交谈时遇到了麻烦。我能够解决它,虽然我必须禁用蓝牙才能到达那里。不幸的是,我目前还不确定如何在不禁用蓝牙的情况下到达那里。Reader小心

证实了这一工作与5个机器人爪电机控制器在同一串行总线上。

尽管如此,我还是这样做的(请注意,这是本程序的cliffsnotes ):

  1. 禁用串行-getty@ttyS0.服务sudo系统stop停止串行-getty@ttyS0服务sudo systemctl禁用串行-getty@ttyS0.service sudo systemctl掩码串行-getty@ttyS0.service
  2. 设置udev规则
    • 将以下内容放入新文件/etc/udev/rules.d/10-local.rules KERNEL=="ttyS0“、SYMLINK+="serial0”GROUP="tty“MODE=”KERNEL==“ttyAMA0、SYMLINK+="serial1”GROUP=tty MODE="0660“
    • 重新加载udev规则:sudo udevadm control --reload-rules && sudo udevadm trigger

  3. 将用户添加到tty组:sudo adduser ubuntu tty
  4. console=serial0,115200中删除子字符串/boot/firmware/cmdline.txt
  5. 将换行符dtoverlay=disable-bt添加到/boot/firmware/config.txt (我把它放在cmdline=cmdline.txt行下面)
  6. 重新启动
  7. (可选)可以随意使用以下脚本进行测试:https://github.com/nasa-jpl/osr-rover-code/blob/foxy-devel/scripts/roboclawtest.py

注意,在此设置之后,您需要使用ttyAMA0 (或别名serial1),而不是ttyS0。第一种使用完整的硬件UART,第二种使用"mini-UART“实现,该实现在Ubuntu20.04下似乎不能很好地工作(至少在我的硬件设置中使用了机器人爪)。YMMV.)更多的讨论在GitHub上

票数 4
EN

Ask Ubuntu用户

发布于 2021-05-16 20:37:17

我有一个同时使用Bluetooth/hci0miniUART/ttyS0Ubuntu 20.04 (Ubuntu 5.4.0-1034.37-raspi 5.4.101) 64bit on Raspberry Pi 4 Model B Rev 1.1 (4G内存)的设置。以下是我所做的:

  1. 备份原始的config.txtcmdline.txt文件sudo -pr / -pr /固件/cmdline.txt/boot/固件/cmdline.txt-orig sudo cp -pr/-pr/config.txt/boot/固件/config.txt-orig
  2. 编辑/boot/firmware/config.txt以注释掉enable_uart=1,如下所示,#enable_uart=1 cmdline=cmdline.txt
  3. console=serial0,115200中删除控制台设置/boot/firmware/cmdline.txt
  4. 禁用使用miniUART systemctl停止串行-getty@ttyS0服务systemctl禁用串行-getty@ttyS0.service systemctl掩码-getty@ttyS0.service
  5. 将将使用miniUART的用户添加到ttydialout组sudo adduser ${ user } tty sudo adduser ${USER} dialout
  6. 最后,重新启动Ubuntu20.04,然后hci0/dev/ttyS0可以同时为我工作。

有关UART的详细文档可在https://www.raspberrypi.org/documentation/configuration/uart.md上找到。

票数 1
EN

Ask Ubuntu用户

发布于 2022-05-24 00:04:51

一个简单的解决方案是使用USB到TTL适配器将机器人爪连接到pi上的USB,而不是UART GPIO引脚。除了在机器人爪驱动程序代码中指定USB端口之外,这将不需要在pi上进行配置更改。根据我的经验,最好使用基于SiLabs CP2012的USB到TTL适配器(例如由adafruit销售或在亚马逊上提供),因为该芯片组在linux和其他操作系统上得到广泛支持,当然在Ubuntu上也不需要自定义驱动程序。

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1254376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档