OpenEdv-开源电子网

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

大数组定义的问题

[复制链接]

69

主题

978

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3772
金钱
3772
注册时间
2015-4-26
在线时间
765 小时
发表于 2016-1-29 08:52:10 | 显示全部楼层 |阅读模式
1金钱
大数组定义为什么加上地址就可以,不加定义到什么地址就不可以?是什么导致的?从哪可以看

最佳答案

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

我定义的数组,编译器只会放到片上RAM,这样的话RAM就应该不够用了,加上地址属性后 这个数组就不占用片上RAM了,这样理解对吧
我有故事,你有酒吗
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

69

主题

978

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3772
金钱
3772
注册时间
2015-4-26
在线时间
765 小时
 楼主| 发表于 2016-1-29 08:52:11 | 显示全部楼层
我定义的数组,编译器只会放到片上RAM,这样的话RAM就应该不够用了,加上地址属性后 这个数组就不占用片上RAM了,这样理解对吧
我有故事,你有酒吗
回复

使用道具 举报

27

主题

711

帖子

0

精华

版主

Rank: 7Rank: 7Rank: 7

积分
12570
金钱
12570
注册时间
2015-11-5
在线时间
2150 小时
发表于 2016-1-29 09:14:33 | 显示全部楼层
就像LPC1768的内部SRAM分成2个32KB的区,同一个C文件的所有变量加起来不能超过32KB,自定义地址应该是除外的
回复

使用道具 举报

69

主题

978

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3772
金钱
3772
注册时间
2015-4-26
在线时间
765 小时
 楼主| 发表于 2016-1-29 09:22:58 | 显示全部楼层
FreeRTOS 发表于 2016-1-29 09:14
就像LPC1768的内部SRAM分成2个32KB的区,同一个C文件的所有变量加起来不能超过32KB,自定义地址应该是除外 ...

小白一个,还没达到举一反三的程度,就说stm32  说说看
我有故事,你有酒吗
回复

使用道具 举报

2

主题

391

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1957
金钱
1957
注册时间
2014-8-8
在线时间
307 小时
发表于 2016-1-29 09:37:00 | 显示全部楼层
你怎么定义的?应该不需要加固定地址。只需要价格const就直接定义到flash中了,否则应该是定义到ram去了。。。。
回复

使用道具 举报

69

主题

978

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3772
金钱
3772
注册时间
2015-4-26
在线时间
765 小时
 楼主| 发表于 2016-1-29 10:45:26 | 显示全部楼层
365mcu 发表于 2016-1-29 09:37
你怎么定义的?应该不需要加固定地址。只需要价格const就直接定义到flash中了,否则应该是定义到ram去了。 ...

我定义完了还要操作的,不能加const
我有故事,你有酒吗
回复

使用道具 举报

69

主题

978

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3772
金钱
3772
注册时间
2015-4-26
在线时间
765 小时
 楼主| 发表于 2016-1-29 10:47:27 | 显示全部楼层
__align(4)        u8 mem1base[MEM1_MAX_SIZE]__attribute__((at(0x68000000)))这样定义能编译成功,如果不加后边的属性就编译失败了
我有故事,你有酒吗
回复

使用道具 举报

27

主题

711

帖子

0

精华

版主

Rank: 7Rank: 7Rank: 7

积分
12570
金钱
12570
注册时间
2015-11-5
在线时间
2150 小时
发表于 2016-1-29 10:49:47 | 显示全部楼层
来俩不甜的 发表于 2016-1-29 09:22
小白一个,还没达到举一反三的程度,就说stm32  说说看

同一个C文件的变量,如无意外编译器会把他们放到一片连续的SRAM,而SRAM却不一定连续,例如单片机可以外扩一个ISIS的SRAM,这样就会导致RAM地址不连续,你写程序时就必须要注意了,具体外扩的SRAM的起始地址是多少这个得看单片机了,例如STM32F4是从0x68000000开始
拿来长岛冰茶换我半晚安睡
回复

使用道具 举报

69

主题

978

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3772
金钱
3772
注册时间
2015-4-26
在线时间
765 小时
 楼主| 发表于 2016-1-29 10:52:36 | 显示全部楼层
FreeRTOS 发表于 2016-1-29 10:49
同一个C文件的变量,如无意外编译器会把他们放到一片连续的SRAM,而SRAM却不一定连续,例如单片机可以外 ...

定义的全局变量是不是都放在RAM里边的
我有故事,你有酒吗
回复

使用道具 举报

2

主题

391

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1957
金钱
1957
注册时间
2014-8-8
在线时间
307 小时
发表于 2016-1-29 11:40:09 | 显示全部楼层
来俩不甜的 发表于 2016-1-29 10:55
我定义的数组,编译器只会放到片上RAM,这样的话RAM就应该不够用了,加上地址属性后 这个数组就不占用片上RA ...

对的,是这个意思。
回复

使用道具 举报

69

主题

978

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3772
金钱
3772
注册时间
2015-4-26
在线时间
765 小时
 楼主| 发表于 2016-1-29 11:44:37 | 显示全部楼层
365mcu 发表于 2016-1-29 11:40
对的,是这个意思。

非常感谢
我有故事,你有酒吗
回复

使用道具 举报

2

主题

391

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1957
金钱
1957
注册时间
2014-8-8
在线时间
307 小时
发表于 2016-1-29 11:58:35 | 显示全部楼层

最佳答案是你自己的!?累觉不爱。。。
回复

使用道具 举报

27

主题

711

帖子

0

精华

版主

Rank: 7Rank: 7Rank: 7

积分
12570
金钱
12570
注册时间
2015-11-5
在线时间
2150 小时
发表于 2016-1-29 13:58:27 | 显示全部楼层
365mcu 发表于 2016-1-29 11:58
最佳答案是你自己的!?累觉不爱。。。

哈哈兄弟别这么计较,你的这个回复其实也赚了1枚金币
拿来长岛冰茶换我半晚安睡
回复

使用道具 举报

69

主题

978

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3772
金钱
3772
注册时间
2015-4-26
在线时间
765 小时
 楼主| 发表于 2016-1-29 14:34:22 | 显示全部楼层
365mcu 发表于 2016-1-29 11:58
最佳答案是你自己的!?累觉不爱。。。

要不你复制一下,我设成你也行。以后我在找的时候也方便啊,如果设成 10楼,以后我再想看岂不是蛋疼了
我有故事,你有酒吗
回复

使用道具 举报

2

主题

391

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1957
金钱
1957
注册时间
2014-8-8
在线时间
307 小时
发表于 2016-1-29 14:54:27 | 显示全部楼层
来俩不甜的 发表于 2016-1-29 14:34
要不你复制一下,我设成你也行。以后我在找的时候也方便啊,如果设成 10楼,以后我再想看岂不是蛋疼了

不了吧,3楼说的比我有道理,其实别人可能遇到这个问题的话,知道结果当然最好,怎么获取的结果的过程也很重要。
回复

使用道具 举报

18

主题

422

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1139
金钱
1139
注册时间
2014-5-24
在线时间
116 小时
发表于 2016-1-29 23:13:49 | 显示全部楼层
规则是得有足够的空间,Keil支持外部SRAM,在工程配置中添加地址范围,将变量指定到该区域即可。
I See Fire.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.  只给方向,不妨碍思考
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 07:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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