Hi Everyone,
As it turns out this problem was due to the mapping of the address bus
to the FLASH chip for P30. The design was initially based on the J3
which does a bit[23-1] mapping for the 128Mbit, but this is not required
for the P30 FLASH.
Cheers,
Benny
Benny Chen wrote:
Hi Guys,
I am running Redboot on an Cirrus ARM9 board which used to use the
Intel J3 flash. I am in the mids of getting it to work on a Intel P30
flash.
I have managed to change the download utility used by Cirrus to
include attributes unique to the P30 flash
- Asymmetric Block size
The download seems to work find and had completed successfully.
However, when my program executes using ROMRAM startup it stops at the
cyg_hal_start_constructors() routine in vectors.S. It seems that the
only diag_printf statement that prints is the one before the for loop
as per delow.
Is this due to my download utility not downloading the redboot.bin
image properly?
One other thing is the P30 FLASH did state that XIP programs need to
have their .text and .data sections separated into different
Programming Region (8Mbit blocks) , as in the .data and .text section
cannot both be in the same 8Mbit block.
I have not done this at the moment, because I am not sure how to and
do I need it.
When booting the Redboot via ROMRAM does that execute the startup code
in FLASH or does it copy it to memory before it executes?
Any help is much appreciated.
Cheers,
Benny
void
cyg_hal_invoke_constructors (void)
{
#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
static pfunc *p = &__CTOR_END__[-1];
cyg_hal_stop_constructors = 0;
for (; p >= __CTOR_LIST__; p--) {
(*p) ();
if (cyg_hal_stop_constructors) {
p--;
break;
}
}
#else
pfunc *p;
*diag_printf("This print OK\n");*
for (p = &__CTOR_END__[-1]; p >= __CTOR_LIST__; p--) {
diag_printf("This didn't print\n");
(*p) ();
}
#endif
}
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss