This is the mail archive of the ecos-discuss@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: redboot on STM32f4-discovery board


Hi,

I have got redboot working on my board (with no external ram).

When I set (CYGBLD_REDBOOT_LOAD_INTO_FLASH == 1) I get such response:

RAM: 0x20000000-0x2001f000 [0x200039c8-0x1fff3000 available]
0x10000000-0x10010000 [0x10000000-0x10010000 available]
FLASH: 0x08000000-0x0807ffff, 4 x 0x4000 blocks, 1 x 0x10000 blocks, 3 x 0x20000 blocks
RedBoot>

*Note* invalid RAM range ([0x200039c8-0x1fff3000 available]).


When I set (CYGBLD_REDBOOT_LOAD_INTO_FLASH == 0) I get:

RAM: 0x20000000-0x2001f000 [0x20003998-0x20013000 available]
0x10000000-0x10010000 [0x10000000-0x10010000 available]
FLASH: 0x08000000-0x0807ffff, 4 x 0x4000 blocks, 1 x 0x10000 blocks, 3 x 0x20000 blocks
RedBoot>

*RAM range is valid*
It looks like CYGBLD_REDBOOT_LOAD_INTO_FLASH functionality occupies 0x20013000â0x1fff3000=0x20000 (this is actually the size of a flash block (at the end on stm32f407, 128K)).

This is the Flash geometry I am using:
#define STM32_FLASH_SIZE (512*1024)
#define STM32_FLASH_BLOCK_INFO { { { 16*1024, 4 } , { 64*1024, 1 }, { 128*1024, 3} } }
#define STM32_FLASH_NUM_BLOCK_INFOS 3

It looks like a lot of RAM is used by CYGBLD_REDBOOT_LOAD_INTO_FLASH functionality. Or does it depend on flash block size it is mapped to?

Can I shift it to occupy a smaller block of flash (for example 4th from the end - 64K)?


BTW, what occupies the memory from 0x20013000 to 0x2001f000? I do not have CYGOPT_REDBOOT_FIS enabled. It is usually FIS that occupies the end of flash address map, but as I said it is disabled.


With best wishes,
Oleg






On Thu, 9 Oct 2014, Oleg Uzenkov wrote:

But, without Flash Image System I do not see how to use redboot to
load and store and run images.
Even for builds (CYGOPT_REDBOOT_FIS == 0) you can manage FLASH using
absolute FLASH addresses and FIS sub-commands: erase and write.

When you make RedBoot work smoothly on your target, then you can try to
load images directly to FLASH if you enable

   cdl_option CYGBLD_REDBOOT_LOAD_INTO_FLASH {
       user_value 1
   };

eCos is designed with XIP (eXecute In Place) in mind and you can use
RedBoot 'go' command to execute ROM image from specified place of FLASH.

For simple applications it would be enough just to shift *rom* ORIGIN
address and *rom_vectors* address in `target.ld' file and re-link ROM
application, then with the option above it is possible to load and run
such ROM image as

   load -m <protocol>
   go

I call that it worked on my target (load-into-flash-and-go). However,
you need to inspect and may be fix HAL startup files for such "FLASH"
builds.

Sergei



--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]