首页 > 其他分享 >我的BIOS之行2-Keyboard Controller 简介

我的BIOS之行2-Keyboard Controller 简介

时间:2023-08-15 14:24:03浏览次数:51  
标签:8042 Code Scan 键盘 BIOS Controller code Keyboard

Keyboard Controller 简介

主板的键盘有一块专用的接口芯片,一般是采用一块单片微处理器8042(现在大多已集成在南桥或SIO里)。它控制整个键盘的工作,包括加电自检、键盘扫描码的缓冲以及与主板的通讯。

INT 09H是H/W中断,对应IRQ1,INT 16H是一个S/W中断。当键盘的一个键被按下时,键盘接口芯片根据被按下的位置,INT 09H负责把键值转换成INT16H认识的值,返回给INT 16H。

INT 16H再把该值根据OS所选定的不同语系键盘而转换成相应的二进制字符传给OS或应用程序。当用户敲击键盘速度过快,使主CPU来不及处理时,则先将所键入的内容送往住存储器的键盘缓冲区,等CPU能处理时,便从缓冲区中取出,送入CPU进行分析和执行。

一般在PC机的内存中安排了大约20个字符的键盘缓冲区。

8042分输入缓冲和输出缓冲,它的数据传输在I/O口60H和64H进行。

基本上,I/O 64H是命令和状态口,I/O 60H是数据口,它们同时可做读写动作,在读和写时有着不同的意义。

I/O 64H的bit 0、1置位分别代表输出/输入缓冲满。如果发现输入缓冲满(即判断出I/O 64H[1]=1),要从I/O 60H将数据读完。BIOS在自检时如果确定输入/输出缓冲都没有问题,会发“AAH”给I/O 64H,让它自测试。等到输入缓冲空(说明上一个命令已执行完),输出缓冲满(KB控制器对自测试命令有反应),再读I/O 60H是否为“55H”(IBM PC/AT规范)。如果是,则表示KB没有问题,若等不到输出缓冲满,说明有问题。

在写命令之前,必须对I/O 64H口送一个60H的值,并等到输入缓冲空,再操作I/O 60H。同样,在读状态之前,也必须对I/O 64H口送一个20H的值,并等到输出缓冲满(表示有状态输出),再操作I/O 60H。这时,我们可以把64H看作索引口,而60H看作数据口。

键盘接口芯片除了接受来自键盘的信息外,还要负责A20地址线的切换,因为当CPU从实模式切换到保护模式时便是通过A20地址线的切换完成的。平常A20为“0”时,CPU工作于DOS的实模式;当A20切换为“1”时,便可进入保护模式。但由于键盘接口芯片切换A20地址线的速度不够快,目前多由主板上的芯片组以模拟方式取代,这样也就省去了一块键盘接口芯片。

Overview

键盘是计算机系统的重要输入设备,所有的IBM PC及其兼容机都有一个键盘。所以键盘驱动是一个面向IBM PC机OS的必不可少的部分。

当IBM从1981年开始,每次推出其新的PC机架构,同时也推出其新的键盘设计——最早的“IBM PC”,到稍后的“IBM XT”,所使用的键盘被称作"XT Keyboard",现在这种键盘已经完全过时,我们现在写键盘驱动程序时可以完全不用考虑它。随后1984年IBM推出了“IBM AT”,它所使用的键盘被称作“AT Keyboard”;1987年IBM推出的“IBM PS/2”使用的键盘被称作“PS/2 Keyboard”。“AT Keyboard”和“PS/2 Keyboard”大同小异,被称作IBM兼容键盘,所有的现代IBM PC/兼容机都支持他,它的接口相对简单,是本部分内容的重点。而当今最新的PC上都支持USB接口的键盘,但他的接口相对复杂的多,并且也不向后兼容,所以本部分内容不涉及它。

History

IBM从1981年发布它的第一款个人计算机“IBM PC”以来,它所使用的键盘也在不断的更新。如下表所示:

| 机型 | IBM PC/XT |IBM AT | IBM PS/2 |
| ------------- |:-------------

标签:8042,Code,Scan,键盘,BIOS,Controller,code,Keyboard
From: https://www.cnblogs.com/samuelwnb/p/17631179.html

