您的位置:首页 > 其它

[操作系统]读pyos实验3笔记

2005-03-04 03:46 447 查看
1.关于编译:

可参考pyos3下的compile.bat文件,非常需要注意的是,ld链接时要设置程序从0x9000处开始并且,-e Main后面要跟着kernel.o(存放有Main函数的二进制文件)否则好像会找不到入口点。

2.关于ICW1~4:

  // 发送4个ICW

  //ICW1

  ToPort( 0x20 , 0x11 ) ;

  ToPort( 0xA0 , 0x11 ) ;

  //ICW2

  ToPort( 0x21 , 0x20 ) ;

  ToPort( 0xA1 , 0x28 ) ;

  //ICW3

  ToPort( 0x21 , 0x4 ) ;  // 在 Inter 出产的硬件中,PIC之间的联系是

  ToPort( 0xA1 , 0x2 ) ;  // 把 PIC1的IRQ2 同 PIC2 的IRQ1 联系起来

  //ICW4

  ToPort( 0x21 , 0x1 ) ;

  ToPort( 0xA1 , 0x1 ) ;

  //OCW1 下面设定中断屏蔽字,只许可键盘中断

  ToPort( 0x21 , 0xFD ) ;

  ToPort( 0xA1 , 0xFF ) ;

ICW1的结构

7   6   5   4   3   2   1   0

0   0   0   1   M   0   C   I

I : 如果 ICW3 后面还有 ICW4,则置位

C : 如果不置位,表明这两个 PIC 工作在串联状态下

M : 表明 IR0 到 IR7 的线是水平触发,在PC机中,这位应为0(边沿触发)

这里设为0x11,表明要使用ICW4,工作在串联状态、边沿触发

ICW2 表明了 IRQ0 在中断向量表中的地址,在保护模式下,你应当改变它

  7    6    5    4    3   2   1   0

A7  A6  A5  A4  A3  0   0   0

因为最后三位均是零,因此要求IRQ0的中断号必须是8的倍数、IRQ1 在中断向量表中的地址为 IRQ0的+1,IRQ2~IRQ7以次类推

这里PIC1设为0x20,表明IRQ0中断号为0x20,IRQ1中断号为0x21……IRQ7中断号为0x27

PIC2设为0x28,表明IRQ8中断号为0x28,IRQ9中断号为0x29……IRQ15中断号为0x2F

即:IRQ0~IRQ15对应0x20~0x2F,

ICW3 关于 PIC1 的结构

7   6   5   4   3   2   1   0

IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0

如果 IR0 是置0的,则表明此根线联到一个外围设备

如果 IR0 是置1的,则表明此根线与PIC2联结

这里PIC1设为0x8,表明主片的IRQ2参与级联

PIC2设为0x2,表明从片联到主片的的IRQ2

ICW4 的结构

7   6   5   4   3   2   1       0

0   0   0   0   0   0   EOI 80x86

EOI 表明中断的最后是自动处理还是由软件辅助处理。在PC中此位通常置0,表示软件必须

处理中断的最后扫尾工作

80x86 表明PIC是否工作在80x86的体系结构下

这里设为0x1,表明工作在80x86体系结构下。

OCW1:

当某位置位0表示允许其发出中断请求,置为1表示屏蔽其中断请救

这里PIC1设为 0xFD 就是 11111101 ;即只允许IRQ1,即键盘中断请求。

PIC2设为0xFF,屏蔽IRQ8~IRQ15

PIC 1 处理的中断有

0 系统时钟

1 键盘

2 重定向到IRQ9 (PIC2的IRQ1),如果此位被置1,则屏幕掉所有来自PIC2的中断

3 串口 1 (COM2/4)

4 串口 2 (COM1/3)

5 声卡

6 软驱

7 并行端口

PIC 2 处理的中断有

0 实时时钟

1 来自 IRQ2 (PIC1)

2 保留

3 保留

4 鼠标

5 数学协处理器

6 硬盘

7 保留
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: