AnsweredAssumed Answered

[LPC1853] How boot from ext. memory (SPIFI and SRAM)

Question asked by Mariusz Wlodarczyk on Aug 30, 2016
Latest reply on Aug 30, 2016 by Bernhard Fink

Hi,

I have problem, which I'm trying to solve.

 

Background:

+ I use Keil uVision with ARM-GCC;
+ I use SPIFI lib to get data from ext. flash (QSPI);
+ I have HW setup :

+ Ext. Flash - icons, sounds, texts; Ext. RAM - frame buffers for TFT;

 

Problem:

+ I have internal flash and ram in my uC, but internal flash (only for code) run out. 

+ I know that LPC18xx has boot ROM feature, but in my scenerio I can't use it. Guy from NXP told me that, code execution from ext flash (via qspi) is to slow to our application. It means, that I should execute my code from external RAM. This code has to come from external flash (via QSPI).

 

My proposal:

+ I need a support for doing this scenario:

      1) program code and data for GUI (icons, sounds) in ext. flash memory + small piece of code to internal flash;
      2) at startup of uC - init QSPI and EMC controller and copy all code from ext. flash to ext. RAM;
      3) start executing from ext. RAM (with some critical things in internal RAM);

+ We should remember that all the time : 

                           Ext. Flash is for icons, sounds, texts;

                           Ext. RAM is for frame buffers for TFT;

 

My questions:

+ How do it properly? 

    I think that I should manually setup linker to do this kinds of things:
      * reserve memory area to execution code in ext. RAM (it is visible in our memory region at 0x2000 0000 address) -          only reserve, because at startup there is no code inside;
      * setup linker to write initial code ("small piece of code") to internal flash (e.g. to bank A);

      * This initial code should init flash an RAM controllers, and copy code from ext. flash to ext. RAM;

      * Start execution from ext. RAM;
+ Do you have any other idea, about what I should do to get my My proposal?

Outcomes