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

一段在RAM运行的函数执行完所有语句后为什么跳不回原来的位置?

测试平台:TMS570LS1224

如下图所示,我将Fun_test(2);函数在main函数初始化前将该函数复制到了地址为0x080014FC的RAM区域运行,然后当我单步调试的时候,当运行到Fun_test()的时候确实跳转到了0x080014FC的地方运行,但是当运行完这函数的所有语句后,直接提示No source available for "0x8001538" 。我想问的是为什么不跳回原来调用他的地方。

1、开始调用函数,此时PC指针的地址是0x0000 7428(在flash区域)

2.程序跳转到0x080014FC开始执行Fun_test(2);函数入口。下面的截图是运行到Fun_test(2)最后语句时的PC指针。我本以为运行完最后一句代码会跳回原来调用他的地方,但是出错了,看图3

3.程序执行出错,貌似是提示没有可用的代码执行。

所以,问的问题是从flash拷贝到RAM的函数,为什么运行完此函数会报错,跳不回原来的调用他的地方,然后怎么解决这个问题?

Susan Yang:

很抱歉,手头上没有板子可以测试。我会在明后天找板子测一下

user5792549:

回复 Susan Yang:

不好意思,好像ok了,是我把_copyAPI2RAM_();给屏蔽掉了。。。。。。导致实际程序没有被复制到RAM,但是仿真的时候却也能进去(这是为什么了),唯一的影响是不能跳回原来调用的地方?然后执行_copyAPI2RAM_();后就能跳回调用的地方了。

这里就引出来另一个问题,为什么没有执行_copyAPI2RAM_();函数,仿真也能跳转到RAM中执行函数?

赞(0)
未经允许不得转载:TI中文支持网 » 一段在RAM运行的函数执行完所有语句后为什么跳不回原来的位置?
分享到: 更多 (0)