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.

[参考译文] TMS320C6678:中断确认

Guru**** 2540720 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/616185/tms320c6678-interrupt-acknowledge

器件型号:TMS320C6678
Thread 中讨论的其他器件:SYSBIOS

您好!

我正在处理一个必须管理多个正确访问存储器的项目。

为了保证这一点、我正在开发一些在 DSP 启动时运行的软件测试、以检查这些机制是否正常工作。

为此、我有许多方案、例如:

  • 写入禁止写入的 L2 SRAM 地址

  • 写入禁止写入的 MSM 地址

  • 以及其他类似场景(在此处描述不有用)

为此、我将以下事件分支到事件3:

  • 110:MDMAERREVT - MDMA 总线错误事件

  • 113:L1P_ED -在 DMA 读取期间检测到单个位错误

  • 117:L2_ED2 -检测到未校正的位错误

  • 119:SYS_CMPA - DSP 内存保护故障

  • 124:L2_CMPA - DSP 内存保护故障

  • 126:EMC_CMPA - DSP 内存保护故障

将寄存器 EvtMask3设置为0xAF5DBFFF。

然后、我通过将 IntMux3寄存器设置为0x03000000 (中断12、13和14未激活)、将事件3配置为分支到中断15。

我还通过设置激活了中断15:

  • IER 寄存器位15至1 (用于启用中断15)

  • CSR 寄存器 GIE 位为1 (启用全局中断)

在这个 DSP 初始化之后、我执行下面描述的场景、即:

  • 写入 MPU 禁止的 L2 SRAM 地址

  • 写入 MPU 禁止写入的 MSM 地址

我检查是否调用了中断15例程。

它在除…之外的两种情况下都能正常工作 仅用于第一次测试。

因此、如果我对 L2 SRAM 禁止地址执行写操作、则会调用中断15、但如果在我执行第二次测试以写入 MSM 禁止地址后、则永远不会调用中断15。

我的第一个分析是检查我的 MSM 测试是否正确完成、但验证后没有问题。 为了验证我是否已将两个测试方法反转:

  • 首先执行 MSM 禁止的写入

  • 其次、执行 L2禁止写入

在这种情况下、正确调用中断15进行 MSM 测试、但不进行第二个测试(即之前运行的 L2 SRAM 测试)。

因此、当调用我的中断15例程时、似乎永远不能再生成中断15。

我假设我的例程未正确执行中断确认,但我看不到问题。

为了获得信息、我的中断15例程执行以下操作:

  • 通过将 ICR 寄存器的位15设置为1来清除中断15标志

  • 通过将 EVTCLR3寄存器的 EC126位设置为1 (如果事件126被提出)或将 EVTCLR3寄存器的 EC124位设置为1 (如果事件124被提出)来清除相应的事件标志

请告诉我、我是否必须做其他事情来确认中断15、以解释为什么这个中断始终只被调用一次?

提前感谢