关于stm32指定变量在SRAM的地址问题

2019-07-25 11:53发布

      之前在别的帖子上看到,stm32指定变量在SRAM的地址方法是:u8 sram[200] __attribute__((at(0x20002000)));      我是这样子定义的 uint16_t  flg_bit_all  __attribute__((at(0x20000000))); 编译出错, Error: L6971E: system_stm32f10x.o(.data) type RW incompatible with main.o(.ARM.__AT_0x20000004) type ZI in er RW_IRAM1.
      但如果我这样子定义 uint16_t  flg_bit_all  __attribute__((at(0x20000040))); 就能编译通过。

      又试着将地址改成较小值(比如:0x20000004,0x20000012,0x20000020,0x20000030,0x20000036)都不行,而将地址改成较大值(大于0x20000040)则能通过。
      再看看我程序占用内存大小(60byte),发现跟这个“临界地址”(0x20000040)有关。
      从这个现象来看,MDK编译时并不会优先给__attribute__((at(addr))) 分配地址,而是分配好了其他变量后再对__attribute__((at(addr)))进行检查。
      不知道是不是这样子,望大神赐教,谢谢!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
正点原子
1楼-- · 2019-07-25 13:13
是的,要避开程序占用这部分
米珠薪桂123
2楼-- · 2019-07-25 18:04
另外,我发现个问题,我们的帖子搜索功能做得还不够好。比如,输入“指定SRAM的地址”,能搜到一个帖子;而输入“指定SRAM地址”却搜不到帖子,只相差一个字啊。本人觉得亟需完善“模糊搜索”功能,不然很难找到想要的帖子。
正点原子
3楼-- · 2019-07-25 21:44
米珠薪桂123 发表于 2017-11-9 21:18
另外,我发现个问题,我们的帖子搜索功能做得还不够好。比如,输入“指定SRAM的地址”,能搜到一个帖子;而 ...

搜索,多个关键字之间,要加空格。
而不是多个关键字混一起。
米珠薪桂123
4楼-- · 2019-07-26 00:10
 精彩回答 2  元偷偷看……

一周热门 更多>