2012-04-17 3 views
1

일부 CS3 인터럽트 처리기를 광산으로 교체하려고합니다.CodeSourcery CS3 인터럽트 처리기 재정의

extern "C" void __cs3_isr_systick() { ... } 
extern "C" void __cs3_isr_GPIOM() { ... } 

SysTick 인터럽트가 잘 작동 "stellaris_blizzard에 대한 ISR은"

#if defined (L_stellaris_blizzard_isr_interrupt) 
    .globl __cs3_isr_interrupt 
    .type __cs3_isr_interrupt, %function 
__cs3_isr_interrupt: 
    b . 
    .size __cs3_isr_interrupt, . - __cs3_isr_interrupt 

    .weak __cs3_isr_reserved_7 
    .globl __cs3_isr_reserved_7 
    .set __cs3_isr_reserved_7, __cs3_isr_interrupt 
    ... 
    .weak __cs3_isr_GPIOM 
    .globl __cs3_isr_GPIOM 
    .set __cs3_isr_GPIOM, __cs3_isr_interrupt 
    ... 
#endif /* interrupt */ 
... 

#if defined (L_stellaris_blizzard_isr_systick) 
    .globl __cs3_isr_systick 
    .type __cs3_isr_systick, %function 
__cs3_isr_systick: 
    b . 
    .size __cs3_isr_systick, . - __cs3_isr_systick 

#endif /* systick */ 

파일

그리고 내 핸들러의 일부가 아래 . 그러나 포트 M에서 GPIO 인터럽트가 발생하면 기본적으로 "__cs3_isr_interrupt"가 호출됩니다. GPIO 인터럽트 처리기를 어떻게 바꿀 수 있습니까?

답변

0

좋아요. __cs3_isr_GPIOM은 __cs3_isr_interrupt의 약한 별칭입니다. 비 (非) 약자로 자신의 버전을 정의했다면 아무런 문제가 없어야합니다.

개체 파일이 올바른 약한/약한 유형 (예 : nm)인지 확인해야합니다.

그래도 문제가 해결되지 않으면 링커 문제가 있으며이를 이해하기가 어렵습니다. 주문 문제 일 수도 있고 어딘가의 오타 일 수도 있습니다.