自己动手写操作系统系列第3篇,实现时钟和键盘中断
创始人
2024-01-17 13:05:34
0

对应labOS版本1.3
程序源码可以私聊我

picirq.h

  • int 0x20~0x2f接收中断信号IRQ0~15,因为int 0x00~0x1f不能用于IRQ。

picirq.c

  • pic0_mask=0xfb1111 1011;PIC1以外全部禁止。pic1_mask=0xff1111 1111;禁止所有中断

  • pic_enable函数就是将irq_num即IRQ号屏蔽取消

  • 当一个外部中断请求通过中断请求线IRQ传输到IMR(中断屏蔽寄存器),IMR根据设定的中断屏蔽字决定丢弃还是接受。

  • 主从PIC如下如所示,PIC是一个8259A芯片,上面有一些引脚,其中包括了ICW、OCW等引脚。

  • 每一个8259A芯片都有两个I/O ports,程序员可以通过它们对8259A进行编程。
    Master 8259A的端口地址是0x20,0x21;Slave 8259A的端口地址是0xA0,0xA1。

  • EOI:end of interrupt

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jl624Ogv-1666788382369)(images/image-20221013184815828.png)]

kbd.h

  • 键盘按键参考https://wiki.osdev.org/PS/2_Keyboard#Scan_Code_Set_1

int_handlers.c

  • 键盘控制器是8042(PS/2)芯片,它的作用是接收和解码来自键盘的数据并放到缓冲区,然后通知8259A产生IRQ1。
  • 读缓冲区,读0x60端口
  • 写缓冲区,写0x60端口
  • 读状态寄存器,读0x64端口
  • 控制寄存器,写0x64端口
  • 其中读出的缓存数据0xe0和0xe1是特殊键值需要单独处理
  • 键盘抬起产生的数值=按下产生的数值+0x80

init.c

  • CR3寄存器存储的是页目录表页面起始物理地址,因为页目录表都是4KB对齐,因此只有高20位是有效的。低12位有其他用处。
  • CR0寄存器最低位是PE保护模式标志位,最高位是PG分页模式标志位。
  • 启动分页机制需要三步:1、准备好页目录表和页表;2、将页表地址写入CR3;3、将CR0的PG位制1。
  • 另外启动分段或者启动分页,也就是修改CR0的相关位置后,以后都是由硬件自动进行地址的转换。
  • 再记录一下中断的开发。先定义好函数声明和函数实现,然后再GDT表初始化完成的基础上用中断函数指针去初始化IDT表,然后再做好IDTR,这样就可以根据中断号去找中断函数了。然后需要注意的是什么中断对应什么编号是由硬件本身决定的,比如https://logix.cz/michal/doc/i386/chp09-08.htm#09-08,然后重点是要设置IMR取消对此中断的屏蔽,这样当下次产生中断时,硬件根据自身情况产生中断号,经过IDTR找IDT,然后找到相应的中断处理函数执行。这样就完成了一次中断处理。

最后的运行效果

在这里插入图片描述

相关内容

热门资讯

C++17编程之 折叠表达式 文章目录语法形式使用实例(1) 一元右折叠(2) 一元左折叠(3) 二元右折叠(4) 二元左折叠 当...
*9 set up 注意点 1、set up 执行的时机:beforeCreate 之前执行一次,t...
元宵节猜中草药名灯谜 元宵节猜中草药名灯谜(精选90条)  元宵节是我国的传统节日。在元宵节当天,人们都有点灯的习俗,意在...
喀什风情:高台民居 喀什风情:高台民居高台民居是新疆喀什市老城东北端一处建于高40多米、长800多米黄土高崖上的维吾尔民...
民国时期结婚证设计精美显示身... 民国时期结婚证设计精美显示身份地位(图)民国35年(1946年)大红富贵本式结婚证。从婚礼地点、规模...
《我想》教学设计 《我想》教学设计《我想》教学设计1  设计意图:  《我想》是一首儿童诗,在本单元以“幻想和想像”中...
Unity3D中项目打包And... Unity3D中项目打包Android平台包运行过程中抛出异常:JSON intege...
教师教学工作计划 教师教学工作计划教师教学工作计划1  一、工作要点:  本学期,以提高课堂教学效率为目的向课堂要质量...
QSS语法规则以及使用总结 目录1、引言2、加载方法3、选择器类别3.1通用选择器3.2类型选择器3.3类选择器3.4 ID选择...
玛吉阿米—仓央嘉措的情人 玛吉阿米—仓央嘉措的情人美尚作者:竺子诵读:王保华(读一无二)来源:蝴蝶为你朗读(dancingbu...
欣赏 欣赏欣赏xīn shǎng[释义]①(动)基本义:享受美好的事物;领略其中的趣味。②(动)认为好;喜...
《野外定向》的教学反思 《野外定向》的教学反思  “学习生活中有用的地理;学习对终身发展有用的地理”是新的课程标准的基本理念...
ajax学习1 不刷新页面的情况下,向服务端发送请求,异步的js和XMLajax不是新的...
es6的generator 一.generator函数的大致介绍 generator函数是es6引入的,主要用于异...
南京邮电大学数据库第一次课后作... 1.单选题 (5分) (B)是存储在计算机内有结构的数据的集合。 (A)...
不退位减教学设计 不退位减的教学设计(精选3篇)  作为一位优秀的人民教师,通常需要准备好一份教学设计,教学设计是一个...
开口呼開口呼 开口呼(開口呼)开口呼(開口呼)kāi kǒu hū[释义] 等韵学术语。按照韵母把字音分成开口呼、...
《学会合作》教学反思 《学会合作》教学反思  作为一位到岗不久的教师,教学是重要的工作之一,写教学反思能总结我们的教学经验...
怎样教育儿童防走失 怎样教育儿童防走失怎样教育儿童防走失(2013-10-23 12:06:04) 导读:节日期间动物园...
SQLMap 源码阅读 0x01 前言 还是代码功底太差,所以想尝试阅读 sqlmap 源码一下,...