gpt4 book ai didi

linux - 在 Raspberry Pi 中使用 bcm2835 库作为非 root 的 PWM

转载 作者:行者123 更新时间:2023-12-04 18:43:56 34 4
gpt4 key购买 nike

我需要使用 PWM 控制一些直流电机。我一直在尝试使用 bcm2835 library ,但我需要 root 访问权限才能运行我的程序。我需要避免这种情况,因为这个程序是 ROS 包的一部分,如果以 root 身份运行会出现问题。我尝试按照“以 root 身份运行”部分中的说明进行操作,但没有成功。我做了以下事情。
首先,我安装了 libcap2 和 libcap-dev 并将我的用户添加到 kmem 组。

sudo apt-get install libcap2 libcap-dev
sudo adduser ubuntu kmem
然后,我已经安装了最新版本的 bcm2835 库。
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.67.tar.gz
tar zxvf bcm2835-1.67.tar.gz
cd bcm2835-1.67
./configure
make
sudo make check
sudo make install
之后,我取消了 #define BCM2835_HAVE_LIBCAP 的注释。输入 bcm2835.h ,我在 /usr/local/include/ 中找到的.
我允许 kmem 组的成员对/dev/mem 进行写访问。
echo 'SUBSYSTEM=="mem", KERNEL=="mem", GROUP="kmem", MODE="0660"' | sudo tee /etc/udev/rules.d/98-mem.rules
sudo reboot
最后,我编译了我的程序(称为 l298n)并运行以下命令。
sudo setcap cap_sys_rawio+ep l298n
完成所有这些之后,我的程序仍然无法提供 PWM 控制,除非我以 root 身份运行它。
我做错什么了吗?有没有其他方法可以解决这个问题?据我所知,其他库也会遇到同样的问题,因为它取决于 /dev/mem 的访问级别。 .
我在 Raspberry Pi 3B+ 中运行 Ubuntu 20.04 LTS。

最佳答案

你做错了什么:

  • 您编辑了错误的 bcm2835.h,您需要在解压 bcm2835-1.67.tar.gz 的地方编辑 bcm2835.h,而不是/usr/local/include。
  • 您没有重新编译库以实际具有添加的功能。

  • 此外,如果您只是访问 GPIO 引脚并且不需要对/dev/mem 的非 root 访问权限,那么除了向非 root 用户添加对/dev/gpiomem 的访问权限外,无需做任何事情。

    关于linux - 在 Raspberry Pi 中使用 bcm2835 库作为非 root 的 PWM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62695061/

    34 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com