【问题标题】:GPS Serial Console issue on Ubuntu 20.04 on Raspberry Pi 4Raspberry Pi 4 上 Ubuntu 20.04 上的 GPS 串行控制台问题
【发布时间】:2022-02-09 13:49:00
【问题描述】:

我正在尝试在无头运行 Ubuntu 20.04 的 RPi 4B 上使用 BerryGPS-IMUv3 (https://ozzmaker.com/berrygps-berrygps-imu-quick-start-guide/)。安装 BerryGPS-IMU 后,它会阻止 pi 启动,可能是因为它正在将数据流式传输到 pi 并中断启动过程。制造商的说明声明需要禁用串行控制台,但说明假设用户正在运行 raspbian。

有没有人想出在 Ubuntu 20.04 上禁用串行控制台(但保持串行端口启用)的方法?我想我需要将启动延迟设置为“-2”以忽略中断,但我不确定如何通过 ssh 访问该设置。

【问题讨论】:

    标签: serial-port gps boot ubuntu-20.04 raspberry-pi4


    【解决方案1】:

    我遇到了类似的问题,并找到了this 的解决方案(使用 Raspberry Pi 4、Ubuntu 20.04 和 Adafruit Ultimate GPS HAT 进行了测试)。正如您所说,它是关于在串行线路上接收输入时阻止 U-boot 中断自动启动。不幸的是,这需要重新编译 U-boot 二进制文件。我在 RPi 本身上执行了此操作,而不是根据链接进行交叉编译。

    我的步骤如下:

    1. 安装依赖:apt-get install git make gcc gcc-aarch64-linux-gnu bison flex (注意我需要将bisonflex 添加到包中,因为没有它们构建失败,链接答案中没有提到)

    2. 获取 U-boot 代码库:git clone --depth 1 git://git.denx.de/u-boot.git && cd u-boot/

    3. 编辑 rip_4_defconfig:vi configs/rpi_4_defconfig 添加行:

    CONFIG_BOOTDELAY=-2
    CONFIG_SILENT_CONSOLE=y
    CONFIG_SYS_DEVICE_NULLDEV=y
    CONFIG_SILENT_CONSOLE_UPDATE_ON_SET=y
    CONFIG_SILENT_U_BOOT_ONLY=y
    Per the linked post
    
    1. 编辑 rpi.h:vi include/configs/rpi.h,修改此节以添加“silent=1\0”行
    #define CONFIG_EXTRA_ENV_SETTINGS \
        "dhcpuboot=usb start; dhcp u-boot.uimg; bootm\0" \
        "silent=1\0" \
        ENV_DEVICE_SETTINGS \
        ENV_DFU_SETTINGS \
        ENV_MEM_LAYOUT_SETTINGS \
        BOOTENV
    
    1. 然后make rpi_4_defconfig && make

    2. 重新定位 make 的二进制输出:

    mv /boot/firmware/uboot_rpi_4.bin /boot/firmware/uboot_rpi_4.bin.bak
    mv u-boot.bin /boot/firmware/uboot_rpi_4.bin
    
    1. 我认为这就是我在 Ubuntu 20.04 上启动 RPi 和 Adafruit GPS HAT 所做的一切。

    【讨论】:

    • 自 2021 年 11 月 13 日起,这不再有效。每次启动时,我都会收到这样的消息:spi-bcm2835 could not get clk: -517
    • 作为另一个附录 - 以 Raspberry Pi 4 上的 Ubuntu 20.04 作为目标和构建机器,上述说明适用于以下修改:git clone --depth 1 git://git.denx。 de/u-boot.git --branch=v2021.01 我猜这意味着后来的标签发生了一些变化
    【解决方案2】:

    编译 U-boot 对我不起作用(截至今天,Raspberry Pi 4 上的最新 Ubuntu 20.04)。 我不得不使用串行控制台来更改设置。 跟着这个答案:https://askubuntu.com/a/1278181/1569332 让我试着扩展一下。

    1. 您必须将串行适配器连接到 Pi 的 Tx Rx (GPIO 14,15) 引脚并从另一台计算机登录到 Raspberry Pi 的串行控制台 (UART)。请参阅 this guide 以获取相关教程。 我使用了一个 Arduino(运行 SoftwareSerial 示例 -->> 将波特率更改为 115200),连接方式如下: connection diagram

      Rpi TXD -- Arduino 引脚 10

      Rpi RXD -- Arduino 引脚 11

      Rpi GND -- Arduino GND

    2. 将pi断电,将串口设备(Arduino)连接到另一台电脑,打开Arduino串口监视器(或putty或sudo screen /dev/tty{your port} 115200)

    3. 为 Rpi 供电,您应该会看到类似于启动屏幕的内容。

    4. 在串行监视器/控制台上按住 ENTER(/任意键),它应该会打印:

      Hit any key to stop autoboot: 2 0

      U-Boot>

    如果您错过了 U-Boot 菜单,系统会提示您登录。快速重复步骤 3 和 4。

    1. 输入以下命令:

      setenv bootdelay -2

      saveenv 回复应该是Saving Environment to FAT... OK

    重启验证。

    【讨论】:

      猜你喜欢
      • 2020-08-13
      • 1970-01-01
      • 1970-01-01
      • 2020-12-13
      • 1970-01-01
      • 1970-01-01
      • 2021-04-13
      • 2018-01-08
      • 1970-01-01
      相关资源
      最近更新 更多