单片机学习小组
直播中

吴湛

9年用户 905经验值
擅长:可编程逻辑
私信 关注

关于M4的数组问题求解答

我定义了一个64K字节的数组,如果把数组定义成Const常量,编辑之后运行都正常。
但如果把数组定义成变量数组,可以编译(占的空间比较大:Program Size: Code=8776 RO-data=432 RW-data=2112 ZI-data=1024  )、烧录,但运行不了,用仿真单步执行发现以下错误:
* AGDI-Warning: failed to read memory at 0x20010C04, size 4

我实际需要用到变量的64K字节的数组,这个有没有办法解决?
从KEIL看到IC是如下信息:
Part number: M453VG6AE
CPU Core:
  ARM 32-bit Cortex-M4
Memories:
- SRAM: 32K
- App Flash: 256K
- ISP Flash: 4K
- Data Flash: 0~256K


回帖(1)

张亮

2023-10-23 10:00:50
根据M4的内存限制,SRAM只有32K的容量,而你定义的数组大小为64K字节,无法完全存储于SRAM中。如果将数组定义为Const常量,则会存储在Flash中,因此可以正常运行。但如果将其定义为变量数组,则需要存储在SRAM中,由于SRAM空间不足,因此无法正常运行。解决这个问题的方式是考虑使用外部存储器,例如外部RAM。将数组存储在外部RAM中,这样就能规避内存限制的问题。需要注意的是,使用外部存储器会增加系统的成本和复杂度。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分