工具/软件:Linux
我希望能够在器件树中设置默认 GPIO 状态、我还希望在系统引导后轻松更改输出。 我可以使用 GPIO-hog 属性设置初始输出、但在使用 sysfs 启动后无法修改其值。 在器件树中是否有另一种初始化 GPIO 输出的方法? 或者、在 GPIO 节点中使用 GPIO-hog 属性后、是否有方法在引导后修改输出?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Linux
我希望能够在器件树中设置默认 GPIO 状态、我还希望在系统引导后轻松更改输出。 我可以使用 GPIO-hog 属性设置初始输出、但在使用 sysfs 启动后无法修改其值。 在器件树中是否有另一种初始化 GPIO 输出的方法? 或者、在 GPIO 节点中使用 GPIO-hog 属性后、是否有方法在引导后修改输出?
您好、Pavel、
这就是我在设备树中所拥有的内容:
GPIO8{&G pinctrl-names ="default"; pinctrl-0 =<&GPIO8_PINs>; OUTPSI_GPIO{ GPIO-hog; GPIO =<9 GPIO_ACTIVE_HIGH_>; 输出高电平; }; };
当我尝试在/sys/class/gpio 中导出 GPIO 时:
root@ENSO:/sys/class/gpio # echo 233 >导出
bash:echo:write error:device or resource busy
当我注释 output_GPIO 部分时:
GPIO8{&G pinctrl-names ="default"; pinctrl-0 =<&GPIO8_PINs>; // output_GPIO{ // GPIO-hog; // GPIO =<9 GPIO_ACTIVE_HIGH>; // 输出高电平; //}; };
我可以运行相同的命令而不会出现任何问题。
Heather、
驱动程序中已使用的 GPIO 无法通过 sysfs 进行控制、除非驱动程序导出该特定引脚。 运行这些命令以了解驱动程序中已请求的 GPIO。
$mount -t debugfs debugfs /sys/kernel/debug
$cat /sys/kernel/debug/gpio
为了控制 LED 和按钮、内核分别具有标准驱动程序"LED-GPIO"和"GPIO_keys"、这些驱动程序应该被直接使用而不是 GPIO。
请注意、通用"LED 和按钮"GPIO 任务分别存在标准内核驱动 程序:"LED-GPIO"和"GPIO_keys"。 使用它们而不是直接与 GPIO 通信;它们与内核框架集成的效果要优于您的用户空间代码。
您也可以尝试此方法:尝试通过 CTRL_CORE_PAD_x 寄存器中配置的内部上拉使能、而不是通过 GPIO-hog 来控制 GPIO 输出值。 您应该在 u-boot-spl 代码中控制 pinmux。
此致、
帕维尔