TI中文支持网
TI专业的中文技术问题搜集分享网站

flash区域初始化问题。

使用以下代码初始化数据放在flash区域

#pragma DATA_SECTION(test,"flashtest");
const Uint16 test=1;

flashtest已经在cmd文件中放在了flash区域了

flashtest :> FLASHB,PAGE=1

程序步骤如下:

1.当程序第一次运行的时候会初始化test为1并放置在flashtest区域

2.当程序运行过程将test置从flash中拷贝到如变量a中,即a=test;

3.程序继续运行,运行一段时间以后a的值修改掉了,如a=2,

然后将a的值通过flash_api函数写回test所在的flash位置,即test所在flash区域值改为2,

接着芯片就断电。

问题如下:

当芯片第二次上电的时候,

#pragma DATA_SECTION(test,"flashtest");
const Uint16 test=1;

这段程序是不是继续执行,那么test的值就从2改为1了吗?

如果不执行,程序正常运行时又把test从flash区域拷贝到a中,那么a=2。

还是执行了,程序把test从flash区域拷贝到a中,这时候a的值还是1。

请帮忙讲解一下。

Young Hu:

test的值不会变化,test=2; a=2

使用以下代码初始化数据放在flash区域

#pragma DATA_SECTION(test,"flashtest");
const Uint16 test=1;

flashtest已经在cmd文件中放在了flash区域了

flashtest :> FLASHB,PAGE=1

程序步骤如下:

1.当程序第一次运行的时候会初始化test为1并放置在flashtest区域

2.当程序运行过程将test置从flash中拷贝到如变量a中,即a=test;

3.程序继续运行,运行一段时间以后a的值修改掉了,如a=2,

然后将a的值通过flash_api函数写回test所在的flash位置,即test所在flash区域值改为2,

接着芯片就断电。

问题如下:

当芯片第二次上电的时候,

#pragma DATA_SECTION(test,"flashtest");
const Uint16 test=1;

这段程序是不是继续执行,那么test的值就从2改为1了吗?

如果不执行,程序正常运行时又把test从flash区域拷贝到a中,那么a=2。

还是执行了,程序把test从flash区域拷贝到a中,这时候a的值还是1。

请帮忙讲解一下。

Martin Yu:

补充下,

#pragma DATA_SECTION(test,"flashtest");const Uint16 test=1;在编译时执行分配内存和初始化,之后就固定了,如果不执行Flash API的话是不会改变的flash中的值,因此test应该等于2.

赞(0)
未经允许不得转载:TI中文支持网 » flash区域初始化问题。
分享到: 更多 (0)