大家好:
最近我升级我的DSP 代码,我发现我改变了函数运行的Code section 的名字,DSP 会停止,不执行任何代码。
我使用XDS Pro 去跟踪代码,发现代码进入了一个汇编执行代码的死循环。调试了很长时间,发现我改变了Code section 的名字后,代码正常。
这个令我非常困惑,以下两个问题:
1,为什么创建一个汇编执行代码的死循环?在我的执行代码中并没有循环语句?
2,为什么不同的Code Section 名字会导致不同的汇编执行代码的生成?
我使用的是C语言,在66AK2H14的K2HEVM上运行,使用CC7.3, Proceesor SDK是 ti-processor-sdk-rtos-k2hk-evm-04.01.00.06
以下操作过程
这个是我导致死循环的函数
这个是进入了死循环的代码
当我跟踪代码,发现进入以下的汇编执行代码,进入了死循环。
程序永远都是进入这个三句汇编代码,程序停止执行其他代码。
当我更换了Code section 的名字后,程序运行可以。
汇编的执行代码变了
但是 "ramisr" 和"runfastram" code section 都在同一memery中,不同的名字.
MEMORY{
……………….
dsp_L2_ram: o = 0x00800C00 l = 0x0006F400
……………..
}
runfastram : > dsp_L2_ram
ramisr : > dsp_L2_ram
如果有高手知道为什么,请指点。不想每一次更改DSP 的代码,都要冒着这样的潜在风险。
Shine:
请问用的是哪个版本的compiler? 升级一下compiler试试。
JackyXiaodong:
回复 Shine:
您好,
使用的是以下版本
谢谢建议,我稍后升级compiler尝试一下。请问,有没有别的办法可以跟踪到执行代码如何生成?
我担心,我修改某些地方代码,会引起其他的地方错误。
祝好