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-AM62X: 用户态GPIO在export引脚和写入value时出现问题

Part Number: PROCESSOR-SDK-AM62X


问题如附件新建 DOC 文档.doc

  • 感谢您对TI产品的关注!为更加有效地解决您的问题,我需要多一些时间查看这款芯片,稍后会为您解答。

  • 好的,谢谢,期待您的回复,最晚什么时候能有回复呢

  • 正常情况、导出gpio后reboot后情况、导出gpio后电源关闭再打开情况
    root@ok6254:~# echo 330 > /sys/class/gpio/export 
    [   66.668165] wangguan export_store
    [   66.668183] wangguan gpio_to_desc
    [   66.671502] wangguan gpio 330
    [   66.674877] wangguan gdev->base:314    gdev->base + gdev->ngpio:402 
    [   66.677864] wangguan return normal
    [   66.684210] wangguan desc->gdev->chip
    [   66.687624] wangguan status1 :0
    [   66.691276] wangguan status1 :0
    [   66.694622] wangguan status1 :0
    
    
    root@ok6254:~# cat /sys/kernel/debug/gpio 
    gpiochip2: GPIOs 314-401, parent: platform/601000.gpio, 601000.gpio:
     gpio-330 (                    |sysfs               ) in  lo 
     gpio-336 (                    |fixed-regulator-rgb ) out lo 
    
    gpiochip1: GPIOs 402-488, parent: platform/600000.gpio, 600000.gpio:
     gpio-433 (                    |net-5g-rst          ) out lo ACTIVE LOW
     gpio-437 (                    |phy_rstn            ) out lo 
     gpio-438 (                    |id                  ) in  lo 
     gpio-440 (                    |RT9186              ) out lo 
     gpio-441 (                    |fixed-regulator-lvds) out lo 
     gpio-442 (                    |phy_rstn            ) out lo 
     gpio-473 (                    |regulator-6         ) out lo 
    
    gpiochip0: GPIOs 489-511, parent: platform/4201000.gpio, 4201000.gpio:
    
    
    导出gpio后按下复位按键情况
    root@ok6254:~# echo 330 > /sys/class/gpio/export 
    [   40.124132] wangguan export_store
    [   40.124150] wangguan gpio_to_desc
    [   40.127480] wangguan gpio 330
    [   40.130830] wangguan gdev->base:337    gdev->base + gdev->ngpio:425 
    [   40.133787] wangguan gdev->base:425    gdev->base + gdev->ngpio:512 
    [   40.140159] wangguan return null
    [   40.146506] wangguan !desc
    [   40.149738] export_store: invalid wangguan GPIO 330
    -sh: echo: write error: Invalid argument
    root@ok6254:~# cat /sys/kernel/debug/gpio 
    gpiochip1: GPIOs 337-424, parent: platform/601000.gpio, 601000.gpio:
     gpio-359 (                    |fixed-regulator-rgb ) out lo 
    
    gpiochip0: GPIOs 425-511, parent: platform/600000.gpio, 600000.gpio:
     gpio-456 (                    |net-5g-rst          ) out lo ACTIVE LOW
     gpio-460 (                    |phy_rstn            ) out lo 
     gpio-461 (                    |id                  ) in  lo 
     gpio-463 (                    |RT9186              ) out lo 
     gpio-464 (                    |fixed-regulator-lvds) out lo 
     gpio-465 (                    |phy_rstn            ) out lo 
     gpio-496 (                    |regulator-6         ) out lo 
    root@ok6254:~# 

    按键复位后gpio的base值变了,您那再帮忙看看



  • 我们的复位电路如下

  • 您的问题已经发布在E2E英文技术论坛上,将由资深的英文论坛工程师为您提供帮助。您也可以查看下帖了解进展:

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1131420/processor-sdk-am62x-the-gpio-appears-problem-when-exporting-pin-and-writing-value

  • 非常感谢,也就是说A核的复位虽然不影响M核,但是由于MCU_GPIO没能正常复位,导致了A核的gpiochip号改变了,影响了A核自己的使用,这个是可以避免的吗

  • 您提供的console log显示“reset”后 MCU_GPIO0 不存在,这使得 MAIN_GPIO1(LED 引脚 330 所属)的基本引脚编号从 314 更改为 337。这就是为什么引脚 330 在“reset”后不再有效的原因。

    基本上你不应该使用固定的 GPIO 编号(在这种情况下为 330),相反,你需要查询芯片组的基本引脚编号,并加上偏移量以获得你要使用的 GPIO 编号。

  • 非常感谢,也就是说A核的复位虽然不影响M核,但是由于MCU_GPIO没能正常复位,导致了A核的gpiochip号改变了,影响了A核自己的使用,这个是可以避免的吗

    这个问题,我会继续为您在英文论坛更新,一旦有回复会即刻转告您。

  • 请尝试重启板子。

  • 试过了,断电重启是没有问题的,gpiochip号还是正常,断电重启A核和M核一起复位就是没有问题的;

    我觉得现在的启动流程是先启动A核,然后设备树初始化分配A核和M核的引脚,然后M核启动调用,是正常的,此时如果按键复位,因为复位按键是复位A核的,导致M核的使用出现异常,甚至影响了A核的gpiochip号,导致看起来A核也是有问题的了

  • 你所描述的是意料之中的。如果复位按钮连接到主域热复位或主域 POR,则只会复位主域,MCU GPIO 模块不会复位。

    在这种情况下,MCU GPIO由A内核使用,因此在主域复位时应复位MCU域,复位按钮应连接到MCU RESETz或MCU PORz引脚,因此它可以触发主域和MCU域复位。

  • 可是你们宣传这个cpu是可以支持M核独立运行的啊,现在M核独立运行的前提是不能在A核的设备树中初始化M核的引脚,但是如果不初始化,M核的这些功能又不能正常使用,所以就矛盾了

  • 可是你们宣传这个cpu是可以支持M核独立运行的啊

    我相信所宣传的是,AM62x可以支持MCU域独立于主域运行,因此主域复位不会影响MCU域。

    M 核是 M4F CPU,而 MCU 域包括 M4F 和一些外设。

    您的主域使用 MCU 域 的GPIO 模块。当主域复位时,MCU 域 GPIO 模块也应复位。否则,MCU_GPIO将不会处于要再次初始化的干净状态。在这种情况下,应使用MCU RESETz或PORZMCU PORz来复位主域和MCU域。

    您的情况不是“M 核独立运行”,因为MCU_GPIO由 MAIN 域使用。

    我看不出这里有什么矛盾。如果我的解释仍然不清楚,请告诉我。

  • 非常感谢耐心的解答,现在明白了,谢谢