This is the mail archive of the ecos-discuss@sources.redhat.com 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]

Execution of constructors in at91


Hello,
I am working with the at91 eb40 porting of eCOS to develop another port for a
prototype based on the same microcontroller. I now use the EmbeddedIce pod to
debug the eCOS and execute the tests of the different parts and layers, but I would
like use the Redboot and its GDB stub because it allows me write the falsh chips
and the comunication with the host is faster.
I have installed a redboot image in flash. With the load command in GDB I upload
the application in the RAM memory that has been compiled to be executed in RAM
and with a ROM monitor. The problem is when the eCOS startup code calls to the
cyg_hal_invoke_constructors() function. This function uses the symbols allocated by
the linker, __CTOR_LIST__ and __CTOR_END__, to know the address of the constructors
belonging to *.ctors binary sections of the different object files. The function calls to these
constructors without verify if the function pointer points to NULL, so the pc register branch
to the 0x0 address and execute the reset vector.
If I do not permit to target execute the call to this function (cyg_hal_invoke_constructors())
using the GDB, the execution of the code goes on right until the execution of HAL_THREAD_LOAD_CONTEXT( &next->stack_ptr )
in line 384 of sched.cxx file.
These two problems don't occur when I compile an image of the application with ROM
startup and I upload it to target with the Embedded ICE pod.


Thanks,

Rubén



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


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