Hi John,
I managed to get redboot running on the board (without external ram)
redboot has been built with (CYGOPT_REDBOOT_FIS == 0) and it is stable.
I even can do:
RedBoot> fconfig -i
Initialize non-volatile configuration - continue (y/n)? y
Run script at boot: false
Console baud rate: 115200
Update RedBoot non-volatile configuration - continue (y/n)? y
... Erase from 0x08040000-0x08040fff: .
... Program from 0x20012000-0x20013000 to 0x08040000: .
RedBoot>
There is something strange in what I have noticed:
Output with (CYGBLD_REDBOOT_LOAD_INTO_FLASH == 0):
RAM: 0x20000000-0x2001f000 [0x20003a58-0x20010000 available]
0x10000000-0x10010000 [0x10000000-0x10010000 available]
FLASH: 0x08000000-0x0807ffff, 4 x 0x4000 blocks, 1 x 0x10000 blocks, 3 x
0x20000 blocks
RedBoot>
(RedBoot is using 0x3a58 bytes of internal RAM.)
Output with (CYGBLD_REDBOOT_LOAD_INTO_FLASH == 1) (nothing else was
modified):
RAM: 0x20000000-0x2001f000 [0x20003a88-0x1fff0000 available]
0x10000000-0x10010000 [0x10000000-0x10010000 available]
FLASH: 0x08000000-0x0807ffff, 4 x 0x4000 blocks, 1 x 0x10000 blocks, 3 x
0x20000 blocks
RedBoot>
Notice [0x20003a88-0x1fff0000 available]: range is invalid. Any ideas why?
How can I load a small .elf file (built for RAM startup) now and store
it in internal flash and execute? :-)
this is what happens when i do:
RedBoot> load -m x
C*** Abort! Attempt to load ELF data to address: 0x20000288 which is not
valid
xyzModem - CRC mode, 2(SOH)/0(STX)/0(CAN) packets, 3 retries
RedBoot>
address 0x20000288 is not valid probably because we have
[0x20003a58-0x20010000 available]
and 0x20000288 is occupied by redboot. What do I do?
Oleg
Hi Oleg
On 09/10/14 16:48, Oleg Uzenkov wrote:
I have tried to run redboot on a custom board (very similar to
STM32f4-discovery board, so let's say that we have discovery in question).
[ snip ]
I just would like to get redboot working on a board without external RAM.
These are my findings so far:
1. I built redboot for ROM startup (applied relevant adjustings from
stm3240g_eval's redboot_rom.ecm)
2. flashed the board with redboot at 0x08000000
3.
when CYGOPT_REDBOOT_FIS == 0 redboot loads, but is very unstable, can
stop working any time... But, without Flash Image System I do not see
how to use redboot to load and store and run images.
when CYGOPT_REDBOOT_FIS == 1 redboot hangs. It happens when
do_flash_init() runs (problem in memcpy , probably illigal memory access)
A question, can actually redboot work without external ram?
If yes, how to fit it properly? (the board has stm32f407VE with 128+64
KB of internal ram, 512KB internal flash)
Consider the output of RedBoot on STM3240G-EVAL (from your earlier message):
RedBoot(tm) bootstrap and debug environment [ROM]
...
Platform: ST STM3240G-EVAL (Cortex-M4)
RAM: 0x64000000-0x64200000 [0x64005d30-0x641dd000 available]
0x20000000-0x2001f000 [0x20000000-0x2001f000 available]
0x10000000-0x10010000 [0x10000000-0x10010000 available]
FLASH: 0x08000000-0x080fffff, 4 x 0x4000 blocks, 1 x 0x10000 blocks, 7 x
0x20000 blocks
RedBoot>
This shows that RedBoot is using 0x5d30 bytes of external RAM with FIS
enabled. If you have ported RedBoot to your custom board correctly, I
would expect it to report internal RAM usage similar, but not identical,
to the following:
RAM: 0x20000000-0x2001f000 [0x20005d30-0x2001f000 available]
Is that what you are observing?
So RedBoot should fit it available RAM quite easily.
I would concentrate on tracking down the reliability issue when RedBoot
is configured without the FIS first. Once you have a stable RedBoot
without the FIS, you can then try enabling the FIS.
I hope this helps....
John Dallaway
eCos maintainer
http://www.dallaway.org.uk/john
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss