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.

[参考译文] AM6442:当 A53 和 AMP 时初始化失败;R5f 触发不同的 GPIO 组

Guru**** 2867080 points

Other Parts Discussed in Thread: AM6442

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1632850/am6442-initialization-fail-when-a53-r5f-trigger-different-gpio-bank

器件型号: AM6442

尊敬的 TI 专家:

客户正在使用 AM64 SDK11.0

以前、它们仅将 A53_0 内核配置为使用 GPIO0_8 进行触发、这没有问题。

如今、客户还希望 R5F0_0 内核使用 GPIO1_17 进行触发、现在问题如下:

具体表现如下:

  1. 如果 R5F0_0 内核首先初始化 GPIO1_17 中断、而 A53_0 内核稍后初始化 GPIO0_8 中断、则 A53_0 内核的中断初始化失败;
  2. 如果情况相反、当 A53_0 内核首先初始化 GPIO0_8 中断时、R5F 内核无法初始化 GPIO1_17 中断、当 A53_0 内核进入 GPIO0_8 中断几次后、它无法再进入。

您能否提供一些有关此问题的建议?

谢谢、

Kevin

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

    您好 Kevin、

    感谢您的查询!

    我需要一个表示的原理图 任何可能的互连 外部的两个 GPIO 引脚之间。   在执行两个输入的 IRQ 初始化时、是否禁用 GPIO1_17 和 GPIO0_8 输出和输入缓冲器。 在布防(启用)相应的 IRQ 之前清除 GPIO1_17 和 GPIO0_8 中断状态。

    在 A53_0 内核的中断初始化失败下、您意味着什么?

    期待您的反馈。

    谢谢

    此致

    Anastas Yordanov。

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

    尊敬的 Anastas:

    我们已搜索但无法找到可能在 GPIO1_17、GPIO0_8 上读取的确切寄存器地址、以确定是否:

     1:如果禁用输出和输入缓冲器(我们无法找到寄存器的偏移量)

    2: 如果中断状态已清除 (我们找不到寄存器的偏移量)

    我们知道 GPIO0 和 GPIO1 的基地址  分别为 0x600000 和 0x601000、但无法找到上述确切偏移量来读取寄存器以转储信息。

    请帮帮我们。

    谢谢、

    Kevin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 TI 专家:
    关于你的答复、其他详细资料补充如下:
    1. 图 1 显示了 GPIO 触发信号的拓扑图。 触发信号来自 FPGA 的同一信号源。 两个 GPIO 引脚的外设连接电路完全相同、并且使用了边沿触发。
    2. 程序运行后、已检查 GPIO1_17 和 GPIO0_8 的寄存器值、两者都为 0x50007、第 18 位设置为 1、并且两者都未禁用接收缓冲器。 图 2 和图 3 分别显示了 A53SS0_0 和 R5FSS0_0 的寄存器检查屏幕截图。                                                                                                   
    3. 检查代码后、确认在每次中断执行完成后、A53SS0_0 内核和 R5FSS0_0 内核均通过 Hwip_clearInt 函数清除中断。 代码屏幕截图如图 4 所示。                                         
    感谢您的答复。 此致!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否 禁用 GPIO1_17 和 GPIO0_8 输出和输入缓冲器

    您是说输出/输入缓冲器 padconfig RX/TX 字段吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 TI 专家:
    以下是对“您在下的意思是 — A53_0 内核的中断初始化失败?“问题的补充答复:
    完成 A53SS0_0 中的中断配置并调用后 Sciclient_rmIrqSet 则返回值为 –1 而不是 0。 这将得到
    打印日志如下图所示、打印完成后将触发断言。

    谢谢

    此致

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

    您好、Kevin、Yang、Tony、

    从 AM64x 数据表可以看出、GPIO1_17 对应的 SoC 引脚:PRG0_PRU0_GPO17 具有以下默认的引脚多路复用设置:

    POR 之后:输入和输出缓冲器关闭、弱拉电阻禁用、默认情况下在 U1 引脚上选择 GPIO1_17 信号->在 POR 后、U1 引脚应处于高阻态。

    根据 AM64x TRM、负责的寄存器是物理地址= 0x000F41A4(与您使用的地址匹配)的 PADCFG_CTRL0_CFG0_PADCONFIG105

    在本例中、其寄存器值更改为 0x00050007:

    PADCFG_CTRL0_CFG0_PADCONFIG105[31:20]= 0x0 -> TX_DIS=0 ->输出缓冲器的启用/禁用取决于 GPIO IP 本身 — 看起来 TX_DIS 在之前运行的程序或您的应用中被清除。

    [19:16]=0x5 ->启用输入缓冲器 (RX_ACTIVE=high)、启用弱下拉、[15:0]= 0x7 ->禁用施密特触发(这是有意完成的吗?)、MuxMode=0x7 -> Q:值= 0x00050007 是否反映 中断设置期间 padconfiguration105 寄存器的状态?

    从 AM64x 数据表中可以看出、对应的 GPIO0_8 SoC 引脚:OSPI0_D5 似乎具有以下默认的引脚多路复用设置:

    POR 之后:输入和输出缓冲器关闭、禁用弱上拉、默认情况下在 P20 引脚上选择 GPIO0_8 信号-> P20 引脚在 POR 之后应处于高阻态。

    根据 AM64x TRM、 负责的寄存器是 物理地址= 0x000F4020(与您使用的地址匹配)的 PADCFG_CTRL0_CFG0_PADCONFIG8

    在本例中、其寄存器值设置为 0x00050007:

    PADCFG_CTRL0_CFG0_PADCONFIG105[31:20]= 0x0 -> TX_DIS=0 ->输出缓冲器的启用/禁用取决于 GPIO IP 本身 — 看起来  TX_DIS 在之前运行的程序或您的应用中被清除。

    [19:16]=0x5 ->启用输入缓冲器 (RX_ACTIVE=high)、启用弱下拉、[15:0]= 0x7 ->禁用施密特触发(这是有意完成的吗?)、MuxMode=0x7 -> Q:值= 0x00050007 是否反映 中断设置期间 padconfiguration8 寄存器的状态?

    Yang、

    在特定情况下、当两个 GPIO 引脚连接在一起并且 SoC 引脚输出缓冲器均启用时、可能会触发虚假中断。 如果 GPIO1_17 IP 输出及其 SoC 引脚输出(与您的情况相同)、则翻转 GPIO1_17 OUTPUT_DATA 值会导致另一个 GPIO 输入检测到脉冲转换并检测意外的中断事件。 此外、如果 FPGA 输出最初处于高阻态、因为 AM6442 在之前初始化、我建议在 AM6442 GPIO 输入引脚上使用外部 10k 拉电阻器、以避免触发虚假中断。 选择拉动类型、以匹配与触发边沿事件((PD 表示上升沿、PU 表示下降沿)相对应的初始电平。  

    我可以建议执行以下步骤:

    首先、您可以首先重新访问 AM6442 TRM 的  12.1.2.5 GPIO 编程指南部分

    1、要位于安全侧、请将两个 GPIO 的 TX_DIS 设置为高电平、以强制关闭 SoC 引脚输出缓冲器 (HiZ)。

    2.确保将 GPIO1_17 和 GPIO0_8 引脚的 RX_ACTIVE 位域设置为 低电平,以在设置 IRQ 之前禁用输入缓冲区。

    在 GPIO 控制器 IP 级别、确保 GPIO1_17 和 GPIO0_8 方向设置为输入 (DIR=1)。

    4.考虑到您在两个 GPIO 输入上都启用了弱下拉,您能否确认中断的边沿触发类型是“上升“边沿?  

    如果您 使用外部更强的 10k 拉电阻器、则可以保持禁用弱拉电阻。  

    5.将触发边沿设置为“上升“以启用 IRQ。

    6.清除中断状态标志。

    7.将 RX_ACTIVE 设置回高电平以启用输入。

    我希望这有助于找出根本原因。

    我将在下周跟进这一主题。

    谢谢!

    此致

    Anastas Yordanov  

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

    您好 Yang、

    我想为我的延迟回复道歉!

    您是否已经找到一些精确的  GPIO1_17 和 GPIO0_8 中断输入初始化的分辨率?

    请告诉我,如果它解决了,我们将关闭螺纹。

    如果情况并非如此、请详细说明 所提出的问题。  

    期待您的反馈!

    此致

    Anastas Yordanov

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

    尊敬的 Anastas:

    感谢您的支持、我们已与客户确认他们已解决此问题、因此我们将立即关闭此主题。 如果将来还需要任何其他内容、我们将重新打开或开始新主题。

    谢谢、

    Kevin