[操作系统]读pyos实验3笔记
2005-03-04 03:46
525 查看
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 保留
可参考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 保留
相关文章推荐
- 《Orange's 一个操作系统的实现》学习笔记(一) 实验环境搭建
- 操作系统、虚拟机和GHOST备份系统笔记及实验报告
- 实验五研究笔记_操作系统是如何让工作的
- 【华为网赛学习笔记第二日】【01】服务器操作系统基础原理(下)
- 操作系统from清华大学向勇,陈渝 笔记(二)操作系统的启动、中断、异常、系统调用
- 30天自制操作系统笔记 第2天
- 《30天自制操作系统》13_day_学习笔记
- centos救援模式实验笔记
- 操作系统原理学习笔记--操作系统概述
- 自己动手写操作系统 笔记
- 【课程笔记】遥感技术应用实验_理论(精度验证)
- openstack学习笔记:Kvm基础实验环境
- 操作系统之“实验一”
- 现代操作系统笔记之 进程
- 软件测试实验学习笔记系列4--CppUnit
- uC/OS-II 学习笔记:信号量实验
- 操作系统学习笔记(二) --操作系统结构
- 王爽汇编语言第二版学习笔记之实验13(2)
- 操作系统笔记(图片个人版)
- 王爽汇编语言第二版学习笔记之实验15