2011-10-25 11 views
1

私はN450ボード(Intel Atom)、EclipseをIDEとして使用しています。私はCでコーディングしており、アセンブリコードとしては& Tです。APICタイマーコードは動作しませんか?

私は定期的なモードにAPICタイマーを使用しようと私のISR_55

InitTickISR: 
    push %ebp //save the context to swith back 
    mov  %esp,%ebp 

// Divide Configuration Register (for Timer) addr : FEE0 03E0 <- 
    movl $0xFEE003E0, %eax 
    movl $0x3, (%eax)//0x3:Divided by 16, 0xA :divide by 128 

// Initial Count addr : FEE0 0380 <- 0x1000 
    movl $0xFEE00380,%eax 
    movl $0x100, (%eax) 

// LVT(Local Vector Table) Timer Register (FEE0 0320H) -- Interrupt 0x55 
    movl $0xFEE00320, %eax 
    movl $0x20055, (%eax)//2: periodic mode, 01:one shot 
          //55: interruption 
// Enable local APIC addr : FEE0 00F0 <- 0x100 
    movl $0xFEE000F0, %eax 
    movl $0x100, (%eax)  

    pop  %ebp //Return to the calling function 
    ret 

とISRは、今のところちょうどそのようである:I(

isr0x55: 
    cli 
    sti 
    iret 

私はタイマーカウント変更値を見ることができますレジスタ0xFEE00390をチェックしてください)、ISRは決して呼び出されません(私はブレークポイントを入れました!!!)。

私は何かを設定するのを忘れましたか?どのようにすべてのことが正しいと確信することができますか?

答えて

1

私はISRレジスタをリセットするためにEOIレジスタを使用して問題を解決しました。

+0

おめでとうございます! –

+0

アレックス10倍 –

関連する問題