Usando CCM (Core Coupled Memory) en STM32F4xx

6

Los microcontroladores STM32F4xx tienen 128KB de SRAM + 64KB de CCM SRAM. CMM SRAM está cableado al bus de datos por lo que es imposible usarlo con DMA.

  • ¿Cuál es la razón para agregar SRAM adicionales como CCM?
  • ¿Aumenta el rendimiento y, en ese caso, por qué es así?
pregunta

2 respuestas

6
  

¿Cuál es la razón para agregar SRAM adicionales como CCM?

Los núcleos Cortex M3 y M4 tienen 3 buses separados: Instrucción, Datos y "Sistema". Una transacción en un bus no molestará a otros buses a menos que se acceda al mismo periférico.

Ya mencionaste DMA. El controlador DMA solo puede acceder a una RAM cuando no hay acceso simultáneo desde el núcleo M4, y es posible que el núcleo deba esperar a que finalice una transferencia DMA en curso. Por lo tanto, la RAM de CCM puede ayudar a aumentar el rendimiento y reducir la latencia.

No ese código puede ejecutarse también desde SRAM (pero no CCM SRAM). Luego saturas el AHB solo con obtener instrucciones de Thumb2 de 32 bits. En este caso, el CCM puede tomar algo de estrés del Bus; de lo contrario, la captura previa tendría que esperar a las transferencias de datos.

    
respondido por el Turbo J
3

Permítame indicarle la aplicación AN4296 (para STM32F3). Habla de CCM en detalle. Hace la distinción entre Harvard y Configuraciones de Von Neumann .

El objetivo del CCM es exactamente para ejecutar el código a la velocidad máxima. Puede tratarse de interruptores, pero también de funciones comunes.

Hay una matriz de bus . Tanto el CCM como la SRAM ordinaria tienen conexiones a los buses de datos e instrucciones. El CCM no tiene conexión con DMA porque está destinado a código, que DMA nunca debe manejar. También cuenta con protección de escritura por página.

La idea es que el núcleo puede obtener código de CCM al mismo tiempo que obtiene datos de la otra SRAM. Se utilizan diferentes "buses" en paralelo, lo que le proporciona el mejor rendimiento. Si recuperas código y datos de la misma memoria (cualquiera de los dos), será más lento debido a la contención.

Algunos STM32 tienen una cosa llamada Acelerador Adaptable en Tiempo Real (ART) . Eso es un caché en la parte superior de flash para que pueda ejecutar "desde la memoria Flash, con estados de espera 0".

Incluso el STM32 (F7) más reciente tiene caché de L1 real por encima de eso .

    
respondido por el Christoph Rackwitz

Lea otras preguntas en las etiquetas