8042 PS/2 Controller的工作筆記

來源:互聯網
上載者:User

標籤:

一、概述

       借wiki(http://wiki.osdev.org/%228042%22_PS/2_Controller)的圖:

       其中黃色的就是PS/2 KBC(KeyBoard Controller)。這裡可以明顯看出,KBC和Keyboard(後簡稱KBD)是兩個完全不同的東西,KBC是一個簡單的chip,KBD則是我們常使用的普通外部裝置。

       還可以看到,PS/2的鍵盤滑鼠是與PS/2 KBC交換資料的。而只有KBC最終向CPU report了資料,才會最終反饋給使用者(比如說在螢幕上顯示我們的按鍵內容等)。簡單來說,KBC就是PS/2鍵盤滑鼠與系統溝通的“中介”。

       這裡插入一個討論,我們筆記本基本沒有PS/2的介面,那還需要KBC嗎

       答案是需要。因為在Legacy OS(比如DOS,Legacy Win7等等)環境,即使是USB的鍵盤滑鼠,它們的資料也是轉換成PS/2資料,回傳給KBC,再通知CPU的。具體這裡不詳述,我們知道目前KBC為什麼還存在就好~等到哪一天徹底淘汰LegacyOS,或者說我們只做UEFI BIOS,大概就可以高興的跟KBC say goodbye了。

 

二、從KBC兩種工作模式來瞭解低速裝置(= =)

       在介紹工作模式前,有必要大概瞭解KBC是如何工作的。

       首先,KBC內部可以參考下面的,大概有這麼幾個寄存器:Input/Output Buffer,Status Register。Buffer用來暫存資料,Status主要就是來記錄Buffer的狀態。

       知道KBC結構,再結合概述裡的圖,KBC的基本工作流程就清楚了:PS/2鍵盤滑鼠的資料發送給KBC,暫存在KBC的Buffer,再由KBC轉寄給CPU。

       從這個工作流程分析,鍵盤滑鼠的資料是由使用者產生的,一旦產生就發送給KBC,這部分的行為更多由裝置的firmware決定。而KBC什麼時候把資料轉寄給CPU呢?終於可以說到它的兩種工作模式了。

       KBC的工作模式分Polling和Interrupts兩種。詳述可以參考wiki裡“Recieving Bytes From Device/s”這部分(其實按我的理解叫Ready to send bytes to system可能更合適),這裡主要是談談我所理解的。Polling更多依賴於系統軟體(也就是BIOS)行為,在BIOS部分會透過timer,定期檢查KBC的status register,一旦被標記為output buffer full,就意味著有東西要輸出了,此時就可以透過KBC的資料連接埠讀出資料。而Interrupt工作模式,是一旦資料連接埠有資料,就向CPU發IRQ,CPU通過IRQ編號知道來自什麼裝置,這部分更多是硬體行為了。

       可以看出,Polling模式下受限於KBC buffer空間,Interrupt模式受限於發中斷本身。

 

三、在實際應用中的經驗(不完整,待補充)

       首先,如果需要KBC工作在Interrupt模式,需要特別注意IRQ的配置。最近新平台DOS下鍵盤無法使用,問題就出在IRQ。講清楚這個問題,需要先對wiki上的圖再進行補充。天色已晚,改日再續~

8042 PS/2 Controller的工作筆記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.