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

请教 F28335 如何在软件中把一组数据(如一个数组)定义到指定的flash区?

想在软件中把一组数据,比如一个数组(已经初始化为想要的值),直接定义到一个确定的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文件中指定位置。

赞(0)
未经允许不得转载:TI中文支持网 » 请教 F28335 如何在软件中把一组数据(如一个数组)定义到指定的flash区?
分享到: 更多 (0)