2017-11-06 10:37 PM
Hi,
I'm using STM32F769NI based self-designed board and running my application in external SDRAM which is copied from pre-programmed external NAND flash: To make it possible I swapped FMC bank of SDRAM. The default address range of the SDRAM starts from 0xC0000000 but in my application it starts from 0x60000000. Also with some more configurations, the application stores all the code-including ro, text, rw, stack and heap- in SDRAM. The compiler is IAR EWARM.
The problem is the speed of running a application is too slow compared to run the same code from internal FLASH.
The speed is measured using SYSTICK and the time taken to run the application is more than 6 times longer if it was executed in external SDRAM.
I tried to run only the code(not the whole program) in the internal Flash but the size of binary file exceeds 1GB and that's not acceptable in my case at all. I assume the structure of the binary file caused the size to big since the whole address range from 0x08000000(internal Flash) to 0x6xxxxxxx(external SDRAM) is stored in binary file.
Is there any solution for this situation?
##external-sdram ##stm322017-11-07 01:26 AM
The 6x number doesn't surprise me, the F4 SDRAM executed at such speeds.
Make sure the caching modes/options are correctly configured.
2017-11-07 01:36 AM
Hi, Clive.
I've enabled cache in SDRAM using MPU configuration. (Also it was one of the reason why I had to swap the FMC bank.)
Thanks for your advice about multiregion object file.
2017-11-07 02:31 AM
Keil's FromELF tool will split a multiregion object file into multiple .BIN files.