谭升
非主流人工智能科学家 我和外面那些妖艳的货不一样

【30天自制操作系统】 鼠标


title: 【30天自制操作系统】 鼠标
list_number: false
date: 2013-11-30 15:44:00
tags:
– 30天自制操作系统

categories: 30天自制操作系统

Abstract: 《30天自制操作系统》鼠标显示
Keywords: 《30天自制操作系统》,Macbook,鼠标

啊哈,鼠标

今天看的有点纠结,因为竟然看困了,很少有这种情况,主要是有好多东西作者并没有做深入介绍,只是说这样是对的,至于为啥这样以后再说,这让我感觉很不爽。具体来说说。
首先,先解决了鼠标运动的问题,我感觉这个不是什么大问题,只是读取数据那需要点技巧,就是验证数据的有效性,以前用单片机发送串口数据时也用到过类似的做法,作者提出的是检查第一个字的低八位以及高两位,如果高两位是0,而低八位是8,那么数据没问题,但并不一定绝对没问题,比如发送的数据为 0x08 0x00 0x11下一组为0x08 0x08 0x01时也就是队列里面是0x08 0x00 0x11 0x08 0x08 0x01时如果红色字体丢失任意一组数据,其结果和下一组结果都是错误的,但发生的概率很小,我们也没必要要求硬件每发送一个数据都要加上校验位,那样冗余太大,也浪费资源,而且估计鼠标也不会总坏。。。
个人来讲,我不想将桌面作为系统开发的前期所应该做的(等我自己写的时候不会这么弄),一个黑漆漆的命令行而具有更强大的功能,我觉得更好,而且将桌面和系统剥离开,也就是linux那样,感觉更加自由。哈哈,这都是自己的想法,没有任何科学根据。接下来就到了让我纠结的地方了,就是作者解释了之前没解释的汇编代码:

Advertisements

好吧,我的理解就只能到上面这个地步,不知道再继续往下看还能多领悟点不了。。

为什么是向键盘发送指令来控制A20GATE呢?百度到的原因是为了控制是否使用超过1M以上的内存,并和16位兼容,IBM的老爷爷们使用键盘控制器剩下的一根信号线来控制A20,A20不是控制是否进入保护模式。

原始16位处理器访问最高地址为0xFFFF:0xFFFF=0xFFFF0+0xFFFF=0x10EFFEF,很明显多于1M对于多出来的0xEFFEF的访问就需要另外的地址线。但是系统的做法是当程序员访问多于1M的地址时,CPU将地址按1M取模。。这样就不会超过1M了,这种技术被称为wrap-around
到了80286出现了一些问题,当程序员试图访问1M到0x10EFFEF时系统并没有循环回去而是直接访问,这导致了和之前产品不兼容,于是为了兼容,设计了第21根信号线就是上面提到的键盘控制器多余的这根,称为A20来控制是否访问1M以后的地址,当设置为打开时可以访问到多于1M的地址,关闭时则只能循环回0按8086的方式访问。
以上都是实模式下的,在保护模式下,CPU访问的内存增加,如果这个20位的控制线不被打开,那我们的第20号位地址将被视为无效,内存将会被切割成小碎片,系统将只能访问以基数兆的内存。。所以必须要打开A20才能完整访问。至于A20和键盘的关系。。。就是没啥关系,只不过用一个控制器。。。
一下内容来自互联网(没有验证准确性):

多数PC都使用键盘控制器(8042芯片)来处理A20Gate。 从理论上讲,打开A20Gate的方法是通过设置8042芯片输出端口(64h)的2nd-bit,但事实上,当你向8042芯片输出端口进行写操作的时候,在键盘缓冲区中,或许还有别的数据尚未处理,因此你必须首先处理这些数据。 流程如下:  
1. 禁止中断;  
2. 等待,直到8042 Inputbuffer为空为止;
3. 发送禁止键盘操作命令到8042Input buffer;
4. 等待,直到8042 Inputbuffer为空为止;
5. 发送读取8042 OutputPort命令;
6. 等待,直到8042 Outputbuffer有数据为止;
7. 读取8042 Outputbuffer,并保存得到的字节;
8. 等待,直到8042 Inputbuffer为空为止;
9. 发送Write 8042Output Port命令到8042 Input buffer;  
10. 等待,直到8042 Inputbuffer为空为止;  
11. 将从8042 OutputPort得到的字节的第2位置1(OR 2),然后写入8042 Input buffer;  
12. 等待,直到8042 Inputbuffer为空为止;  
13. 发送允许键盘操作命令到8042Input buffer;  
14. 打开中断。

今天就这样。。明天继续看。。。谢谢收看。。

原文地址1:https://www.face2ai.com/《30天自制操作系统》学习笔记–第8天转载请标明出处

Share

You may also like...

说点什么

avatar
  Subscribe  
提醒

试录了几节线性代数视频课程,欢迎大家支持,
点击试看
点击购买更多内容

由于博客移至wordpress,部分公式和代码显示不正常,博主正在努力修改,如发现公式显示错误,请及时在文章下留言,感谢您的帮助,尽请原谅!