字符設備驅動程序

字符設備驅動程序

ID:41036836

大?。?07.00 KB

頁數:15頁

時間:2019-08-14

字符設備驅動程序_第1頁
字符設備驅動程序_第2頁
字符設備驅動程序_第3頁
字符設備驅動程序_第4頁
字符設備驅動程序_第5頁
資源描述:

《字符設備驅動程序》由會員上傳分享,免費在線閱讀,更多相關內容在工程資料-天天文庫。

1、字符設備驅動程序字符設備驅動程序與塊設備不同。所涉及的鍵盤驅動、控制臺顯示驅動和串口驅動以及與這些驅動有關的接口、算法程序都緊密相關。他們共同協作實現控制臺終端和串口終端功能。下圖反映了控制臺鍵盤中斷處理過程。以上為總的處理流程,下面對每一個驅動分開分析。首先是鍵盤驅動。鍵盤驅動用匯編寫的,比較難理解,牽涉內容較多,有鍵盤控制器804X的編程,還有掃描碼(共3套,這里用第二套)和控制命令及控制序列(p209~210有講解)。由于鍵盤從XT發(fā)展到AT到現在PS/2,USB,無線鍵盤,發(fā)展較快,驅動各有不同,此版本驅動為兼容XT,將掃描碼映射為XT再處理

2、,因此僅供參考。CNIX操作系統的鍵盤驅動實現為C語言,可讀性更好。鍵盤驅動鍵盤驅動就是上圖鍵盤硬件中斷的過程。keyboard.S中的_keyboard_interrupt函數為中斷主流程,文件中其他函數均被其調用。ds,es置為內核數據段讀取鍵盤掃描碼設置e0標志位通過函數跳轉表調用鍵處理程序復位e0標志(即0xe0或0xe1的標志)對用8255A的PC鍵盤電路復位并向8259發(fā)EOI(中斷結束)信號調用do_tty_interrupt函數中斷返回掃描碼是否為0xe0或0xe1?YN以上打星處為鍵盤驅動的核心,即主要處理過程,針對不同掃描碼分別處

3、理,并最終將轉換后所得ASCII碼或控制序列放入控制臺tty結構的讀緩沖隊列read_q中。鍵處理程序跳轉表為key_table,根據掃描碼調用不同處理程序,對于“普通鍵”,即只有一個字符返回且沒有含義變化的鍵,調用do_self函數。其他均為“特殊鍵”:1.crtrl鍵的按下和釋放2.alt鍵的按下和釋放3.shift鍵的按下和釋放4.capslock鍵的按下和釋放(釋放直接返回,不作任何處理)5.scrolllock鍵的按下6.numlock的按下7.數字鍵盤的處理(包括alt-ctrl+delete的處理,因為老式鍵盤delete鍵在數字小鍵盤

4、上。還包括對光標移動鍵的分別處理)8.功能鍵(F1~F12)的處理9.減號的處理(老鍵盤’/’與’-’以0xe0加以區(qū)分,可能其中一鍵要按shift)do_self是最常用的流程,即跳轉表中使用頻率最高的流程:根據alt鍵按下或shift鍵按下或都不按,確定掃描碼àASCII碼映射表基址從映射表取得ASCII碼并進行有效性驗證若ASCII碼在’a’與’}’(0x61~0x7d)范圍且capslock或ctrl鍵按下,則轉換為大寫字符若ASCII碼在’’’與’-’(0x40~0x5f)之間且ctrl鍵按下,則轉換為控制字符(0x00~0x1f)若左al

5、t鍵按下,字符的位7置位將所得字符放入tty讀緩沖read_q控制臺程序控制臺程序分兩部分:1.控制臺初始化2.控制臺寫函數控制臺初始化函數根據EGA單色、MDA單色、EGA彩色、CGA各種顯卡設置顯卡類型、顯存占用內存的起始地址、結束地址、顯示索引寄存器端口和顯示數據寄存器端口。并將顯卡類型打印在屏幕上。初始化滾屏變量和光標位置,設置鍵盤中斷陷阱門,復位鍵盤。控制臺寫函數從終端對應的tty寫緩沖隊列中取字符,并顯示在屏幕上。思路是利用狀態(tài)機原理對緩沖隊列中的字符逐一處理(若是字符寫在顯存對應位置,若是光標,設置光標位置),最后向顯示控制器發(fā)送光標顯

6、示位置。01234startend收到字符ESC[?;且數組par未遍歷完1.非控制字符非擴展字符2.換行符垂直制表符換頁符3.回車符4.DEL5.BackSpace6.水平制表符7.揚聲器1.ESCE光標移到下一行開始處2.ESCM光標上移一行3.ESCD光標下移一行4.ESCZ發(fā)送終端應答字符序列5.ESC7保存光標位置6.ESC8恢復光標位置ESC[(?)2ESC[(?)28ESC[(?)2871.ESC[(?)GESC[(?)’光標移到指定列2.ESC[(?)A光標上移指定行數3.ESC[(?)BESC[(?)e光標下移指定行數4.ESC[(

7、?)C光標右移指定列數5.ESC[(?)D光標左移指定列數6.ESC[(?)E9.ESC[(?)H12.ESC[(?)L15.ESC[(?)@18.ESC[(?)s光標下移ESC[(?)f在光標處插在光標處刪保存光標位指定列數光標移到入n行除n個字符置并回到0列移到指定13.ESC(?)M16.ESC[(?)m19.ESC[(?)u7.ESC[(?)F行、列在光標處刪改變光標處恢復光標位光標上移10.ESC[(?)J除n行字符顯示屬置指定行數清屏14.ESC(?)P性并回到0列11.ESC[(?)K在光標處刪17.ESC[(?)r8.ESC[(?)d

8、對行中字符除n個字符設置滾屏的光標移到刪除始末行號上圖中黑虛線表示不退出case循環(huán)讀取下一字符,而是直接轉

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯系客服處理。