Part Number:TMS320F280025
问题描述:我用280025芯片编程,Flash划分为两部分,SEC1和SEC2。SEC1存放Boot程序,用于升级APP程序,SEC2存放APP程序,两套程序是分开编译的。现在由于项目需求,SEC2空间不够用了,于是将其中通讯相关的一部分代码(这里暂且称它为Comm_Fun)放到了SEC1中,通过函数指针的方式访问SEC1中的Comm_Fun代码。如下图所示。
现在有以下函数调用关系:
在APP程序中有函数funa,在funa中如果变量 i 使用的是堆栈寄存器SP[0],在CommFun是否存在可能SP[0]也会被赋值?那在Funb的调用时可能会存在无法预知的结果。请帮忙对这个问题给出建议,谢谢。
Ben Qin:
你好,也许你可以尝试利用#pragma指令在指定位置存放变量,从该地址读取变量。
,
mike li:
但是现在是担心局部变量会使用相同的CPU寄存器,例如在funa()中 i++操作使用XAR1寄存器保存计算后的结果,在CommFun()中XAR1寄存器的值可能会被改变,那再调用Fun(i)的时候可能就不对了