OpenEdv-开源电子网

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

MDK如何直接链接数组在SDRAM空间(0xD0000000)

[复制链接]

3

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2012-11-29
在线时间
3 小时
发表于 2014-12-2 17:52:02 | 显示全部楼层 |阅读模式
5金钱
最近在使用STM32F429IGT6芯片做项目,跑ucos操作系统,想把任务栈放在SDRAM空间,那我定义一个任务栈数组,怎么让编译器直接使用SDRAM空间呢?
#define SDRAM_BANK2_ADD (0xD0000000)

//任务堆栈
#if 1  // 用这个编译不行
static  OS_STK TaskStartStk[OS_MINI_STACK_SIZE];
static  OS_STK TaskLEDStk[OS_MINI_STACK_SIZE];
static  OS_STK TaskSdramTestStk[1024*1024];
#else
OS_STK *TaskStartStk = (OS_STK *)SDRAM_BANK2_ADD; // 要这样直接使用SDRAM的地址
OS_STK *TaskLEDStk = (OS_STK *)SDRAM_BANK2_ADD + OS_MINI_STACK_SIZE;
OS_STK *TaskSdramTestStk = (OS_STK *)SDRAM_BANK2_ADD + OS_MINI_STACK_SIZE + OS_MINI_STACK_SIZE;
#endif

如果我定义的数组能直接编译链接就在0xD0000000不就没那么麻烦要记住SDRAM空间用到多少了

感谢!

最佳答案

查看完整内容[请看2#楼]

__align(32) u8 mem2base[MEM2_MAX_SIZE] __attribute__((at(0X68000000))); //外部SRAM内存池 用这种方式。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-12-2 17:52:03 | 显示全部楼层
__align(32) u8 mem2base[MEM2_MAX_SIZE] __attribute__((at(0X68000000))); //外部SRAM内存池
用这种方式。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2012-11-29
在线时间
3 小时
 楼主| 发表于 2014-12-2 22:51:57 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
en,这样啊,我来试试
但这样还是要自己一个个确定每个数组大小
回复

使用道具 举报

28

主题

1489

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1656
金钱
1656
注册时间
2013-7-24
在线时间
1 小时
发表于 2014-12-3 19:45:08 | 显示全部楼层
用分散加载表,只是通常使用自动配置。
于20150522停用该账号:http://www.microstar.club
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2018-8-2
在线时间
5 小时
发表于 2018-8-13 14:40:12 | 显示全部楼层
怎么样能随心所欲的应用外部RAM呢?
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2018-9-11
在线时间
5 小时
发表于 2018-9-11 16:27:42 | 显示全部楼层
使用GNU/GCC , arm-none-eabi-gcc 不识别__attribute__((at(0X68000000)));       

请问需要怎么搞, 把大数组放在SDRAM中?  谢谢
回复

使用道具 举报

8

主题

185

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2019-7-15
在线时间
47 小时
发表于 2019-8-19 16:50:37 | 显示全部楼层
正点原子 发表于 2014-12-2 17:52
__align(32) u8 mem2base[MEM2_MAX_SIZE] __attribute__((at(0X68000000)));                                        //外部SRA ...

为什么是0X68000000???而不是0XC01F4000
回复

使用道具 举报

3

主题

28

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
207
金钱
207
注册时间
2017-9-6
在线时间
45 小时
发表于 2019-8-21 16:08:44 | 显示全部楼层
rockzhou 发表于 2018-9-11 16:27
使用GNU/GCC , arm-none-eabi-gcc 不识别__attribute__((at(0X68000000)));       

请问需要怎么搞, 把大数组 ...

在链接脚本定义一个加载地址在0X68000000的段,数组定义在段中,需要学习gcc的链接脚本语法
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-16 02:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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