Цитата(Сергей Борщ @ Nov 14 2008, 21:40)

Для оформления исходников существует кнопка '#' на форме ввода. Читать неформатированный исходник очень трудно.
А попробуйе для эксперимента убрать этот файл из проекта. IAR подключит свой библиотечный файл, в котором точно вызываются конструкторы.Собственно между этими двумя кусками кода и должен быть вызов конструкторов. Вот эта информация может вам помочь:
Код
/*
* Function: __call_ctors
*
* Description: Call each constructor for each global object defined
* in the application.
*
* The constructors are placed in a segment named DIFUNCT.
* This function is assumed to be called from the cstartup
* assembler routine using code similar to:
* MOV SFB DIFUNCT, <first argument register>
* MOV SFE DIFUNCT, <second argument register>
*/
void __call_ctors(__difunct_ptr start0, __difunct_ptr end_plus_one)
отключил свой astartup.s79, сstartup_sam7.c и переписал вектор прерываний как:
NAME __vector_table:
EXTERN __program_start
EXTERN OS_CPU_IRQ_ISR
EXTERN OS_CPU_FIQ_ISR
Код
CODE32
COMMON INTVEC:CODE:ROOT
org 0x00
ldr pc,[pc,#24]; Absolute jump can reach 4 GByte
org 0x04
ldr pc,[pc,#24]; Branch to undef_handler
org 0x08
ldr pc,[pc,#24]; Branch to swi_handler
org 0x0c
ldr pc,[pc,#24]; Branch to prefetch_handler
org 0x10
ldr pc,[pc,#24]; Branch to data_handler
org 0x18
ldr pc,[pc,#24]; Branch to irq_handler
org 0x1c
ldr pc,[pc,#24]; Branch to fiq_handler
; Constant table entries (for ldr pc) will be placed at 0x20
; Exception vectors can be specified in C code by #pragma vector or by filling
; in the vectors below. The vector address is the ARM vector number + 0x20.
org 0x20
dc32 __program_start
org 0x24
dc32 ?call_exit
org 0x28
dc32 ?call_exit
org 0x2c
dc32 ?call_exit
org 0x30
dc32 ?call_exit
org 0x38
dc32 OS_CPU_IRQ_ISR
org 0x3c
dc32 OS_CPU_FIQ_ISR
;------------------------------------------------------------------------------
;- Loop for ever
;------------------------------------------------------------------------------
;- End of application. Normally, never occur.
;- Could jump on Software Reset ( B 0x0 ).
;------------------------------------------------------------------------------
?call_exit:
End
b End
END
Помогло, конструкторы вызываються, хотя смущает что выдаёт предупреждение, где он второй вектор нашёл?:
Warning[w52]: More than one definition for the byte at address 0 in common segment INTVEC. It is defined in module "?RESET" as well as in module "__vector_table"
P.S. Всем отписавшимся в теме спасибо!
P.S.S Сергею Борщу отдельное спасибо за '#'