zoukankan      html  css  js  c++  java
  • [操作系统]读pyos实验3笔记

    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 保留

  • 相关阅读:
    easyui datagrid 编辑器绑定事件
    Java初学(八)
    Java初学(七)
    Java初学(六)
    Java初学(五)
    Java初学(四)
    GCC基本知识
    OpenCL memory object 之 Global memory (2)
    OpenCL memory object 之 Global memory (1)
    OpenCL memory object 之 传输优化
  • 原文地址:https://www.cnblogs.com/huqingyu/p/112554.html
Copyright © 2011-2022 走看看