stm32F4上CCM的使用

2021-09-23 14:15:21 字數 1446 閱讀 3925

1.ccm記憶體介紹:

相較於f2,f4新加的乙個特殊內部sram。64 kb ccm (核心耦合儲存器)資料 ram  不屬於匯流排矩陣(請參見圖 1 : stm32f405xx/07xx和 stm32f415xx/17xx  器件的系統架構)。只能通過 cpu  對其進行訪問(dma等外設不能訪問)。

2.用法(基於mdk):

①  先啟用這部分sram。

設定完後,若重新編譯,map檔案裡就會有這塊sram的資源分配——由於iram1優先使用,而且一般sram1夠用,就不會給它分配資源。

② 使用ccm一般都要手動分配資源(確保這塊記憶體不被外設使用),自行分配記憶體需要這樣操作:

參考下圖,不勾選use memory layout from targe dialog,這時mdk會自動載入乙個分散載入檔案(.sct),修改這個檔案就可以手動選擇要放到ccm中的資料了。

③ 檢視.map檔案,將需要的檔案架到(.sct)檔案中。

例如,上圖中把mem.o和memp.o中的資料放到ccm中,可以這麼設定:

編譯後,可以看到資源分配:

④如果想把程式中的某些變數放到ccm中,需要定義乙個section,將這些變數放到這個section中,再由(.sct)檔案分配到ccm中。

編譯後的記憶體分配:

備註:1.測試過程中,嘗試直接指定變數的記憶體到ccm的方法,但是定義多個變數時,編譯報錯。。。

2.據說把系統堆疊放到ccm中,可以提高處理效率,暫時沒法測試。

3.將ccm用作高速運算緩衝,也就這種高大上的應用上才能發揮他真正存在的價值吧。

4.感謝網友大神的帖子:

CCM 極致發揮STM32F4效能的利器

ccm core coupled memory 是給f4核心專用的全速64kb ram,它們沒有經過匯流排矩陣,f4核心與之直接相連,位址空間在0x1000 0000 0x1000 ffff.由於其位址空間和常規的sram不連續,加之dma和外設也無法直接使用它們,就使得一般的使用者程式完全視而不見...

CCM 極致發揮STM32F4效能的利器

ccm core coupled memory 是給f4核心專用的全速64kb ram,它們沒有經過匯流排矩陣,f4核心與之直接相連,位址空間在0x1000 0000 0x1000 ffff.由於其位址空間和常規的sram不連續,加之dma和外設也無法直接使用它們,就使得一般的使用者程式完全視而不見...

lwip在stm32f4上的移植

簡要記錄lwip在stm32f4上的移植步驟 最簡單的lwip移植主要是底層資料收發硬體介面的實現以及配置,在此處主要是ethernetif.c ethernetif.h以及配置檔案lwipopt.h的修改 1.main函式 struct netif gnetif static void syste...