TI论坛
直播中

李奂善

7年用户 198经验值
私信 关注
[问答]

请问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区的。   请牛人指点?多谢了先!

回帖(4)

冯敬宇

2018-9-14 11:55:34
编译后在生成的map文件里,发现数组CalMapTable的地址的确是被分配到了0x330000处。但load到目标板之后,发现数组的内容并没有写入到预期的0x330000处,仍全是FFFF填充的。
ERIC:
你要把变量改为常量。
                                                                         - ERIC
举报

周静

2018-9-14 12:04:49




const  uint16 CalMapTable[20]=
[
     //这里填充的是自己的固定值,20个元素;
]测试是可以的,您试试
举报

李奂善

2018-9-14 12:12:15
引用: guigui_7044 发表于 2018-9-14 13:55
编译后在生成的map文件里,发现数组CalMapTable的地址的确是被分配到了0x330000处。但load到目标板之后,发现数组的内容并没有写入到预期的0x330000处,仍全是FFFF填充的。
ERIC:
你要把变量改为常量。

感谢!
举报

李奂善

2018-9-14 12:24:47
引用: euagh1985 发表于 2018-9-14 14:04
<blockquote class="quote"/>

多谢了!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分