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.
工具与软件:
您好、TI 专家:
我想触发 ITRAP、并在主循环中使用以下方法。
定义指针并指向 非法地址、然后写入和读取它的值。
但我没有进入任何中断。
我的方法有什么问题吗?
Volatile uint32_t * TestOverRangePoint =(uint32_t *) 0xFFFFFFFF;
Volatile uint32_t Testdata = 0;
(;;)
{
*TestOverRangePoint = 0x01;
Testdata =* TestOverRangePoint;
}
另一个问题是、我想为 ITRAP 编写处理程序。
TI 是否提供了有关如何 在 ITRAP 处理程序中记录栈上返回地址值的示例?
您好、W Z:
请参阅 C28 CPU 指南 https://www.ti.com/lit/ug/spru430f/spru430f.pdf 第3.6节和3.5.2节
执行与 ITRAP 相对应的 TRAP #19指令的最简单方法
谢谢。
感谢您的帮助。 这确实是执行 TRAP #19的最简单方法
void trigger_trap19(){
asm (" trap #19");
}
您可以帮助检查以下问题吗?
我的方法有什么问题吗?
我想测试对 invaild 存储器的访问、然后进入非法中断。
Volatile uint32_t * TestOverRangePoint =(uint32_t *) 0xFFFFFFFF;
Volatile uint32_t Testdata = 0;
(;;)
{
*TestOverRangePoint = 0x01;
Testdata =* TestOverRangePoint;
}
您好、WZ:
我要测试对入侵内存的访问、然后输入非法中断。
您能否为上述陈述指出参考文档?
在 C28x 指南中、我仅查看 ITRAP 的以下源:
谢谢
第一个是无效寻址模式。 有没有文档澄清了有关无效指令以及当操作码值为 0x0000 和 0xFFFF 时的更多信息
WZ:
这是 在取指令期间从程序存储器中读取的非法值。
非法 操作码提取值为0000、FFFF 或任何与已定义的操作码不匹配的值。
谢谢。
我无法理解、从 程序存储器读取的值是什么非法值。 您能举一个例子吗?
已经定义了操作码。 但何时进行常规编码、如何引入未定义的操作码?
WZ:
如果您 开始从全部为0000或 FFFF 的存储器中执行、意外情况下、您可能最终获得 ITRAP
谢谢