Skip to main content
MHass.2
Associate II
Apr 28, 2021 10:03 PM UTC
Solved

How to use STM32F407 FSMC memory ?

Hi,

I'm working in a project that contains large data need to be processed by using stm32f407 Disc1. I facing issue with RAM overflow so, I need to use external ram by using FSMC.

what is the large size of external ram that I can use it? , Is this external ram is used as internal one? and when I define and declare an array, Is this array will be stored automatically into this ram ?

Thanks....

This topic has been closed for replies.
Tesla DeLorean
Tesla DeLoreanBest answer
Guru
Apr 28, 2021 10:38 PM UTC

Depending on the decode region figure 256MB or 64MB blocks. Static memories of that size are likely to be very expensive.

External RAM will be slower, often quite significantly, and there's no caching.

Going to use a lot of pins, figure your opportunities on the STM32F407G-DISC1 are pretty limited.

Some of the later model F4 support SDRAM, better cost/density and pin utilization.

Usage will be however you direct the compiler and linker.

You have to tell the Linker about the memory it can use, and the section naming (see Linker Scripts and Scatter Files)

You can use #pragma and __attribute__ type directives to use particular memory pools from the Compiler.

Your startup.s code needs to bring up the external memory, peripheral, pins, etc before you can use it.

Tips, Buy me a coffee, or three.. PayPal Venmo (See Profile) Up vote any posts that you find helpful, it shows what's working..

1 reply

Tesla DeLorean
Tesla DeLoreanBest answer
Guru
Apr 28, 2021 10:38 PM UTC

Depending on the decode region figure 256MB or 64MB blocks. Static memories of that size are likely to be very expensive.

External RAM will be slower, often quite significantly, and there's no caching.

Going to use a lot of pins, figure your opportunities on the STM32F407G-DISC1 are pretty limited.

Some of the later model F4 support SDRAM, better cost/density and pin utilization.

Usage will be however you direct the compiler and linker.

You have to tell the Linker about the memory it can use, and the section naming (see Linker Scripts and Scatter Files)

You can use #pragma and __attribute__ type directives to use particular memory pools from the Compiler.

Your startup.s code needs to bring up the external memory, peripheral, pins, etc before you can use it.

Tips, Buy me a coffee, or three.. PayPal Venmo (See Profile) Up vote any posts that you find helpful, it shows what's working..