TI中文支持网
TI专业的中文技术问题搜集分享网站

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

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

James Li2:

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

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

si cheng:

回复 James Li2:

你好:

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

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

James Li2:

回复 si cheng:

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

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

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

si cheng:

回复 James Li2:

你好:

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

James Li2:

回复 si cheng:

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

赞(0)
未经允许不得转载:TI中文支持网 » c6678实现软件陷阱的问题
分享到: 更多 (0)