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.

[参考译文] AM62L-PROCESSOR-SDK:通过 sysfs 进行切换后的 GPIO 回读问题

Guru**** 2393355 points
Other Parts Discussed in Thread: AM62L

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1496300/am62l-processor-sdk-gpio-readback-issue-after-toggling-via-sysfs

器件型号:AM62L-PROCESSOR-SDK
主题中讨论的其他器件:AM62L

工具与软件:

尊敬的 TI 支持部门:

我在 AM62L3平台上遇到 GPIO 切换问题。 GPIO 在设备树中的默认引脚控制组下进行配置、我通过 sysfs 接口进行控制。 切换 GPIO 时、可以在万用表上正确观察到高电平和低电平之间的预期电压转换。 不过、从 sysfs 读回 GPIO 状态时、该值并不总是反映实际引脚状态。 这种不一致性引发了 GPIO 回读是否受引脚多路复用、驱动器行为或 AM62L3 GPIO 控制器的某些内部配置的影响的问题。 我想了解出现这种差异的可能原因、以及是否需要任何额外的配置来确保准确的软件级 GPIO 状态检测。 此外、与 sysfs 相比、使用 gpod 等替代接口会提供更可靠的结果吗? 非常感谢关于解决这一问题的任何指导。

此致、
Dheeraj K.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Dheeraj:

    下面是指向一般 Linux GPIO 指南的链接: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1494485/faq-processor-sdk-getting-started-with-gpios-in-linux-using-the-am62-and-am64-family-processors

    您能否提供一些步骤以便我可以尝试复制在我的终端读回 sysfs GPIO? 由于自 Linux 内核4.8以来一直弃用 GPIO SYSFS、因此我不确定是否已在 AM62L 上对其进行了检查。

    您可以使用 libgpiod、上面链接的指南中提供了相关说明。 请注意、如果您随后调用 gpioset 然后调用 gpioget、则 get 命令将返回意外的数字。 这是因为调用 gpioset 和 gpioget 将改变 GPIO 的方向并丢失先前的上下文。

    此致、

    Anshu

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Anshu、您好!

    感谢您分享有关 GPIO 的详细说明。我已经尝试了使用 GPIO SYSFS 方法(其中回读值不正确)。因此、从上面的文档中、我尝试了通过配置 GPIO0_TEST_104 (EEPROM WP 引脚)来使用 gpioset 和 gpioget。 通过使用此方法、GPIO 值将被正确切换。回读数据时、数据始终处于"非活动"状态。 这是您提到的意外号码吗? . 如何从软件端了解 GPIO 是高还是低? 任何方法,因为我不能通过一直探测 GPIO 引脚检查.下面是随附的屏幕截图.



    使用 GPIO sysfs 的步骤:  
    由于 GPIO 驱动程序已经存在、我刚刚在 defconfig 中启用了 GPIO_SYSFS、并在与 GPIO_SYSFS 相关的特定 kconfig 中删除了"if expert"。 然后、我已经给出了以下命令来设置和 cat 值。

    echo 616 >/sys/class/gpio/export   //(512+104=616)
    echo out >/sys/class/gpio/gpio616/direction
    echo 1 >/sys/class/gpio/gpio616/value
    CAT /sys/class/gpio/gpio616/value --这将返回不适当的值。

    是否要针对此问题进行任何基于驱动因素的更改?

    此致、
    Dheeraj k

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Dheeraj、

    通过读回数据时始终显示为"未激活"。 这是您提到的意外号码吗?

    是的、在切换方向时、前一个上下文会丢失。

    如何从软件端了解 GPIO 是高还是低?

    您可以在寄存器级别进行检查、并使用"evmem2"命令读取寄存器。

    请参阅 AM62L TRM: https://www.ti.com/lit/pdf/sprujb4中的第12.2.2.4节"GPIO 功能说明"和"14.7.2.2.1 GPIO 汇总"

    我需要一些时间来复制 SYSFS 命令、以便为响应留出一些时间。

    谢谢!

    Anshu