完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
外部SRAM已经测试可用(循环全写后读出来做数据比对),然后在MDK中启用外部ram的设置,并且申请一个1024*1024字节的大数组,编译后在map文件中已经能够看到
Total RW Size (RW Data + ZI Data) 1049720 (1025.12kB) 说明数组确实已经编进去了 而且MDK自动给分配了RAM i 0x20000000 Data 4 main.o(.data) pSRAM 0x20000004 Data 4 main.o(.data) Data 0x20000008 Data 1 main.o(.data) uwtick 0x20000014 Data 4 STM32f4xx_hal.o(.data) uwTickPrio 0x20000018 Data 4 stm32f4xx_hal.o(.data) uwTickFreq 0x2000001c Data 1 stm32f4xx_hal.o(.data) SystemCoreClock 0x20000020 Data 4 system_stm32f4xx.o(.data) hsram1 0x20000024 Data 80 fsmc.o(.bss) __initial_sp 0x20000478 Data 0 startup_stm32f407xx.o(STACK) BigData 0x68000000 Data 1048576 main.o(.bss) BIgData就是那个大数组,大小1024*1024字节 那么问题来了,只要BigData的大小超过外部SRAM大小,哪怕超1字节,编译器就会报错说内存不够了 这是不是就说明单一一个变量不能跨内外部RAM使用,只能在内部或者在外部 |
|
相关推荐
2个回答
|
|
编译器根据数组申请的个数分配存储器,不管数组放在哪里或者哪怕SRAM还有富余空间,只要数组个数超过申请的个数,编译器都报错,个人认为这跟跨区无关
|
|
|
|
根据您描述的情况,如果已经在map文件中看到了大数组的分配,说明大数组已经成功编译并分配到了内存中。至于大数组是否能同时跨用内部和外部SRAM,取决于编译器和目标硬件的支持情况。
在使用外部SRAM的情况下,需要在MDK中正确配置外部RAM的地址范围,并确保大数组的分配地址在该范围内。如果您在map文件中看到了大数组被分配到内存中的正确地址范围(0x200...),那么在理论上应该是可以同时使用内外部SRAM的。 但需要注意的是,在使用大数组时,需要根据具体的硬件和编译器的要求,合理地管理内存的使用。特别是在处理大量数据时,需要确保内部和外部SRAM的访问速度和带宽满足程序的要求,以避免可能的性能问题。 此外,还需要注意确保大数组的正确初始化和使用,以及正确处理大数组的边界条件和内存溢出问题,以避免不可预测的程序行为和系统崩溃等问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1547 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1493 浏览 1 评论
915 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
655 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1544 浏览 2 评论
1845浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
598浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
499浏览 3评论
501浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
483浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-6 02:29 , Processed in 0.665306 second(s), Total 80, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号