Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
STM32_CCM_特殊内存
STM32F407 CCM的开法
发布于 2012-09-13 10:53:22 浏览:10819
订阅该版
STM32F407包含了64kBytes的CCM内存,所以当内存紧张时可以使用它。 如果需要使用这块CCM,使用GNU GCC时,可以这样打开: ```c MEMORY { CODE (rx) : ORIGIN = 0x08000000, LENGTH = 1M /* 1M flash */ DATA (rw) : ORIGIN = 0x10000000, LENGTH = 64k /* 64K sram */ } ``` 使用Keil MDK时,可以这样打开: [attach]0[/attach] 这样编译后,程序的RW、ZI都会放到CCM去,然后在RT-Thread中可以把完整的SRAM的都作为Heap来使用: ```c #define STM32_SRAM_SIZE 128 #define STM32_SRAM_BEGIN 0x20000000 #define STM32_SRAM_END (STM32_SRAM_BEGIN + STM32_SRAM_SIZE * 1024) /* rtthread_startup函数中的Heap初始化 */ rt_system_heap_init((void*)STM32_SRAM_BEGIN, (void*)STM32_SRAM_END); ```
![stm32f4_ccm.jpg](https://oss-club.rt-thread.org/uploads/53_2c430efc84fb04848945482b1fcc037b.jpg)
![MAP.png](https://oss-club.rt-thread.org/uploads/6777_5e960ddff9fd73e5ce41ce3083f45796.png)
查看更多
11
个回答
默认排序
按发布时间排序
bernard
2012-09-13
这家伙很懒,什么也没写!
这个时候还有个问题: 1. CCM是DMA不能访问的,所以需要自行处理; 2. EXT SRAM如何使用: a) RT_USING_MEMHEAP使能 b) 把EXT SRAM初始化成另外一个Heap ```c static struct rt_memheap memheap; rt_memheap_init(&memheap, "ext", (void*)STM32_EXT_SRAM_BEGIN, STM32_EXT_SRAM_END - STM32_EXT_SRAM_BEGIN); ``` 另外,目前STM32_EXT_SRAM_END定义有些问题,只定义了512kB,而实际是1MB(或者我的代码太老了,自己check下吧)
aozima
2012-09-13
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
还是在链接脚本中把定义把 section CCM放在CCM区比较好。 然后代码中有需要时,把数据加个属性放在CCM区。 同时所有带DMA的驱动要加判断。
haitao52198
2012-09-13
这家伙很懒,什么也没写!
这里开始支持多段内存管理了吗?我刚看了我这里1.0.0版本里还没有这个函数的实现,需要更新到最新版? 那申请内存的时候,我需要自己根据返回的地址判断在哪个区呢 还是可以指定申请的内存跟哪个区申请呢?
bernard
2012-09-13
这家伙很懒,什么也没写!
多段内存是在1.1.x中引入的。这个多段内存并不与原来的系统堆混合在一起(当然混合在一起也是可以的),因为多段内存往往并不是那种内存特性完全一样,所以也没把他们混合在一起。关于如何使用额外的内存空间可以看看memheap.c文件。
grissiom
2012-09-14
这家伙很懒,什么也没写!
今天刚参加完北京 ST 的研讨会。会上也提到 CCM 了。说 CCM 是和 IBus 相连的,如果代码放在这里,因为不需要等待 Flash 读取,所以指令的执行效率会有很大提升,可以从 63DMIPS 提升到 94DMIPS(貌似是F3的数据)…… 所以我觉得一些内核的频繁执行的代码,比如说上下文切换,调度器,定时器等等可以放到这个区域里面来。可以提升整个系统的效率。 甚至如果可以 profile,可以把一些 hotspot 放到这里来,也应该会提升系统的速度。 会后我问了下,如果把数据放这里可能会比放在 SRAM 里慢…… 不过要是想把代码放进来的话可能链接脚本和启动代码都要做一些修改。而且个人感觉不能有位置无关代码……
bernard
2012-09-14
这家伙很懒,什么也没写!
这块还真没认真的看,这块是用于放代码的?如果是这样,那么简单了,把Application Module扔进来跑,这样效率也高了,先在ART上试试。
grissiom
2012-09-14
这家伙很懒,什么也没写!
嗯,对,把 module 扔进来可能是最简单的用法~
grissiom
2012-09-15
这家伙很懒,什么也没写!
又看了下f4的手册,发现它的ccm是连在dbus上的… 竟然跟f3的不一样… 嗯,那还是放数据好了…
bernard
2012-09-15
这家伙很懒,什么也没写!
仅F3是这样?那可真奇怪。
pyh0603
2016-08-05
这家伙很懒,什么也没写!
熊总,我将IRAM2勾选之后,程序跑了五秒后全部线程都停掉了啊,不知道怎么回事?下面是MAP图 如果我将这个 `#define STM32_SRAM_BEGIN (&Image$$RW_IRAM1$$ZI$$Limit) ` 改为: `#define STM32_SRAM_BEGIN 0x20000000`, 程序会一直停在地址0x23232323上,不明白了。。。。
撰写答案
登录
注册新账号
关注者
0
被浏览
10.8k
关于作者
bernard
这家伙很懒,什么也没写!
提问
414
回答
5940
被采纳
76
关注TA
发私信
相关问题
1
如何使用STM32F407的CCM呢? 求助
2
rt_system_heap_init函数加入多块物理内存是否有计划解决
3
STM32F4在RT-Thread Studio中使用CCM SRAM
4
link.lds修改使满足CCM RAM,但数据出错
5
stm32H743 rt thread BSP 修改链接文件后启动不了
6
STM32427ZGT6BSP
7
F407VG的RAM共有192k,RTT初始化了128K,剩下的64K怎么添加?
8
#define STM32_SRAM_SIZE (192-64),(192-64)是什么意思?
9
请教一下rtt在stm32f407移植中的64KCCM问题
10
stm32f429的ccm内存使用
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
开源共生 商业共赢 | RT-Thread 2024开发者大会议程正式发布!
2
【24嵌入式设计大赛】基于RT-Thread星火一号的智慧家居系统
3
RT-Thread EtherKit开源以太网硬件正式发布
4
如何在master上的BSP中添加配置yml文件
5
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
MicroPython
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
19
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
6
个答案
2
次被采纳
用户名由3_15位
13
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
RTT_逍遥
1
篇文章
5
次点赞
大龄码农
1
篇文章
5
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部