por gibim » 22 Nov 2006 14:16
Olha, neste arquivo ***Startup.s79 o linker enxerga os vetores de interrupção e automaticamente desvia os ponteiro de interrupção para aonde vc configurou neste ponto
(...)
org 0x18
irq_handler ldr pc,=irq_handler
org 0x1c
fiq_handler ldr pc,=fiq_handler
; Constant table entries (for ldr pc) will be placed at 0x20
; org 0x20
(...)
Acontece que para o Linker( É um programa que liga objectos gerados por um compilador, formando assim o ficheiro executavel final.) você tem que exportar os simbolos, então estas linhas são necessárias.
(...)
MODULE
COMMON INTVEC:CODE:NOROOT(2)
PUBLIC __program_start
EXTERN ?cstartup
EXTERN FIQ_Interrupt
EXTERN IRQ_Handler
; EXTERN undef_handler, swi_handler, prefetch_handler
; EXTERN data_handler, irq_handler, fiq_handler
(...)
Agora é possível montar seu executável.
Outra coisa embaçada é a respeito das opções de configuração do compilador e o IAR... Você tem que prestar muita atenção nisto. Qualquer parâmetro mal configurado vai dar uns paus muito loucos.
Também não sei lhe explicar porque estava dando erro de linkagem, mas esses problemas são místicos para a maioria da população, inclusive pra mim.
Abraços e boa sorte