FLASH分区用来存储数据,是不是修改linker.cmd就可以?

[复制链接]
 楼主| shiqiaocanxue 发表于 2016-8-3 15:47 | 显示全部楼层 |阅读模式
由于TM4C的EEPROM存储空间太小,因此做实验需要记录的数据想要存到内置的FLASH存储器中。看了几个大神的帖子,存储空间的分配是由bootloader完成的,而且和编译器也有关?如果我使用CCS编译和链接,是修改工程中include文件夹/bootloader文件夹下的bl_link_ccs.cmd,还是工程目录下lm4f2305hqr.cmd呢?这两个文件各是什么作用呢?
 楼主| shiqiaocanxue 发表于 2016-8-3 20:52 | 显示全部楼层
FLASH可以直接拿来存数据吗?我试着是可以的,但是会不会保证存储程序的区域不被覆盖呢?
dirtwillfly 发表于 2016-8-4 10:16 | 显示全部楼层
可以存数据的。一般修改工程目录下的lm4f2305hqr.cmd
 楼主| shiqiaocanxue 发表于 2016-8-4 13:29 | 显示全部楼层
dirtwillfly 发表于 2016-8-4 10:16
可以存数据的。一般修改工程目录下的lm4f2305hqr.cmd

我不对这个文件修改,直接往Flash存数据好像也可以。。。
dirtwillfly 发表于 2016-8-4 13:55 | 显示全部楼层
shiqiaocanxue 发表于 2016-8-4 13:29
我不对这个文件修改,直接往Flash存数据好像也可以。。。

是的。只要没被程序占用的flash都没问题。
如果程序用到了,很可能会跑飞。
dirtwillfly 发表于 2016-8-4 13:56 | 显示全部楼层
你也可以直接定义一个大数组
 楼主| shiqiaocanxue 发表于 2016-8-4 15:08 | 显示全部楼层
dirtwillfly 发表于 2016-8-4 13:56
你也可以直接定义一个大数组

您的意思是直接定义大数组,然后整块存到Flash吗?和一个字一个字地存有什么改进呢?
dirtwillfly 发表于 2016-8-4 18:39 | 显示全部楼层
shiqiaocanxue 发表于 2016-8-4 15:08
您的意思是直接定义大数组,然后整块存到Flash吗?和一个字一个字地存有什么改进呢? ...

直接定义一个存储在flash上的数组,编译的时候,编译器就不会分配程序在这一部分flash存储空间了
 楼主| shiqiaocanxue 发表于 2016-8-4 21:37 | 显示全部楼层
dirtwillfly 发表于 2016-8-4 18:39
直接定义一个存储在flash上的数组,编译的时候,编译器就不会分配程序在这一部分flash存储空间了 ...

在哪儿定义呢,Bootloader里吗?使用CCS编译器如何定义呢?
xyz549040622 发表于 2016-8-4 22:07 | 显示全部楼层
shiqiaocanxue 发表于 2016-8-4 21:37
在哪儿定义呢,Bootloader里吗?使用CCS编译器如何定义呢?

上面灰版已经说了,在.cmd文件中修改地址。你可以把数据放在eeprom中,这个空间一般足够了。想要放在flash空间的话,只要不特殊定义,会自动放在flash中的,至于空间的分配,你交给编译器就好了,你只管定义大小就好啦。
@dirtwillfly 是不是可以这么理解呢
mmbs 发表于 2016-8-5 22:32 | 显示全部楼层
cmd里面有分区的。
mmbs 发表于 2016-8-5 22:34 | 显示全部楼层
不进行大空间的分布一般没有问题。
mmbs 发表于 2016-8-7 21:52 | 显示全部楼层
直接修改cmd?
mmbs 发表于 2016-8-7 21:53 | 显示全部楼层
内部空间修改会造成芯片死机了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

41

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部