[ECOS] Execution of constructors in at91

Rubén Pérez de Aranda Alonso rperez@sidsa.es
Mon Oct 27 08:51:00 GMT 2003

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 
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 
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.



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

More information about the Ecos-discuss mailing list