Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
STM32_CCM_特殊内存
STM32F407 CCM的开法
发布于 2012-09-13 10:53:22 浏览:10311
订阅该版
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.3k
关于作者
bernard
这家伙很懒,什么也没写!
提问
414
回答
5914
被采纳
70
关注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
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
国产MCU移植系列教程汇总,欢迎查看!
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
【学习分享】libc切换 -- 从newlib切换到mlibc
2
FRDM-MCXN947开发板之i2c应用
3
esp32 s3使用cherryusb cdc
4
【Vision Board 创客营】Vision Board上的DAC实践
5
【Vision Board创客营连载体验】RA8D1 Vision Board 实现 FAL 同时调用片上以及外挂 Flash
热门标签
RT-Thread Studio
串口
LWIP
SPI
Env
Bootloader
AT
ART-Pi
Hardfault
CAN总线
FinSH
USB
文件系统
DMA
RT-Thread
SCons
线程
RT-Thread Nano
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
ota在线升级
WIZnet_W5500
I2C_IIC
UART
flash
cubemx
packages_软件包
freemodbus
PWM
潘多拉开发板_Pandora
定时器
ADC
BSP
中断
编译报错
socket
keil_MDK
GD32
MicroPython
msh
Debug
ulog
SFUD
flashDB
SDIO总线
rt_mq_消息队列_msg_queue
本月问答贡献
用户名由3_15位
18
个答案
3
次被采纳
xiaorui
7
个答案
3
次被采纳
sakumisu
4
个答案
3
次被采纳
踩姑娘的小蘑菇
15
个答案
2
次被采纳
三世执戟
32
个答案
1
次被采纳
本月文章贡献
比特饼干
3
篇文章
7
次点赞
Z_Y
2
篇文章
5
次点赞
xusiwei1236
2
篇文章
3
次点赞
yinxiangxv
2
篇文章
3
次点赞
Alipay
2
篇文章
3
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部