硬汉嵌入式论坛

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

[Atollic TrueSTUDIO] __attribute__((section("name")))怎么修改啊

[复制链接]

29

主题

77

回帖

164

积分

初级会员

积分
164
发表于 2018-8-7 13:37:30 | 显示全部楼层 |阅读模式
将变量放在特殊的位置的定义,在Atollic TrueSTUDIO中定义如下,
ETH_DMADescTypeDef  DMARxDscrTab[ETH_RXBUFNB] __attribute__((section(".RxDecripSection")));/* Ethernet Rx MA Descriptor */
在MDK中这么定义
ETH_DMADescTypeDef  DMARxDscrTab[ETH_RXBUFNB] __attribute__((at(0x20010000)));/* Ethernet Rx MA Descriptor */

已经知道__attribute__((section("name")))的意思,但是实在没找到对应的地址怎么改,也就是.RxDecripSection应该对应一个具体的地址,但是我要想换个地址,应该怎么改?
这个定义实在官方以太网例子里,
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106882
QQ
发表于 2018-8-7 14:19:39 | 显示全部楼层
以MDK为例,是在分散加载文件里面定义的。
回复

使用道具 举报

29

主题

77

回帖

164

积分

初级会员

积分
164
 楼主| 发表于 2018-8-7 17:00:11 | 显示全部楼层
eric2013 发表于 2018-8-7 14:19
以MDK为例,是在分散加载文件里面定义的。

知道怎么改了,在链接脚本里需要设置,没设置根本没错误提示,就在RAM里随机分配了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106882
QQ
发表于 2018-8-7 17:10:12 | 显示全部楼层
hecudashi 发表于 2018-8-7 17:00
知道怎么改了,在链接脚本里需要设置,没设置根本没错误提示,就在RAM里随机分配了

这个脚本有个名字,叫分散加载。
回复

使用道具 举报

29

主题

77

回帖

164

积分

初级会员

积分
164
 楼主| 发表于 2018-8-7 17:17:33 | 显示全部楼层
eric2013 发表于 2018-8-7 17:10
这个脚本有个名字,叫分散加载。

MDK没注意过,不是直接修改数字就行了吗?
以太网MDA描述符跟发送接收缓冲区,内存分配必须在DTCM区吗?官方例程没有这么做啊
回复

使用道具 举报

3

主题

66

回帖

75

积分

初级会员

积分
75
发表于 2018-8-7 17:21:24 | 显示全部楼层
gcc不允许直接使用地址了
找到工程中的.ld文件,添加类似下面的代码
  1. MEMORY
  2. {
  3. RAM (xrw)      : ORIGIN = 0x20010000, LENGTH = 240K
  4. DMARAM (rw)    : ORIGIN = 0x2004C000, LENGTH = 16K     
  5. FLASH (rx)     : ORIGIN = 0x8000000,  LENGTH = 1024K
  6. }

  7. SECTIONS
  8. {
  9.   /* DMA RAM SECTION */
  10.   .dmasec :
  11.   {
  12.     . = ALIGN(4);
  13.     *(.dmarss)
  14.     . = ALIGN(4);
  15.   } >DMARAM AT> FLASH
  16. }
复制代码

然后就可以使用 __attribute__((section(".dmarss"))); 了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106882
QQ
发表于 2018-8-7 17:22:07 | 显示全部楼层
hecudashi 发表于 2018-8-7 17:17
MDK没注意过,不是直接修改数字就行了吗?
以太网MDA描述符跟发送接收缓冲区,内存分配必须在DTCM区吗? ...

可以的啊,这种定义方式仅仅是方便定义变量。

回复

使用道具 举报

29

主题

77

回帖

164

积分

初级会员

积分
164
 楼主| 发表于 2018-8-7 17:35:52 | 显示全部楼层
kingdjh 发表于 2018-8-7 17:21
gcc不允许直接使用地址了
找到工程中的.ld文件,添加类似下面的代码

对,是这样
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-9 07:26 , Processed in 0.232270 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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