2012-04-17 6 views
1

私はいくつかのCS3割り込みハンドラを私のものに置き換えようとしています。 "stellaris_blizzardのためのISR" の一部の下にファイルCodeSourcery CS3割り込みハンドラのオーバーライド

#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 */ 

そして、私のハンドラ

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

のSysTick割り込みうまく動作します。しかし、ポートMでGPIO割り込みが発生すると、デフォルトの "__cs3_isr_interrupt"が呼び出されます。 GPIO割り込みハンドラをどのように置き換えることができますか?

答えて

0

これは__cs3_isr_GPIOMが__cs3_isr_interruptの弱いエイリアスです。あなた自身のバージョンをnon-weakとして定義していれば問題ありません。

オブジェクトファイルが正しい弱い/弱いタイプのものであることを確認してください(nmを使用してください)。

これで解決できない場合は、リンカーに問題があり、理解することは難しいです。注文の問題でも、どこかのタイプミスかもしれません。

関連する問題