完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
stm32 ccmram的使用(stm32f407)
stm32内存分析 stm32 ram使用,例如192k的stm32f407zg,实际看总线分布图,分成了3部分 112k sdram1 + 16k sdram2 + 64k ccm = 192k, 平时使用中,keil的默认设置只会用到128k,不会用到ccm,要用的话,设置工程的IRAM2即可,开了ccm会优先使用这个内存进行分配。 所以在设置heap和stack大小的时候要考虑RW的size不要超过128k,否则程序肯定hardfault。怎么看RW的size,用到keil工具的map,Program Size: Code=218950 RO-data=33350 RW-data=3480 ZI-data=125152, RW-DATA + ZI-DATA就是最后会加载到ram中的总大小。RW是已经初始化好的变量,ZI是未初始化的变量数据包括heap和stack也在其中。 如何使用ccmram 新建一个sct文件 ; ************************************************************* ; *** Scatter-Loading Description File generated by uVision *** ; ************************************************************* LR_IROM1 0x08020000 0x000D0000 { ; load region size_region ER_IROM1 0x08020000 0x000D0000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) .ANY (+XO) } RW_IRAM1 0x20000000 0x00030000 { ; RW data .ANY (+RW +ZI) } RW_IRAM2 0x10000000 0x00010000 { .ANY (ccmram) } } 配置工程,加载刚才sct 宏定义指定区域 #define CCMRAM __attribute__((section(“ccmram”))) 声明变量 /** This is the actual memory used by the pools (all pools in one big block)。 */ CCMRAM static u8_t memp_memory[MEM_ALIGNMENT - 1 #define LWIP_MEMPOOL(name,num,size,desc) + ( (num) * (MEMP_SIZE + MEMP_ALIGN_SIZE(size) ) ) #include “lwip/memp_std.h” ]; 编译后的map文件中 map中的内存分配已经可以看到了,分配到了ccmram这个区域。 相应的64K ram已经使用了,剩下原来占用的128k也会相应的释放到相同的size。 |
|
|
|
只有小组成员才能发言,加入小组>>
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
369 浏览 1 评论
250 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
219 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
590 浏览 2 评论
615 浏览 2 评论
1345浏览 9评论
0浏览 3评论
27浏览 3评论
STM32CUBEMX4.22.1在main函数里面添加一行语句就死机的原因?
28浏览 3评论
31浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-19 01:24 , Processed in 0.742357 second(s), Total 68, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号