/*源程序*/
………
#pragma DATA_SECTION(SCIA_CCR,"sciaccrfile"); // 为SCIA的通信控制寄存器CCR新建一个段
unsigned int SCIA_CCR;
#pragma DATA_SECTION(a,"afile"); // 创建一个变量a
unsigned int a;
……..
void main()
{
……….
SCIA_CCR = 1;
a=1;
………
}
/*cmd文件*/
MEMORY
{
……
PAGE1: A:origin=0x3D8000,length = 0x000001
……
PAGE1:SCIACCR:origin=0x007050,length=0x000001
……
}
SECTIONS
{
……
afile:>A,PAGE = 1
sciaccrfile:>SCIACCR,PAGE=1
……
}
我的理解:经过该cmd文件链接,将程序烧入FLASH后,afile段被真正地烧在FLASH中,即FLASH中地址为0x3D8000的内容为1,且保持不变,而对于sciaccrfile段,只是使得SCIA_CCR代表地址0x007050,在程序上电瞬间,地址为0x007050的内容仍然是默认的复位值,只有等到程序执行到main函数中的 SCIA_CCR = 1语句后,地址为0x007050的内容才变成1,请问是这样的吗?
yong yan:
give me a hand please!
/*源程序*/
………
#pragma DATA_SECTION(SCIA_CCR,"sciaccrfile"); // 为SCIA的通信控制寄存器CCR新建一个段
unsigned int SCIA_CCR;
#pragma DATA_SECTION(a,"afile"); // 创建一个变量a
unsigned int a;
……..
void main()
{
……….
SCIA_CCR = 1;
a=1;
………
}
/*cmd文件*/
MEMORY
{
……
PAGE1: A:origin=0x3D8000,length = 0x000001
……
PAGE1:SCIACCR:origin=0x007050,length=0x000001
……
}
SECTIONS
{
……
afile:>A,PAGE = 1
sciaccrfile:>SCIACCR,PAGE=1
……
}
我的理解:经过该cmd文件链接,将程序烧入FLASH后,afile段被真正地烧在FLASH中,即FLASH中地址为0x3D8000的内容为1,且保持不变,而对于sciaccrfile段,只是使得SCIA_CCR代表地址0x007050,在程序上电瞬间,地址为0x007050的内容仍然是默认的复位值,只有等到程序执行到main函数中的 SCIA_CCR = 1语句后,地址为0x007050的内容才变成1,请问是这样的吗?
yong yan:
回复 Eric Ma:
thanks,Eric。
能再帮我看看下面两个帖子么?thank you so much!
http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/45757.aspx
http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/45755.aspx