1)在C程序中定义一个section。如何定义?哪是段的开始与结束
有两种方法
1.#pragma section = “MYSECTION”
fun()
{
}
2. fun() @ "MYSCTION"
{
}
在icf中如何来设置这个section?
我自己的理解是
在RAM里面定义一段区域用于存储copy的code
define block MYRAM with size = __MYSIZE__,alignment = 4 {};
initialize manually { section MYRAM* }; //no init my section
place in NearData { block MYRAM }; //NearData == RAM
place in FarFuncCode { ro section MYSECTION }; // flash
在c程序中实现copy code to ram
void CopyToRam()
{
char *targetAddr = __section_begin(" MYRAM");
char *sourceAddr = __section_begin("MYSECTION ");
char *sourceAddrEnd = __section_end("MYSECTION ");
int __MYSZE__= sourceAddrEnd - sourceAddr;
memcpy(targetAddr, sourceAddr, size);
}
我按照自己的理解,表达的肯定不对
谁能把他按照规范的IAR写出来啊,这样就可以实现在IAR中写stm8的bootloader了
|