You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Beaglebone Black升级Ubuntu 16.04至18.04后PWM驱动LED失效问题

解决BeagleBone Black Ubuntu 18.04升级后PWM失效问题

1. 检查PWM设备节点是否存在

Ubuntu 18.04调整了PWM子系统的设备路径,先确认系统是否识别到PWM控制器:

ls /sys/class/pwm/

正常应显示pwmchip0、pwmchip1等节点,若缺失则说明设备树未正确加载PWM控制器,需重新启用。

2. 重新加载PWM设备树覆盖

BeagleBone Black的PWM依赖设备树覆盖,升级后配置方式可能变更:

  • 查看当前加载的覆盖:
cat /sys/devices/platform/bone_capemgr/slots
  • 若未加载对应PWM覆盖,手动添加(替换为你的引脚对应的覆盖名称,比如P9_14对应bone_pwm_P9_14):
echo am33xx_pwm > /sys/devices/platform/bone_capemgr/slots
echo bone_pwm_P9_14 > /sys/devices/platform/bone_capemgr/slots

3. 修复权限问题

升级后PWM设备节点权限可能被重置,导致程序无法访问:

  • 临时修改权限:
sudo chmod 666 /sys/class/pwm/pwmchip0/*
  • 永久设置权限:创建/etc/udev/rules.d/99-pwm.rules文件,写入:
SUBSYSTEM=="pwm", GROUP="gpio", MODE="0666"

然后重启udev服务:

sudo udevadm control --reload-rules && sudo udevadm trigger

4. 适配旧程序的接口变化

Ubuntu 18.04采用了标准PWM sysfs接口,旧程序可能依赖废弃路径(如/sys/devices/ocp.*/pwm_test_*),需修改程序为标准流程:

  1. 导出PWM通道:echo 0 > /sys/class/pwm/pwmchip0/export(0为通道号,根据引脚对应)
  2. 设置周期:echo 1000000 > /sys/class/pwm/pwmchip0/pwm0/period(单位纳秒)
  3. 设置占空比:echo 500000 > /sys/class/pwm/pwmchip0/pwm0/duty_cycle
  4. 启用PWM:echo 1 > /sys/class/pwm/pwmchip0/pwm0/enable

5. 硬件功能验证

用命令直接测试PWM是否工作:

echo 0 > /sys/class/pwm/pwmchip0/export
echo 1000000 > /sys/class/pwm/pwmchip0/pwm0/period
echo 500000 > /sys/class/pwm/pwmchip0/pwm0/duty_cycle
echo 1 > /sys/class/pwm/pwmchip0/pwm0/enable

若LED正常闪烁,说明硬件无问题,问题出在程序适配或配置;若仍不工作,检查引脚是否正确或硬件是否损坏。

内容的提问来源于stack exchange,提问作者George

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 12:15:32