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.

[参考译文] PROCESSOR-SDK-AM68A:无法读取 AM68A SK 板上的用户按钮(SW3)状态

Guru**** 2328790 points
Other Parts Discussed in Thread: AM68A, SK-AM68, SYSCONFIG
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1518763/processor-sdk-am68a-unable-to-read-user-button-sw3-state-on-am68a-sk-board

器件型号:PROCESSOR-SDK-AM68A
Thread 中讨论的其他器件:AM68ASK-AM68SysConfig

工具/软件:

TI 团队大家好、

我正在处理的 AM68A SK 板 并尝试读取的状态 用户按钮 SW3 、我相信它是映射到的 gpiochip3上的 GPIO 线路69

我运行了以下命令:

/dev/gpiochip3 69

输出始终为:

"69"=不活动

无论是否按下按钮、该结果都不会改变。

问题:

  1. 您能否确认 GPIO3_69是 SW3 (用户按钮)的正确映射吗?

  2. Linux 或器件树中是否需要任何配置(例如多路复用、pinctrl、方向、偏置)、以支持读取按钮?

  3. 您能否提供在 Linux 下测试 SW3功能的方法或参考?

提前感谢您的帮助。



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

    您好、

    由于美国节假日、请预计回复会延迟、感谢您的耐心等待!

    此致、
    Sudheer

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

    尊敬的 Noushadali:

    对延迟深表歉意。 遗憾的是、我没有 SK-AM68电路板、但我已将按钮用于其他器件和电路板。  

    通过浏览 SK-AM68的 DTS 文件、WKUP_GPIO0_69似乎没有条目。 这需要添加。 您是否可以尝试遵循此常见问题解答(也适用于 AM68A ):e2e.ti.com/.../faq-tda4vm-dra829-am65xx-linux-configuring-gpios。 可以忽略使用 sysfs 的方法1 (尽管可以使用识别哪个 GPIO 实例的方法是 WKUP_GPIO0)、并 应遵循方法2器件树进行更改。  

    应在以下位置对电路板 dts 文件进行更改: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-am68-sk-base-board.dts?h=ti-linux-6.6.y 

    此致、

    Takuma

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

    您好、

    感谢您的指导。

    我已根据建议使用 SysConfig 在器件树中的 GPIO69 (WKUP_GPIO0_69)上配置了用户按钮。 对k3-am68-sk-base-board.dts文件进行了修改。






    但是、无论按下按钮如何、GPIO 仍显示为非活动状态。 此外、它不会出现在/sys/class/gpio路径下。

    您能否建议是否需要执行任何其他步骤才能在 SK-AM68上启用此 GPIO?

    感谢您的支持。


    - Noushad

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

    尊敬的 Noushad:

    我更深入地研究了这一点、使用了我从同事那里借用的电路板进行了一些实验、我们的原理图和数据表中似乎有几个拼写错误。  

    WKUP_GPIO0_33并不连接到 SK-AM68A 的用户按钮"SW3"、而是 WKUP_GPIO0_69。 看来设备树中似乎不需要额外的引脚多路复用。 请参阅以下日志:

    am68a-sk login: root
    [  331.031120] audit: type=1006 audit(1709057363.524:23): pid=1295 uid=0 old-auid=4294967295 auid=0 tty=(none) old-ses=4294967295 ses=3 res=1
    [  331.044031] audit: type=1300 audit(1709057363.524:23): arch=c00000b7 syscall=64 success=yes exit=1 a0=8 a1=ffffe25705c8 a2=1 a3=1 items=0 ppid=1 pid=1295 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=3 comm="(systemd)" exe="/usr/lib/systemd/systemd-executor" key=(null)
    [  331.070725] audit: type=1327 audit(1709057363.524:23): proctitle="(systemd)"
    [  331.090306] audit: type=1334 audit(1709057363.584:24): prog-id=21 op=LOAD
    [  331.097477] audit: type=1300 audit(1709057363.584:24): arch=c00000b7 syscall=280 success=yes exit=8 a0=5 a1=fffff7a0fd58 a2=90 a3=0 items=0 ppid=1 pid=1295 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=3 comm="systemd" exe="/usr/lib/systemd/systemd" key=(null)
    [  331.123703] audit: type=1327 audit(1709057363.584:24): proctitle="(systemd)"
    [  331.131015] audit: type=1334 audit(1709057363.584:25): prog-id=21 op=UNLOAD
    [  331.138352] audit: type=1300 audit(1709057363.584:25): arch=c00000b7 syscall=57 success=yes exit=0 a0=8 a1=1 a2=0 a3=ffff8d10dc60 items=0 ppid=1 pid=1295 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=3 comm="systemd" exe="/usr/lib/systemd/systemd" key=(null)
    [  331.164279] audit: type=1327 audit(1709057363.584:25): proctitle="(systemd)"
    [  331.171664] audit: type=1334 audit(1709057363.584:26): prog-id=22 op=LOAD
    root@am68a-sk:/opt/edgeai-gst-apps# gpioget -c gpiochip3 33
    "33"=active
    root@am68a-sk:/opt/edgeai-gst-apps# gpioget -c gpiochip3 33
    "33"=inactive
    root@am68a-sk:/opt/edgeai-gst-apps# gpioget -c gpiochip3 33
    "33"=inactive
    root@am68a-sk:/opt/edgeai-gst-apps# gpioget -c gpiochip3 33
    "33"=inactive
    root@am68a-sk:/opt/edgeai-gst-apps# gpioget -c gpiochip3 33
    "33"=active
    root@am68a-sk:/opt/edgeai-gst-apps# gpioget -c gpiochip3 33
    "33"=active
    root@am68a-sk:/opt/edgeai-gst-apps# gpioget -c gpiochip3 33
    "33"=active
    root@am68a-sk:/opt/edgeai-gst-apps#
    

    此致、

    Takuma

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

    Hi@,

    感谢您的详细回答以及有关按钮映射的说明。

    gpioget -c gpiochip3 33根据您的建议使用命令测试了 SK-AM68A 电路板上的行为。 但是、"33"=inactive无论是否按下 SW3按钮、输出都会显示一致。 请查找下面随附的命令日志以供参考。

    root@am68a-sk:/opt/edgeai-gst-apps# [   44.540298] kauditd_printk_skb: 12 callbacks suppressed
    [   44.540305] audit: type=1334 audit(1748506755.987:30): prog-id=24 op=LOAD
    [   44.556699] audit: type=1334 audit(1748506756.003:31): prog-id=18 op=UNLOAD
    ^C
    root@am68a-sk:/opt/edgeai-gst-apps# gpioget -c gpiochip3 33
    "33"=inactive
    root@am68a-sk:/opt/edgeai-gst-apps# gpioget -c gpiochip3 33
    "33"=inactive
    root@am68a-sk:/opt/edgeai-gst-apps# gpioget -c gpiochip3 33
    "33"=inactive
    root@am68a-sk:/opt/edgeai-gst-apps# gpioget -c gpiochip3 33
    "33"=inactive
    root@am68a-sk:/opt/edgeai-gst-apps# gpioget -c gpiochip3 33
    "33"=inactive
    root@am68a-sk:/opt/edgeai-gst-apps# gpioget -c gpiochip3 33
    "33"=inactive
    root@am68a-sk:/opt/edgeai-gst-apps# gpioget -c gpiochip3 33
    "33"=inactive
    root@am68a-sk:/opt/edgeai-gst-apps# gpioget -c gpiochip3 33
    "33"=inactive
    root@am68a-sk:/opt/edgeai-gst-apps# gpioget -c gpiochip3 33
    "33"=inactive
    root@am68a-sk:/opt/edgeai-gst-apps# gpioget -c gpiochip3 33
    "33"=inactive
    root@am68a-sk:/opt/edgeai-gst-apps#


    此外、根据 SK-AM68A 处理器入门套件用户指南、可能存在一些混淆:

    • SW2 任何映射 GPIO33 和被描述为 引导开关 因此它通常不用作用户交互式按钮。

    • SW3 、其目的是 用户按钮 、映射到 GPIO69 GPIO34


    我也测试了 GPIO69和 GPIO34、但无论 SW3的状态如何、它们都保持未激活状态。



    我在两个单独的 AM68A 电路板上测试过此测试、两者显示了相同的结果。

    您能否告知是否需要任何其他配置(例如 pinmux、上拉设置)、或者是否存在影响此行为的电路板版本差异?

    NOUSHAD

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

    Hi@ ,

    今天是否有任何更新?

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

    尊敬的 Noushad:

    我了解用户指南和原理图、假设 SW2映射到 WKUP_GPIO33而不是 SW3。 不过、我查看了原理图、发现标记为用户 PB 的 SW3似乎连接到 SOC_WAKE、即 WKUP_GPIO33、而不是69。  

    我认为用户指南中切换了这些值、因为我能够为 WKUP_GPIO33使用 SW3、如日志中所示。 此外、作为一个实验、我 通过 gpioset 切换 WKUP_GPIO69、这导致发生复位、这让我相信 WKUP_GPIO69连接到标有 PORZ (上电复位)的 SW2。

    作为实验、在读取/写入 GPIO 引脚值之前、您可以尝试 读取和写入 应使用 devmem2设置 DTS 文件的 PADCONFIG 寄存器。 具体的命令为:

    • 若要读取 WKUP_GPIO0_33的 PADCONFIG:"devmem2 0x4301C048"
    • 要将 RXACTIVE 位和引脚多路复用设置为7 (GPIO)、请 执行以下操作:"devmem2 0x4301C048 w 0x50007"
    • 要读取 WKUP_GPIO0_69的 PADCONFIG、请执行以下操作:"devmem2 0x4301C0A8"
    • 将 RXACTIVE 位和引脚多路复用设置为7 (GPIO):"devmem2 0x4301C0A8 w 0x50007"

    这样、您应该能够使用 gpioget/gpioset 读取/写入 GPIO 引脚的值。  

    此致、

    Takuma

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

    尊敬的 

    感谢您提供的宝贵支持、现在我可以将 SW3用作用户中断按钮
    例如、我可以将 GPIO 设置为输出模式吗? 然后设置高电平和低电平有效?

    - Noushad

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

    尊敬的 Noushad:

    很高兴您能使用按钮!

    输出和输入由不同的独立位和内部电路控制。 默认情况下、TX_DIS 位未设置、启用输出。 因此、如果在 padconfig 寄存器中写入了我之前响应中的值、则您应该能够使用 gpioset 将值设置为高电平和低电平。

    作为指标、devmem2直接对 padconfig 寄存器进行编程、有利于故障排除、但 DTS 应该是对 padconfig 寄存器进行编程的正确方法。

    此致、

    Takuma