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

AM57x平台Linux 4.9系统下GPIO247置高失败求助

解决AM57x平台GPIO247无法通过sysfs设置电平的问题

问题背景

  • 设备:AM57x,Linux内核版本4.9
  • 需求:将GPIOCHIP7的247号GPIO输出电平设置为hi
  • 当前状态:通过cat /sys/kernel/debug/gpio确认,gpio-247已绑定到enable功能,当前输出为lo
  • 操作失败现象:
    • 执行echo 247 > /sys/class/gpio/export返回echo: write error: Device or resource busy
    • 执行echo 247 > /sys/class/gpio/unexport返回echo: write error: Invalid argument
    • 其他GPIO可正常通过sysfs操作

原因分析

gpio-247已被内核驱动或设备树绑定到特定硬件功能,sysfs接口因资源被占用无法直接操作该GPIO。

解决方法

方法1:修改设备树(永久生效)

  1. 找到设备树中对应gpio-247的配置节点,通常格式类似enable-gpios = <&gpio7 23 GPIO_ACTIVE_HIGH>;(注:gpio7的247号对应芯片内偏移为247-224=23)
  2. 根据需求调整配置:要么移除该GPIO的功能绑定,要么直接设置默认输出为高电平,或修改驱动逻辑允许sysfs控制
  3. 重新编译设备树并烧写到设备中

方法2:通过debugfs临时修改(重启后失效)

利用内核debugfs直接操作GPIO电平:

# 确保debugfs已挂载,未挂载则执行
mount -t debugfs none /sys/kernel/debug

# 将gpio-247设置为高电平
echo 1 > /sys/kernel/debug/gpio/gpiochip7/gpio247/value

注:部分内核版本的debugfs路径可能存在差异,若上述路径不存在,可查看/sys/kernel/debug/gpio下的具体目录结构

方法3:卸载占用GPIO的驱动(临时生效)

  1. 查找占用gpio-247的驱动模块:
grep -r "247" /sys/class/gpio/
# 或结合设备树绑定信息,找到对应驱动名后执行
lsmod | grep <目标驱动名>
  1. 卸载驱动模块(需确保该驱动卸载不影响系统核心功能):
rmmod <目标驱动模块名>
  1. 重新通过sysfs操作GPIO:
echo 247 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio247/direction
echo 1 > /sys/class/gpio/gpio247/value

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:55:32