1
BIOS가있는 Atom-32bit-intel 보드 n450을 가지고 있습니다. 내 목표는 APIC 타이머와 linke를 ISR (0x21)과 함께 사용하는 것입니다. Atom-32bit-intel 보드의 BIOS가 IDT 및 GDT를 만드나요?
/*Read the IDTR*/
sidt (idt_ptr)
/*Read the GDTR*/
sgdt (gdt_ptr)
그래서 내가 시도 : 잠시 후, 나는 이미 존재 IDT와 GDT (아마도 BIOS에 의해 건설)와 필요를 (소프트웨어는 C 언어와 & T 조립에있다) 구축되지 것을 discoverd 단지 IDT 내 ISR을 연결하는 IDT의 주소를 사용합니다 :
fill_interrupt(ISR_Nbr,(unsigned int) isr33, 0x08, 0x8E);
static void fill_interrupt(unsigned char num, unsigned int base, unsigned short sel, unsigned char flags)
{
unsigned short *Interrupt_Address;
/*address = idt_ptr.base + num * 8 byte*/
Interrupt_Address = (unsigned short *)(idt_ptr.base + num*8);
*(Interrupt_Address) = base&0xFFFF;
*(Interrupt_Address+1) = sel;
*(Interrupt_Address+2) = (flags>>8)&0xFF00;
*(Interrupt_Address+3) = (base>>16)&0xFFFF;
}
을 나는 ISR33 전화 할 때 : $ 0x21, 소프트웨어 충돌을 int로 : SingleStep CPU [1] 오류 : 프로세서 실행합니다.
그래서 어디서 잘못 되었습니까 ???
비고 :이클립스 Heros (AT & T 어셈블리)를 사용하면 코드가 보호 모드 (CR0.PE = 1 인 것처럼 보입니다. 아마도 BIOS에서 설정 한 것입니다)입니다.