可使用COSMIC中的函数_fctcpy将FLASH中的代码代码拷贝RAM中,并运行。_fctcpy从FALSH中拷贝一段可移动代码段到RAM中。_fctcpy寻找linker定义的描述符(此描述符是在RAM中定义段的第一个字符)。本例子在RAM 中定义了一个段.CODE_IN_RAM。所以地一个字符是’C’。
需要在程序中应用int _fctcpy(charname);
在Ram 中创建一个’.CODE_IN_RAM’ 段。并在Option 中输入’-ic’
’.CODE_IN_RAM’ 表示在RAM中定义一个CODE_IN_RAM的段。程序可从此起始地址运行。_fctcpy函数使用此段的名字的第一个描述符’C’。
’-ic’
表示标记这个段为可移动的段。可将FLASH中的代码移动到此。
在程序代码中完成函数:
#pragma section (CODE_IN_RAM)
functions()
{
var1= 0x99;
var2= 0x88;
var3= 0x77;
}
routine()
{
var1++;
var2++;
var3++;
}
#pragma section ()
打开project->settings…->Linker如下图所示配置:
例子如下:
unsigned char var1,var2,var3;
int _fctcpy(char name);
#pragma section (CODE_IN_RAM)
functions()
{
var1 = 0x99;
var2 = 0x88;
var3 = 0x77;
}
routine()
{
var1++;
var2++;
var3++;
}
#pragma section ()
main()
{
_fctcpy('C');
//拷贝pragma section(CODE_IN_RAM)中的函数到RAM
functions();
// 调用RAM中的functions 函数
routine();
// 调用RAM 中的 routine 函数
while (1)
{
_asm("nop");
_asm("nop");
_asm("nop");
_asm("nop");
}
}
|
|