Цитата(injen-d @ Jan 13 2008, 13:47)

Выходные файлы пусты, а объектные созданы правильно.
Люкс! Теперь осталось в вашем скрипте сделать KEEP() для сегмента, в котором располагаются вектора. Т.е. надо вектора (в crt.s) поместить в отдельную секцию, обозвав ее, скажем, vectors:
Код
/* GNU assembler controls */
.vectors /* all assembler code that follows will go into .vectors section */
.arm /* compile for 32-bit ARM instruction set */
.align /* align section on 32-bit boundary */
/* ============================================================ */
/* VECTOR TABLE */
/* */
/* Must be located in FLASH at address 0x00000000 */
/* */
/* Easy to do if this file crt.s is first in the list */
/* for the linker step in the makefile, e.g. */
/* */
/* $(LD) $(LFLAGS) -o main.out crt.o main.o */
/* */
/* ============================================================ */
_vec_reset: b _init_reset /* RESET vector - must be at 0x00000000 */
_vec_undef: b AT91F_Undef_Handler /* Undefined Instruction vector */
_vec_swi: b _vec_swi /* Software Interrupt vector */
_vec_pabt: b AT91F_Pabt_Handler /* Prefetch abort vector */
_vec_dabt: b AT91F_Dabt_Handler /* Data abort vector */
_vec_rsv: nop /* Reserved vector */
_vec_irq: b AT91F_Irq_Handler /* Interrupt Request (IRQ) vector */
_vec_fiq: b AT91F_Default_FIQ_handler /*Fast interrupt request (FIQ) vector */
.text /* place remaining code to .text section */
и в скрипте линкера сделать
Код
SECTIONS
{
. = 0; /* set location counter to address zero */
.text : /* collect all sections that should go into FLASH after startup */
{
KEEP(*(.vectors))
*(.text) /* all .text sections (code) */
Цитата(injen-d @ Jan 13 2008, 13:47)

Вобще-то, насколько я понял из документации (в школе учил французский

), -Wl, - означает "передать следующий флаг линкеру".
Да, вы поняли правильно. Так линкер должен эту -Wl получить, т.е. она должна быть передана gcc при линковке (в цели main.out), а у вас ее получал компилятор в целях *.o