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.

[参考译文] AM6548:读取矢量中断管理器 (VIM) 中的 VIM_VEC_INT_j 时出现死锁

Guru**** 2828555 points

Other Parts Discussed in Thread: AM6548

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1623622/am6548-deadlock-when-reading-vim_vec_int_j-in-vectored-interrupt-manager-vim

器件型号: AM6548

您好、
我们有一个在 AM6548 R5_0 内核上运行的应用。 出于安全原因、我们执行的任务是检查许多寄存器是否存在意外更改。 有时、当 R5 读取 VIM 中的 VIM_VEC_INT_j 寄存器(0x40F82000 +公式)时、它会陷入某种僵局。 我们已经尝试使用调试器连接到 R5_0 内核、但这无法实现(请参阅随附的图像)。 可以连接到其他内核 (R5_1、A53_x_y)。 当连接到其他内核之一 (R5_1) 时、可以读取 AM6548 SOC 上的存储器和寄存器。 对存储器和寄存器进行一些分析后、在读取 VIM_VEC_INT_j 寄存器时发生中断、似乎会发生死锁。

您能解释为什么会出现这种僵局吗?
我们如何监控 VIM_VEC_INT_j 寄存器?

此致
约翰尼·莫斯特拉姆

Connect_R5_0.png

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

    您好、

    我们如何监控 VIM_VEC_INT_j 寄存器?

    您可以在读取之前尝试禁用所有中断 VIM_VEC_INT_j 寄存器、读取完成后重新启用中断。 将该寄存器视为临界段。  

    请告知我们 上述实验的结果。

    此致、

    Tushar

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

    您好、

    我们还从 VIM 控制器读取这些寄存器、而不会出现任何问题:
    VIM_DEDVEC (0x40f80030)
    VIM_INTMAP_j(0x40f80418 +公式)
    VIM_INTTYPE_j(0x40f8041C +公式)
    VIM_PRI_INT_j(0x40f81000 +公式)

    我在读取 VIM_VEC_INT_j 寄存器之前已尝试禁用所有中断(屏蔽 CPSR 中的 IRQ 和 FIQ)、但我仍然遇到这种死锁。
    也许中断 不是问题吗?
    在读取该寄存器之前、我是否需要检查任何内容?

    此致

    Johnny

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

    您好 Johnny、

    您能告诉矢量表存储在哪个存储器中吗? 确保它位于 TCM 存储器中、以加快访问速度。

    这看起来像是总线争用问题、因为 当 VIM 尝试在中断确认周期内提供向量地址时、R5F 读取寄存器正在进行中、会出现争用、从而减慢处理器的速度。

    能否尝试再尝试一个实验从 VIM 寄存器中禁用高优先级中断(或检查 VIM_VEC_INT 的中断)、而不是从 R5F 寄存器中屏蔽该中断。

    此致、

    Tushar

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

    您好、

    我不太确定向量表是什么意思。 R5 矢量表(复位,预取中止,数据中止,IRQ/FIQ 中断)存储在 ATCM 存储器(地址 0x00 - 0x1C)中。 VIM 矢量表映射到地址 0x40F82000。

    我已经尝试禁用检查 VIM_VEC_INT 的中断(使用 VIM_INTR_EN_CLR 寄存器)、但我仍然遇到这种死锁。

    此致

    Johnny

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

    您好、

    请提供示例代码以在我们这边重现问题

    此致、

    Tushar