Код таймера APIC не работает? - PullRequest
1 голос
/ 26 октября 2011

Я использую плату N450 (Intel Atom), Eclipse в качестве IDE, кодирую в C и AT & T для кода сборки.

Я пытаюсь использовать таймер 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 пока так выглядит:

isr0x55:
    cli
    sti
    iret

я могу видеть значение изменения счетчика таймера (я проверяю регистр 0xFEE00390), но ISR никогда не вызывается (у меня естьпоставить точку останова в нем !!!).

Я забыл что-то установить?как я могу быть уверен, что каждая вещь установлена ​​правильно?

1 Ответ

1 голос
/ 27 октября 2011

Я решил проблему с помощью регистра EOI для сброса регистра ISR.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...