Verwenden von CCM (Core Coupled Memory) in STM32F4xx

7

STM32F4xx-Mikrocontroller verfügen über 128 KB SRAM + 64 KB CCM-SRAM. Der CMM-SRAM ist fest mit dem Datenbus verbunden, sodass er nicht mit DMA verwendet werden kann.

  • Was ist der Grund, zusätzlichen SRAM als CCM hinzuzufügen?
  • Steigert es die Leistung und wenn dies der Fall ist, warum ist es so?

quelle

Antworten:

6

Was ist der Grund, zusätzlichen SRAM als CCM hinzuzufügen?

Die Cortex M3- und M4-Kerne haben 3 separate Busse: Anweisung, Daten und "System". Eine Transaktion auf einem Bus stört andere Busse nur, wenn auf dasselbe Peripheriegerät zugegriffen wird.

Sie haben DMA bereits erwähnt. Der DMA-Controller kann nur dann auf einen RAM zugreifen, wenn kein gleichzeitiger Zugriff vom M4-Kern erfolgt - und der Kern muss möglicherweise warten, bis eine laufende DMA-Übertragung abgeschlossen ist. Der CCM-RAM kann also sowohl zur Leistungssteigerung als auch zur Verringerung der Latenz beitragen.

Nicht dass Code auch vom SRAM ausgeführt werden kann (aber nicht vom CCM-SRAM). Dann sättigen Sie den AHB nur mit dem Abrufen von 32-Bit-Thumb2-Anweisungen. Das CCM kann in diesem Fall etwas Stress vom Bus nehmen - das Prefetching müsste sonst auf Datenübertragungen warten.

Turbo J.
quelle
6

Lassen Sie mich auf AN4296 (für STM32F3) verweisen. Es geht ausführlich um CCM. Es unterscheidet zwischen Harvard- und Von Neumann- Konfigurationen.

Das CCM ist genau für die Ausführung von Code mit maximaler Geschwindigkeit vorgesehen. Das können Interrupt-Handler sein, aber auch gewöhnliche Funktionen.

Es gibt eine Busmatrix . Sowohl das CCM als auch das gewöhnliche SRAM haben Verbindungen zu Daten- und Anweisungsbussen. Das CCM hat keine Verbindung zu DMA, da es für Code vorgesehen ist, der niemals von DMA verarbeitet werden soll. Es bietet auch einen Schreibschutz pro Seite.

Es wird davon ausgegangen, dass der Kern Code aus CCM abrufen kann, während gleichzeitig Daten aus dem anderen SRAM abgerufen werden. Parallel dazu werden verschiedene "Busse" verwendet, um die beste Leistung zu erzielen. Wenn Sie Code und Daten aus demselben Speicher abrufen (entweder), ist dies aufgrund von Konflikten langsamer.

Einige STM32 haben einen so genannten Adaptive Real-Time (ART) Accelerator . Dies ist ein Cache über Flash, sodass Sie "aus dem Flash-Speicher mit 0-Wartezuständen" ausführen können.

Noch neuere STM32 (F7) haben darüber hinaus einen tatsächlichen L1-Cache .

Christoph Rackwitz
quelle
2
Willkommen bei EESE! Gute Antwort. Beachten Sie jedoch, dass diese Frage 5 Jahre alt ist. Möglicherweise haben Sie dies nicht bemerkt.
Edgar Brown