This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Execution of constructors in at91
- From: Rubén Pérez de Aranda Alonso <rperez at sidsa dot es>
- To: ecos-discuss at sources dot redhat dot com
- Date: Mon, 27 Oct 2003 09:52:53 +0100
- Subject: [ECOS] Execution of constructors in at91
- Organization: SIDSA
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