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、以解释为什么这个中断始终只被调用一次?
提前感谢