MDK的绝对值定位问题

2020-01-02 19:38发布

 我们用的是MKD5.25,STM32F4我loader可用空间只分配了32k,本来还有余3k左右的空间,谁知道需要设置一个简单的加密,定义了一个绝对数值,空间就超了。。对比了下bin文件,足足大了3.5k空间,中间被插了一堆0
就多定义了下面一个绝对空间。。。。
const uint32_t Test_Addr __attribute__((at(STM32FLASH_EN_ID_START_ADDR)))=0xFFFFFFFF;

111.png (39.61 KB, 下载次数: 0) 下载附件 2019-8-25 13:41 上传

我在考虑咋解决这个问题。。。。有解决方案了发会发一下。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
lhj200304
1楼-- · 2020-01-02 22:09
你在末尾定义,不要定义在中间,这样本来是连续空间的,被隔开后就浪费了些
rogerllg
2楼-- · 2020-01-02 23:51
lhj200304 发表于 2019-8-25 14:06
你在末尾定义,不要定义在中间,这样本来是连续空间的,被隔开后就浪费了些 ...

不能定义在末尾,定义在末尾,反而会有问题~
我发现尽量靠近自己程序的空间末尾来定义,这样占的空间小很多~
rogerllg
3楼-- · 2020-01-03 00:09
lhj200304 发表于 2019-8-25 14:06
你在末尾定义,不要定义在中间,这样本来是连续空间的,被隔开后就浪费了些 ...

也就是说,如果你程序是29K,就在 29K后面几十字节后定义位置,占的空间大概几百字节,还可接受,如果放在32K前面几十个字节,占的空间就很大了~根本不行。。。
kebaojun305
4楼-- · 2020-01-03 01:32
 精彩回答 2  元偷偷看……
kebaojun305
5楼-- · 2020-01-03 05:49
当时我碰到这个问题也纳闷了
nanfang2000
6楼-- · 2020-01-03 09:03
末尾是data段变量的初始值吧。你这个定义要放到code段末尾而不是整个预留空间末尾,因为你这个定义会影响段大小。更好的办法是改ld文件,在那里定义到最末尾,然后程序里引用这个地址即可,这样地址固定也不影响各段的长度

一周热门 更多>