私は Atom-32bit-intel で作業しており、MicroC OS II を移植する必要があるため、Atom で構成を行うコードはありません (GDT も LDT もありません...):
私の質問は、リセット後の Atom-32bit の状態についての詳細です。Atom は保護モードですか? 最も重要なのは、どのモードであるかを確認する方法です(どのレジスタをどのように確認する必要がありますか)?
備考: CR0.PE = 1 (私はそれをチェックしました) は、Atom がプロテクト モードであることを証明するのに十分ですか?
* ** * ** * ** * **アップデート :** * ** * ** * ** * ** * **
/*Read the IDTR*/
sidt (idt_ptr)
/*Read the GDTR*/
sgdt (gdt_ptr)
そこで、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+1) = (flags>>8)&0xFF00;
*(Interrupt_Address+1) = (base>>16)&0xFFFF;
}
私のISRは実装されています:
isr33:
nop
nop
cli
push %ebp //save the context to swith back
mov %esp,%ebp
pop %ebp //Return to the calling function
sti
ret