OpenEdv-开源电子网

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

结构体内存分配 SRAM1 SRAM2 和 CCM

[复制链接]

9

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
97
金钱
97
注册时间
2015-11-18
在线时间
11 小时
发表于 2015-12-3 09:36:23 | 显示全部楼层 |阅读模式
5金钱
STM32F407开发板里STM32F407有三个内存块   SRAM1  SRAM2   和 CCM

有些结构体或者数组我不想让系统自动分配,如何设置才能让结构体放在SRAM2 或者CCM呢?

求大神指点 啊     我要跪拜啊

最佳答案

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

可以参考原子的内存分配源码malloc.c和malloc.h。 3块内存的首地址如下,分别为内部、外部和CCM #define INT_MEM_ADDR     0x20000000 #define EXT_MEM_ADDR     0x68000000 #define CCM_MEM_ADDR     0x10000000
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

347

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
2078
金钱
2078
注册时间
2014-12-19
在线时间
710 小时
发表于 2015-12-3 09:36:24 | 显示全部楼层
可以参考原子的内存分配源码malloc.c和malloc.h。
3块内存的首地址如下,分别为内部、外部和CCM
#define INT_MEM_ADDR     0x20000000
#define EXT_MEM_ADDR     0x68000000
#define CCM_MEM_ADDR     0x10000000
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-12-3 09:58:19 | 显示全部楼层
数组名 __attribute__(at 你要设置的内存地址),如u8 buffer[10000]  __attribute__(at(0X10000000));  这一行就是将数组buffer定义到0X10000000地址
开往春天的手扶拖拉机
回复

使用道具 举报

9

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
97
金钱
97
注册时间
2015-11-18
在线时间
11 小时
 楼主| 发表于 2015-12-4 09:17:19 | 显示全部楼层
回复【2楼】zuozhongkai:
---------------------------------
这个方式可以数组什么的!谢谢版主。

敢问我如果想把一个结构体放在SRAM2 或者CCM呢?

有没有方法?
回复

使用道具 举报

3

主题

347

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
2078
金钱
2078
注册时间
2014-12-19
在线时间
710 小时
发表于 2015-12-4 09:47:26 | 显示全部楼层
回复【4楼】feifei130:
---------------------------------
struct ST{...};
struct ST st __attribute__(at(0X10000000)); //放在CCM
其实手动定义任何数据都一样的,给它一个首地址就行,注意变量所占空间不要重叠就行。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-25 17:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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