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.

c6678实现软件陷阱的问题



你好:

TMS320C66x DSP  CPU and Instruction Set 文档

6.6.4 Traps  中说:

A trap behaves like an interrupt, but is created and controlled with software. The trap

condition can be stored in any one of the conditional registers: A1, A2, B0, B1, or B2. If

the trap condition is valid, a branch to the trap handler routine processes the trap and

the return

这句话中所说的 陷阱状态可以存储在任何一个条件寄存器中, 我想知道, 这个过程是如何实现的,从哪里可以知道陷阱的状态? 谢谢

  • 其实trap类似一个条件跳转,只不过在条件跳转之前关闭了全局中断,使trap不被硬中断打断。trap返回的时候再恢复全局中断。

    准确的说A0,A1,A2,B0,B1,B2存储的是触发trap的条件,条件成立就跳转到trap,否则就不跳转。

  • 你好:

    假如我现在的应用程序只使用一部分存储空间,当程序跑飞后,PC指针可能会指向剩余的空间某个地址。然后剩余空间的地址存放的什么指令,对我来说是不清楚的,因此,必须设置一种保护机制,当程序跑飞到剩余空间的某个地址时,我想让程序进入死循环,请问这种方式该如何实现? 我想将剩余空间全部填充同一种指令,即跳转指令。剩余空间不能用多个指令组合完成同一个功能,比如死循环。因为加入死循环需要4个指令完成,那么当程序跑飞时,很有可能指向这个组合指令的最后一个,这样就不可能实现死循环功能。

    不知道trap是不是和这一样,如果一样的话,实现这个trap也是需要多个指令完成的,因此,程序跑飞的时候也是存在只执行了trap组合指令的一部分,导致程序指针指向异常。 求解!!!!多谢!

  • 我觉得trap不适合你这种应用。

    软断点指令可能比较合适。软断点指令是asm( “ SWBP 0”),当DSP core执行到这条指令的时候就会停下来。

    这条指令的机器码是 0x3c6f,你可以把不用的nenory填充成这个值试试。

  • 我觉得trap不适合你这种应用。

    软断点指令可能比较合适。软断点指令是asm( “ SWBP 0”),当DSP core执行到这条指令的时候就会停下来。

    这条指令的机器码是 0x3c6f,你可以把不用的nenory填充成这个值试试。

  • 你好:

    这个这条指令是不是只能在c6678上用? 我手上现在有个项目关于c6701的,我想在c6701上实现这个软断点,不知道有什么指令可用?多谢!!!!

  • c6701确实不支持SWBP指令。我对67系列处理器不熟悉。sorry!