想在软件中把一组数据,比如一个数组(已经初始化为想要的值),直接定义到一个确定的flash空间里面。我的步骤如下:
1.在源文件中添加如下:
#pragma DATA_SECTION(CalMapTable,"CalMapTableFile");
static uint16 CalMapTable[20]=
{
//这里填充的是自己的固定值,20个元素;
}
2.在cmd文件中修改如下:
在Memorys中修改如下:
FLASHB_CAlMAPTABLE : origin = 0x330000, length = 0x001000
在SECTIONS中修改如下:
CalMapTableFile : > FLASHB_CAlMAPTABLE , PAGE = 1
编译后在生成的map文件里,发现数组CalMapTable的地址的确是被分配到了0x330000处。但load到目标板之后,发现数组的内容并没有写入到预期的0x330000处,仍全是FFFF填充的。而同样的操作对RAM区是有效的,是因为DSP FLASH本来就不支持吗? 自己以往使用Freescale或英飞凌的MCU时都是可以直接用代码把数据定义到指定FLASH区的。 请牛人指点?多谢了先!
andy guo:
回复 Eric Ma:
感谢!
想在软件中把一组数据,比如一个数组(已经初始化为想要的值),直接定义到一个确定的flash空间里面。我的步骤如下:
1.在源文件中添加如下:
#pragma DATA_SECTION(CalMapTable,"CalMapTableFile");
static uint16 CalMapTable[20]=
{
//这里填充的是自己的固定值,20个元素;
}
2.在cmd文件中修改如下:
在Memorys中修改如下:
FLASHB_CAlMAPTABLE : origin = 0x330000, length = 0x001000
在SECTIONS中修改如下:
CalMapTableFile : > FLASHB_CAlMAPTABLE , PAGE = 1
编译后在生成的map文件里,发现数组CalMapTable的地址的确是被分配到了0x330000处。但load到目标板之后,发现数组的内容并没有写入到预期的0x330000处,仍全是FFFF填充的。而同样的操作对RAM区是有效的,是因为DSP FLASH本来就不支持吗? 自己以往使用Freescale或英飞凌的MCU时都是可以直接用代码把数据定义到指定FLASH区的。 请牛人指点?多谢了先!
andy guo:
回复 Seven Han:
多谢了!
想在软件中把一组数据,比如一个数组(已经初始化为想要的值),直接定义到一个确定的flash空间里面。我的步骤如下:
1.在源文件中添加如下:
#pragma DATA_SECTION(CalMapTable,"CalMapTableFile");
static uint16 CalMapTable[20]=
{
//这里填充的是自己的固定值,20个元素;
}
2.在cmd文件中修改如下:
在Memorys中修改如下:
FLASHB_CAlMAPTABLE : origin = 0x330000, length = 0x001000
在SECTIONS中修改如下:
CalMapTableFile : > FLASHB_CAlMAPTABLE , PAGE = 1
编译后在生成的map文件里,发现数组CalMapTable的地址的确是被分配到了0x330000处。但load到目标板之后,发现数组的内容并没有写入到预期的0x330000处,仍全是FFFF填充的。而同样的操作对RAM区是有效的,是因为DSP FLASH本来就不支持吗? 自己以往使用Freescale或英飞凌的MCU时都是可以直接用代码把数据定义到指定FLASH区的。 请牛人指点?多谢了先!
user1792825:
回复 Seven Han:
牛,按照这个方法,都不用在CMD文件中指定位置。