相关文章

  • 我的BIOS之行3-UEFI的简介
    UEFI的世界观如果有人对BIOS有兴趣,那么不得不提UEFI了。当然笔者这边只是代码与说明的搬运工,通过UEFI组织的官方文档来带大家了解UEFI。当然您要是觉得笔者就是个DB,想直接翻UEFI的文档,不想看笔者的瞎逼文章的话,请直接点击这里,自行下载看就是了。UEFI的简介文章开头就开始介绍......
  • 问题解答:关于 SAP UI5 控制器(Controller) JavaScript 编码里单引号和双引号的用法澄
    笔者这篇教程文末,有朋友提问:SAPUI5应用开发教程之十-什么是SAPUI5应用的描述符文件manifest.json问题1:在index.html文件中body标签添加了代码:<divdata-sap-ui-componentdata-name="sap.ui5.walkthrough"data-id="container"data-settings='{"id":"wa......
  • 黑魂224 武器上级空物件自动挂载WeaponController
    首先在WeaponController脚本里写上WeaponManager的变量。 新创建两个绑定武器的变量wcL和wcR,通过深度搜索函数搜索模型里武器上级空物件的whL和whR。 下方这个代码是用来给武器上级空物件创建一个新的WeaponController,用以调整武器参数。......
  • 【javascript】关于 AbortController
    相关概念:https://developer.mozilla.org/zh-CN/docs/Web/API/AbortController需求描述:后台返回10000条图片url,前端拿到后需要做成假分页,假设1页显示20张图,分成50页。部分逻辑:1for(leti=0;i<imgUrlList.length;i++){2letimage=newImage()3image.src=imgUrlLi......
  • .Net Web API 005 Controller上传小文件
    1、附属文件对象定义一般情况下,系统里面的文件都会附属一个对象存在,例如用户的头像文件,会附属用户对象存在。邮件中的文件会附属邮件存在。所以在系统里面,我们会创建一个附属文件对象,命名为AttachedFileEntity。其定义如下所示。///<summary>///附属文件实体对象///</summ......
  • VMware ESXi 7.0 U3n macOS Unlocker & OEM BIOS (标准版和厂商定制版) 2023年8月更新
    VMwareESXi7.0U3nmacOSUnlocker&OEMBIOS(标准版和厂商定制版)2023年8月更新ESXi7.0标准版和Dell(戴尔)、HPE(慧与)、Lenovo(联想)、Inspur(浪潮)、Cisco(思科)定制版镜像请访问原文链接:https://sysin.org/blog/vmware-esxi-7-u3-oem/,查看最新版。原创作品,转......
  • @ControllerAdvice注解使用及原理探究 | 京东物流技术团队
    最近在新项目的开发过程中,遇到了个问题,需要将一些异常的业务流程返回给前端,需要提供给前端不同的响应码,前端再在次基础上做提示语言的国际化适配。这些异常流程涉及业务层和控制层的各个地方,如果每个地方都写一些重复代码显得很冗余。然后查询解决方案时发现了@ControllerAdvice这......
  • Asp.net Web Api .net6 Controller返回值总结
    1、特定的类型最基本的操作返回基元或复杂数据类型,例如, string 或自定义对象。请参考以下操作,该操作返回自定义 Product 对象的集合:[HttpGet]publicTask<List<Product>>Get()=>_productContext.Products.OrderBy(p=>p.Name).ToListAsync();2、返回IEnumer......
  • AddMvcCore,AddControllers,AddControllersWithViews,AddRazorPages的区别
    AddMvc/AddMvcCore/AddControllers等区别1.services.AddMvcCore()只注册运行 Controller/RazorPages 必要的核心服务,确保 Pipeline 程序可动作,其馀如像 DataAnnotationModelValidation、身分验证等服务要自己加挂,除有特殊客制需求,一般不太常用。2.services.AddControl......
  • 宏基笔记本BIOS密码
    1、重启后马上按shift键今天高级设置/或者按F2进BIOS2宏碁bios默认密码8位是需要通过您自己的电脑查看的哦,每台电脑的密码都不一样的,具体的查询方法如下:1、开机启动的过程按F2键,进入输入BIOS密码的界面,输入三次错误密码,2、选择第一个EnterUnlockPassword。3、记录Key后面的8个......