硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3238|回复: 5
收起左侧

[开发工具] 解决了下MDK,IAR和Embedde Studio上同时使用__attribute__属性的问题

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107058
QQ
发表于 2020-6-22 10:54:43 | 显示全部楼层 |阅读模式


解决办法就是不使用,发现这种专用属性在各个编译器上都略有不同,非常繁琐:

if defined ( __CC_ARM   )   MDK
  U32 HeapMem[1024 * 1024] __attribute__((at(0xD0100000))); //固定地址或者分散加载自定义Section

#elif defined ( __ICCARM__ )   IAR
  #pragma location=0xD0100000
  static __no_init U32 HeapMem[1024 * 1024];  //固定地址或者分散加载自定义Section              

#elif defined   (  __GNUC__  )  GCC
  U32 HeapMem[1024 * 1024] __attribute__((section(".HeapMemSection")));
#endif


这种定义方式就非常不方便,特别是制作三大平台GCC,MDK和IAR工程时。

现在直接改成用指针指向相应地址,不去涉及分散加载设置了,简单易用,准备用到ThreadX GUIX上。


回复

使用道具 举报

4

主题

140

回帖

152

积分

初级会员

积分
152
发表于 2020-6-22 13:56:41 | 显示全部楼层
改成指针怎么保证指向地址没有分配给其他段使用呢
回复

使用道具 举报

610

主题

3062

回帖

4912

积分

至尊会员

积分
4912
发表于 2020-6-22 14:40:56 | 显示全部楼层
zl1215 发表于 2020-6-22 13:56
改成指针怎么保证指向地址没有分配给其他段使用呢

你在 sdram 内存地址分配时 肯定是预先 预留好的区域吧或者使用 malloc 分配出来的也行
回复

使用道具 举报

610

主题

3062

回帖

4912

积分

至尊会员

积分
4912
发表于 2020-6-22 14:41:38 | 显示全部楼层
觉得还是指针好哇,方面简单易用
回复

使用道具 举报

4

主题

140

回帖

152

积分

初级会员

积分
152
发表于 2020-6-22 16:30:21 | 显示全部楼层
hpdell 发表于 2020-6-22 14:40
你在 sdram 内存地址分配时 肯定是预先 预留好的区域吧或者使用 malloc 分配出来的也行

那一样的呀,还是得要预留RAM,除非是SDRAM这种在link文件中不是默认分配的地址。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107058
QQ
 楼主| 发表于 2020-6-22 16:48:34 | 显示全部楼层
zl1215 发表于 2020-6-22 13:56
改成指针怎么保证指向地址没有分配给其他段使用呢

这里的使用主要是分三个区了,一个是显存区,一个缓冲区,还有个动态内存区,所以地址直接固定下来了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-16 09:08 , Processed in 0.214535 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表