TI论坛
直播中

古贤睦

7年用户 198经验值
私信 关注
[问答]

请问F2808程序从Flash搬到RAM中运行其他.c文件中被采样中断函数调用的函数会复制到RAM里面吗?

ramfuncs : LOAD = FLASHCD, PAGE = 0
RUN = PRAML0, PAGE = 0
LOAD_START(_RamfuncsLoadStart),
LOAD_END(_RamfuncsLoadEnd),
RUN_START(_RamfuncsRunStart)

在main中有:

#pragma CODE_SECtiON(adc_isr, "ramfuncs");

interrupt void adc_isr(void);//采样中断函数声明
在采样中断函数里面调用了有其他.c文件中的函数,那么当采样中断从Flash搬到RAM中的时候,其他.c文件中被采样中断函数调用的函数会不会复制到RAM里面呢?需不需要用#pragma CODE_SECTION重新对该调用函数进行段复制?

回帖(3)

冯敬宇

2018-8-20 06:59:46
Haypin,
在adc_isr中如果调用了A函数,A函数如果是在Flash上的,不会由于adc_isr的copy而随着搬到RAM中,所以A函数是在flash中运行,如果需要A函数也在RAM中,则必须跟adc_isr一样,把它放到ramfuncs段中。
Eric
                                                                         - ERIC
举报

冯敬宇

2018-8-20 07:15:23
所以只要把A函数加上下面的代码就可以
#pragma CODE_SECTION(A_func, "ramfuncs");
interrupt void A_func(void);
Eric
                                                                         - ERIC
举报

古贤睦

2018-8-20 07:24:16
引用: guigui_7044 发表于 2018-8-20 07:15
所以只要把A函数加上下面的代码就可以
#pragma CODE_SECTION(A_func, "ramfuncs");
interrupt void A_func(void);

嗯,明白了,谢谢Eric老师。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分