Beaglebone Black rev C 缺少系统目录文件(用于访问 PWM 引脚)

Beaglebone Black rev C 缺少系统目录文件(用于访问 PWM 引脚)

因此,我尝试设置我的 Beaglebone Black,以便能够访问 PWM 引脚。最初我遵循教程,但它告诉我访问一个 ocp 文件,而我的 beaglebone 没有该文件。

debian@beaglebone:/sys/devices$ ls
armv7_cortex_a8  breakpoint  platform  soc0  software  system  tracepoint  virtual

我查阅了许多其他指南,它们都说了同样的事情。我最终应该能够进入我的 pwm 文件夹并导出引脚(使用导出/取消导出文件),但这也缺失了。

debian@beaglebone:/sys/class/pwm$ ls
pwm-0:0  pwm-0:1  pwm-2:0  pwm-2:1  pwm-4:0  pwm-4:1  pwmchip0  pwmchip2  pwmchip4

我可以很好地使用 GPIO 引脚,并且我正在运行默认图像,发现这里. 它没有 GUI,并且基于 Debian 9.5 内核版本4.14.71-ti-r80

对此的任何见解都会有所帮助,包括常规故障排除、我可能需要安装的软件包或我可以做些什么来使我的图像再次工作。我不想将新的 debian 版本刷入我的 beaglebone,因为我已经在上面编译了许多二进制文件,而且编译和安装我正在使用的某些库(特别是 opencv)需要数十个小时。

感谢您的帮助!

答案1

所以我认为我已经能够解决这个问题了。

实际上,在 Linux 内核 4.14 版左右,开始更改 pwm 引脚的硬件覆盖;从那时起,它经历了一些小的修改,但基本保持不变。我使用的是 4.14 之前的版本。

我发现这个堆栈溢出问题它与我的类似,并解释了新系统的工作原理。它大部分都是准确的,但是我使用的是 v4.19,文件名不再是 pwm0 或 pwm1,而是 pwm0:0 或 pwm0:1。

本质上这个问题链接到这是 beaglebone 的 github 示例,其中列出了他们希望你如何使用它,值得一看。但总结一下,你可以运行

debian@beaglebone:/sys/class/pwm$ ls -lh
total 0
lrwxrwxrwx 1 root root 0 Nov  3  2016 pwm-0:0 -> ../../devices/platform/ocp/48300000.epwmss/48300200.pwm/pwm/pwmchip0/pwm-0:0
lrwxrwxrwx 1 root root 0 Nov  3  2016 pwm-0:1 -> ../../devices/platform/ocp/48300000.epwmss/48300200.pwm/pwm/pwmchip0/pwm-0:1
lrwxrwxrwx 1 root root 0 Nov  3  2016 pwm-2:0 -> ../../devices/platform/ocp/48302000.epwmss/48302200.pwm/pwm/pwmchip2/pwm-2:0
lrwxrwxrwx 1 root root 0 Nov  3  2016 pwm-2:1 -> ../../devices/platform/ocp/48302000.epwmss/48302200.pwm/pwm/pwmchip2/pwm-2:1
lrwxrwxrwx 1 root root 0 Nov  3  2016 pwm-4:0 -> ../../devices/platform/ocp/48304000.epwmss/48304200.pwm/pwm/pwmchip4/pwm-4:0
lrwxrwxrwx 1 root root 0 Nov  3  2016 pwm-4:1 -> ../../devices/platform/ocp/48304000.epwmss/48304200.pwm/pwm/pwmchip4/pwm-4:1
lrwxrwxrwx 1 root root 0 Jan  1  2000 pwmchip0 -> ../../devices/platform/ocp/48300000.epwmss/48300200.pwm/pwm/pwmchip0
lrwxrwxrwx 1 root root 0 Jan  1  2000 pwmchip2 -> ../../devices/platform/ocp/48302000.epwmss/48302200.pwm/pwm/pwmchip2
lrwxrwxrwx 1 root root 0 Jan  1  2000 pwmchip4 -> ../../devices/platform/ocp/48304000.epwmss/48304200.pwm/pwm/pwmchip4

这将为您提供所有 pwm 引脚的位置(除了引脚 42;我不知道如何找到它)。例如,要打开引脚 14,您可以运行

export ehrpwm1=/sys/devices/platform/ocp/48302000.epwmss/48302200.pwm/pwm/pwmchip2
echo 0 > ${ehrpwm1}/export || true
echo 20000 > ${ehrpwm1}/pwm2:0/period
echo 10000 > ${ehrpwm1}/pwm2:0/duty_cycle
echo 1 > ${ehrpwm1}/pwm2:0/enable

不过,我听说这种情况在不同的主板上有所变化,所以我会遵循这个例子并确保你的文件夹结构对齐。

如果您感兴趣的话,我还编写了一个使用 pwm 引脚的库,我正在使用它,效果很好。不过我要指出的是,我还没有在其他版本的 beaglebone 上尝试过,但它在 linux 内核版本 4.19 上效果很好https://github.com/Haxonek/wiringbeaglelite

相关内容