Raspberry Pi 3 上带有 Buildroot 映像的 PPS GPIO

Raspberry Pi 3 上带有 Buildroot 映像的 PPS GPIO

我使用 Buildroot 尝试为 Raspberry Pi 3 构建一个 Linux 映像,在其中我可以访问其中一个 GPIO 引脚上的每秒脉冲 (PPS) 输入。

首先,我在标准 Raspbian 发行版上尝试过这一点,并使其能够通过以下更改进行工作:

  • 添加。dtoverlay=pps-gpio,gpiopin=20/boot/config.txt
  • 添加。pps-gpio/etc/modules

然后我得到一个条目/dev/pps0,当将带有 PPS 信号的电线连接到 RPi3 上的物理引脚 38 并运行时,pps-test /dev/pps0我得到了预期的每秒一个信号。到目前为止一切顺利。

现在我想使用 Buildroot 构建的我自己的映像重新创建它。我使用默认configs/raspberrypi3_64_defconfig配置,但进行了以下更改make nconfig

  • 使用内核rpi-4.14.y-rt分支github.com/raspberrypi/linux
  • systemd作为初始化系统
  • /dev management using udev (from systemd)
  • Target packages-> Hardware handling->pps-tools激活

(我认为这就是我所做的所有更改,但我可能忘记了一些东西..)

在我得到的输出中,我看到引导分区中的sdcard.img文件。pps-gpio.dtbo我将该行添加dtoverlay=pps-gpio,gpiopin=20到文件中config.txt。我还将该行添加到一个名为我放入文件系统中的pps-gpio文件中。pps.conf/etc/modules-load.d

当我启动系统时,我没有任何条目/dev/ppsX,但是当我运行时,lsmod我得到(除其他外): pps_gpio 16384 0 pps_core 20480 1 pps_gpio

这是否意味着dtoverlay已正确加载?我可以尝试什么才能获得参赛资格/dev/ppsX

答案1

事实证明,缺少的是make nconfig还选择:

  • Kernel->Build Device Tree with overlay support

另外,在文件中<buildroot>/board/raspberrypi3-64/genimage-raspberrypi3-64.cfg添加文件pps-gpio.dtbo,使该image boot.vfat部分如下所示:

image boot.vfat {
  vfat {
    files = {
      "bcm2710-rpi-3-b.dtb",
      "bcm2710-rpi-3-b-plus.dtb",
      "bcm2837-rpi-3-b.dtb",
      "rpi-firmware/bootcode.bin",
      "rpi-firmware/cmdline.txt",
      "rpi-firmware/config.txt",
      "rpi-firmware/fixup.dat",
      "rpi-firmware/start.elf",
      "Image"
    }

    file overlays/pps-gpio.dtbo {
      image = "rpi-firmware/overlays/pps-gpio.dtbo"
    }
  }
  size = 32M
}

不需要将文件放在pps.conf下面。etc/modules-load.d

通过这些更改,我/dev/pps0在启动系统时会自动获得一个设备。

相关内容