如题,目前工程中用的controlSUITE中官方CMD文件:28377S_FLASH_lnk.cmd,程序烧写到Flash中运行,现在DSP上电时能把ADC中断服务函数移植到RAM中运行,以加快中断服务程序的执行速度,求指教应该如何进行操作?谢谢!
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.
如题,目前工程中用的controlSUITE中官方CMD文件:28377S_FLASH_lnk.cmd,程序烧写到Flash中运行,现在DSP上电时能把ADC中断服务函数移植到RAM中运行,以加快中断服务程序的执行速度,求指教应该如何进行操作?谢谢!
weimin xue 说:如题,目前工程中用的controlSUITE中官方CMD文件:28377S_FLASH_lnk.cmd,程序烧写到Flash中运行,现在DSP上电时能把ADC中断服务函数移植到RAM中运行,以加快中断服务程序的执行速度,求指教应该如何进行操作?谢谢!
问题表述不清楚,现在希望DSP上电时能把ADC中断服务函数移植到RAM中运行,以加快中断服务程序的执行速度
在main.c文件起始处(#include "F28x_Project.h"之后)增加代码段
#ifdef __TI_COMPILER_VERSION__
#if __TI_COMPILER_VERSION__ >= 15009000
#define ramFuncSection ".TI.ramfunc"
#else
#define ramFuncSection "ramfuncs"
#endif
#endif
#pragma CODE_SECTION(adca2_isr, ramFuncSection);
在28377S_FLASH_lnk.cmd文件中做如下修改(只改了标红两处)
#ifdef __TI_COMPILER_VERSION__
#if __TI_COMPILER_VERSION__ >= 15009000
.TI.ramfunc : {} LOAD = FLASHB, //FLASHD改为了FLASHB
RUN = RAMLS0 | RAMLS1 | RAMLS2 |RAMLS3,
LOAD_START(_RamfuncsLoadStart),
LOAD_SIZE(_RamfuncsLoadSize),
LOAD_END(_RamfuncsLoadEnd),
RUN_START(_RamfuncsRunStart),
RUN_SIZE(_RamfuncsRunSize),
RUN_END(_RamfuncsRunEnd),
PAGE = 0, ALIGN(4)
#else
ramfuncs : LOAD = FLASHB, //FLASHD改为了FLASHB
RUN = RAMLS0 | RAMLS1 | RAMLS2 |RAMLS3,
LOAD_START(_RamfuncsLoadStart),
LOAD_SIZE(_RamfuncsLoadSize),
LOAD_END(_RamfuncsLoadEnd),
RUN_START(_RamfuncsRunStart),
RUN_SIZE(_RamfuncsRunSize),
RUN_END(_RamfuncsRunEnd),
PAGE = 0, ALIGN(4)
#endif
#endif
通过示波器观察发现ADC中断服务程序执行时间在修改前后无变化(能编译通过也能掉电运行),想请教是什么原因?是我从Flash到RAM的copy方式不正确,还是说未加这些改动之前程序已经在初始化时刻被全部复制到了RAM中?
谢谢指教!