[英]what is the different between cgaputc(int c) / uartputc(int c) / constputc( int c) in xv6?
在xv6 MIT操作系統中 ,我試圖了解/xv6/console.c中的幾個putc函數之間的區別。
謝謝!
consputc()
是控制台輸出函數。 它將一個char
寫入控制台,該char
在該OS中似乎意味着串行端口和CGA文本顯示。 在此之前,它首先檢查系統是否發生了緊急情況(緊急情況是內核在遇到錯誤且不知道該怎么辦時進入的狀態,因此與其繼續進行並可能使情況變得更糟,不如決定緊急狀態並停止),如果這樣,則會進入無限循環並禁用中斷,因此只有系統復位才能退出緊急狀態。
uartputc()
將char
寫入串行端口。 它首先檢查串行端口是否不繁忙,並接受char
。
cgaputc()
將一個char寫入CGA文本幀緩沖區,並相應地調整光標位置。 CGA文本幀緩沖區的起始地址為0xb8000,由交錯的(屬性,字符)字節組成。 默認模式3是80x25(80列25行)文本模式。 屬性07表示在黑色背景上的灰色文本。 光標位置通過CRT控制器端口進行操作,該端口公開了幾個寄存器,寄存器14和15將光標位置保留為14位。 通過首先選擇要訪問的寄存器來訪問CRTC,方法是將寄存器的編號寫入索引CRTC端口0x3d4,然后從CRTC控制/數據端口0x3d5進行寫入或讀取。 這些東西記錄在名為vgadoc4b的文檔中,以及在Ralph Brown的中斷列表中 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.