使用以下代码初始化数据放在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.