stm32f407zgt6芯片手冊中ram為196KB=128KB IRAM1 +64KB IRAM2 +4KB BACKED RAM1.但一般sct文件都是用的128KB IRAM1,那IRAM2什么時候用,怎么用?
CCM(Core Coupled Memory)是給F4內核專用的全速64KB RAM, 它們沒有經過總線矩陣, F4內核與之直接相連, 地址空間在0x1000_0000 ~ 0x1000_FFFF.由於其地址空間和常規的SRAM不連續, DMA和外設也無法直接使用它們.
如文章中所說,IRAM2一般作為高速運算緩沖BUF(網絡,存儲,顯示,FOC模型解耦, 網絡SSL, JPEG編碼/解碼),或堆棧可以作為特權資源進行管理, 安全和性能得到同步提升.提高效率,在IRAM1不夠用的情況下也可以開啟,可以通過MAP文件將指定模塊的目標文件或靜態數組BUF放在IRAM2中。
1. 作堆棧時如何使用.
修改鏈接腳本, 找到 CCMRAM_region, block CSTACK 和 block HEAP 關鍵詞.
把原先 place in RAM_region {...} 的命令改為如下2句:
place in RAM_region { readwrite };
place in CCMRAM_region { block CSTACK, block HEAP };
2.如何優先使用64KCCRAM:
Keil的設置選項,將IRAM1/IRAM2打勾,將IRAM1改為0x10000000,這樣,編譯器就會優先分配CCM內存;在SCT中修改同樣。