OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8958|回复: 13

MDK还是分配不了地址呢,原主哥请教

[复制链接]

24

主题

106

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
280
金钱
280
注册时间
2012-3-21
在线时间
17 小时
发表于 2012-6-3 19:17:26 | 显示全部楼层 |阅读模式

想把要分配到扩展SRAM的变量集中定义在一文件中,然后让MDK自动分配这部分变量的地址到外部SRAM,而在需要用到这变量的地方再extern声明此变量,
如下设置:



对应打开定义变量文件的Options,设置如下



但发现这样设置后,变量还是被定义在内部RAM.原子哥是不是还有什么地方要设置啊?



 


 

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

21

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
238
金钱
238
注册时间
2011-4-12
在线时间
0 小时
发表于 2012-6-3 19:44:56 | 显示全部楼层
哥们。我也遇到这个问题,你可以搜下群里的SRAM,其中一篇是我发的,现在还没搞定呢。
自信人生一百年
回复 支持 反对

使用道具 举报

24

主题

106

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
280
金钱
280
注册时间
2012-3-21
在线时间
17 小时
 楼主| 发表于 2012-6-3 19:49:56 | 显示全部楼层
回复【2楼】liuliuzelin:
---------------------------------
呵呵,原来你也碰到,那你现在是手动分配吗,我没加群啊.能上传上来不.谢谢
回复 支持 反对

使用道具 举报

21

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
238
金钱
238
注册时间
2011-4-12
在线时间
0 小时
发表于 2012-6-3 19:56:12 | 显示全部楼层
http://www.openedv.com/posts/list/5620.htm
你看看。。
自信人生一百年
回复 支持 反对

使用道具 举报

24

主题

106

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
280
金钱
280
注册时间
2012-3-21
在线时间
17 小时
 楼主| 发表于 2012-6-4 17:12:35 | 显示全部楼层
蜜蜂兄弟,可以实现了。按上述步骤设置后,再如下设置:options for target 'xxx'--->linker中的use memory layout from target dialog勾上就可以了 。。以下就是MDK自动分配的地址


回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-6-4 17:32:45 | 显示全部楼层
终于钻研出来了? 写篇文档出来,指导指导我们啊,呵呵.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

24

主题

106

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
280
金钱
280
注册时间
2012-3-21
在线时间
17 小时
 楼主| 发表于 2012-6-4 17:52:18 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
呵呵,这原子哥,现在才出声。我那敢指导呢,有不对的地方还要请大神们狠狠地拍砖呢
这东西好像还可以直接修改分散加载文件管理内存分配的。现在MDK这样设置就自动生成这文件了
回复 支持 反对

使用道具 举报

3

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2012-5-27
在线时间
0 小时
发表于 2012-6-4 20:45:53 | 显示全部楼层
我之前都用分散加载方式,可只定程序.
可惜 ID 被那只our dev狗封了,找不到之前的帖子
印象中红牛V3有范例,因为他使用2颗SRAM
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-6-4 21:19:27 | 显示全部楼层
我都是用malloc分配
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

24

主题

106

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
280
金钱
280
注册时间
2012-3-21
在线时间
17 小时
 楼主| 发表于 2012-6-4 22:48:59 | 显示全部楼层
回复【8楼】mio:
---------------------------------
分散加载方式,可只定程序??!!
详细指导下啦,分散加载,怎么用
回复 支持 反对

使用道具 举报

11

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2012-6-1
在线时间
3 小时
发表于 2012-6-4 23:00:47 | 显示全部楼层
搜到的舊文章,自己研究看看吧
在MDK下用SECTION把單個函數定位到SRAM運行的具體操作方法是如下:

MDK默認設置下會自動生成後綴為sct分散加載文件,裡面會有類似這麼一段

  RW_IRAM1 0x40000000 0x00004000  {  ; RW data
   .ANY (+RW +ZI)
  }

改成

  RW_IRAM1 0x40000000 0x00004000  {  ; RW data
   *.o (RAM_FUN)
   .ANY (+RW +ZI)
  }

然後在需要在SRAM運行的函數的聲明後面加__attribute__((section("RAM_FUN"))),如

void RunInRam(void) __attribute__((section("RAM_FUN")))
{
}

還要記得把LINKER選項中的Use Memory Layout from Target Dialog的鉤取消,
選擇自己修改後的sct文件,也就是說以後LINKER選項要自己修改了,所以對LINKER沒瞭解的話建議不要用這方法。

其他寫法:
void delay(unsigned int n)
  __attribute__((section("RAM_FUN"))) ;   
 void delay(unsigned int n)
 {
   unsigned int i,k;
 
   for (i = 0; i < n; i++)
 {
  for (k = 0; k < 0x10000; k++)
{
;
  }
 }
回复 支持 反对

使用道具 举报

7

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
121
金钱
121
注册时间
2013-11-9
在线时间
13 小时
发表于 2014-4-26 10:45:45 | 显示全部楼层
回复【11楼】sky3344:
---------------------------------
我今天用了分散加载的方式定位函数,定位是成功啦,如我将函数定位到0x080030000后,看到0x080030000后的代码不是标准的0x08xxxxxxx的格式,不知是怎么会事。。。求教啊
回复 支持 反对

使用道具 举报

44

主题

186

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1260
金钱
1260
注册时间
2012-9-1
在线时间
67 小时
发表于 2014-4-26 21:36:31 | 显示全部楼层
标记一下。以后可能需要
回复 支持 反对

使用道具 举报

6

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2014-4-3
在线时间
2 小时
发表于 2014-9-24 17:05:01 | 显示全部楼层
标记一下。谢谢楼主达人!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-1 00:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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