[STM32F4] 一个大数组是不是不能同时跨用内外部SRAM?

[复制链接]
1544|17
 楼主| shskaoanc 发表于 2022-8-31 19:36 | 显示全部楼层 |阅读模式
STM32F407用FSMC挂外部SRAM,RAM大小512K*16bit,正好1MB外部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使用,只能在内部或者在外部
caoenq 发表于 2022-9-1 09:00 | 显示全部楼层
diweo 发表于 2022-9-1 10:55 | 显示全部楼层
地址不连续,当然不能跨用啊。
heweibig 发表于 2022-9-1 21:49 | 显示全部楼层
跨用内外部SRAM?
phoenixwhite 发表于 2022-9-4 22:13 | 显示全部楼层
不能的。stm32不支持
febgxu 发表于 2022-9-7 17:46 | 显示全部楼层
这个外扩ram吗
jkl21 发表于 2022-9-7 19:12 | 显示全部楼层
没有用过这个方式扩展SRAM。
adolphcocker 发表于 2022-9-8 10:07 | 显示全部楼层
还不如换一个其他的芯片呢
deliahouse887 发表于 2022-9-11 14:17 | 显示全部楼层
可以使用,需要修改keil的配置
Bowclad 发表于 2022-9-11 21:01 | 显示全部楼层
地址不连续
houjiakai 发表于 2022-9-12 14:09 | 显示全部楼层
之前用51是可以的,不知道是否可以
LLGTR 发表于 2022-9-13 14:05 | 显示全部楼层
定义变量的时候,你肯定只能在一个RAM使用,就算是CPU也做不到内外RAM定义一个变量。
LLGTR 发表于 2022-9-13 14:07 | 显示全部楼层
办法一:拆分数组,类似单片机的高低字节。
方法二:使用虚拟地址,但是这个不能保证变量的内容稳定。
方法三:扩大RAM。
Bowclad 发表于 2022-9-13 19:48 | 显示全部楼层
不行地址不连续
Henryko 发表于 2022-9-13 20:59 | 显示全部楼层
地址不连续吧
SantaBunny 发表于 2023-2-22 22:06 | 显示全部楼层
将heap映射到外部SDRAM中,CSTACK在内部ram中。内部64K,外部你可以用512K的。
星辰大海不退缩 发表于 2023-2-23 16:51 | 显示全部楼层
不能吧,地址问题不连续
Wordsworth 发表于 2024-7-1 07:21 | 显示全部楼层

逐渐变细的孔(也称为邮票孔)变得越来越普遍
Clyde011 发表于 2024-7-1 08:24 | 显示全部楼层

可能还需要进行一些额外的测试
公羊子丹 发表于 2024-7-1 09:17 | 显示全部楼层

正激:脉冲变压器的原/副边相位关系
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

118

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部