我接着又查看了 Keil 生成的 map 文件,如下:
===============================================================
Memory Map of the image
......
Execution Region RW_IRAM2 (Base: 0x10000000, Size: <b>0x00009288</b>, Max: 0x00010000, ABSOLUTE)
Base Addr Size Type Attr Idx E Section Name Object
0x10000000 0x00000004 Data RW 7285 .data heap_1.o
0x10000004 0x00000004 PAD
0x10000008 0x00009280 Zero RW 7284 .bss heap_1.o
Execution Region RW_IRAM1 (Base: 0x20000000, Size: <b>0x00015940</b>, Max: 0x00020000, ABSOLUTE, COMPRESSED[0x00000204])
......
===============================================================
Code (inc. data) RO Data RW Data ZI Data Debug
410088 35462 93200 1560 189920 0 Grand Totals
410088 35462 93200 520 189920 0 ELF Image Totals (compressed)
410088 35462 93200 520 0 0 ROM Totals
===============================================================
Total RO Size (Code + RO Data) 503288 ( 491.49kB)
Total RW Size (RW Data + ZI Data) 191480 ( 186.99kB)
Total ROM Size (Code + RO Data + RW Data) 503808 ( 492.00kB)
===============================================================
可以看出,RW_IRAM2 中使用了 0x00009288 字节,也就是那个数组的大小,37500字节。
而 RW_IRAM1 显示却只使用了 0x00015940 字节,换算过来才86 KB 左右,这就是为什么我的程序可以正常运行的缘故吗? |