國嵌攻略 127 tty驅動程式架構

2022-07-20 23:45:12 字數 1430 閱讀 4086

tty概念解析

在linux系統中,終端是一類字元型裝置,它包括多種型別,通常使用tty來簡稱各種型別的終端裝置。

1.串列埠終端(/dev/ttys*)

串列埠終端是使用計算機串列埠連線的終端裝置。linux把每個串列埠埠都看作是乙個字元裝置。這些串列埠裝置所對應的裝置名稱是/dev/ttysac0,/dev/ttysac1...

2.控制台終端(/dev/console)

在linux系統中,計算機的輸出裝置通常被稱為控制台終端(console),這裡特指printk資訊輸出到的裝置。/dev/console是乙個虛擬的裝置,它需要對映到真正的tty上,比如通過核心啟動引數」consle=ttysac0」就是把console對映到了串列埠0。

3.虛擬終端(/dev/tty*)

當使用者登入時,使用的是虛擬終端。使用ctrl+atl+[f1-f6]組合鍵,我們就可以切換到tty1,tty1,tty3等上面去。tty1-tty6等稱為虛擬終端,而tty0則是當前所使用的虛擬終端的乙個別名。

4.三種終端的關聯

核心使用printk函式把資訊輸出到控制台終端上,控制台終端通過關聯串列埠終端把資訊輸出到實際的硬體上。應用程式把資訊輸出到虛擬終端上,虛擬終端通過關聯串列埠終端把資訊輸出到實際的硬體上。

tty架構分析

linux tty子系統包含:tty核心,tty線路規程和tty驅動。tty核心是對整個tty裝置的抽象,對使用者提供統一的介面;tty線路規程是對傳輸資料的格式化;tty驅動則是面向tty裝置的硬體驅動。

回溯串列埠傳送流程

回溯是指在最底層逐步返回到最高呼叫。回溯是在對應的函式中新增dump_stack(),那麼在執行該語句時就會把整個函式的呼叫關係回溯出來。

//tty驅動

(s3c24xx_serial_start_tx+0x0/0x64) from (uart_start+0x68/0x6c)

r5:c3907c02 r4:a0000013

//tty線路規程

(uart_start+0x0/0x6c) from (uart_flush_chars+0x10/0x14)

r5:c3907c02 r4:00000002

(uart_flush_chars+0x0/0x14) from (n_tty_write+0x230/0x448)

(n_tty_write+0x0/0x448) from (tty_write+0x14c/0x244)

//tty核心

(tty_write+0x0/0x244) from (redirected_tty_write+0x88/0x98)

(redirected_tty_write+0x0/0x98) from (vfs_write+0xb4/0xe8)

r9:c39c2000 r8:c00310c8 r7:00000004 r6:c39c3f78 r5:40000000

r4:c3939200

國嵌攻略 168 音效卡驅動開發

oss架構 oss全稱是open sound system,叫做開放式音訊系統,這種早期的音訊系統是基於檔案系統的訪問方式,這意味著對聲音的操作完全可以像對普通檔案那樣執行open,read等操作。oss中,主要提供了一下幾種音訊裝置的抽象裝置檔案 dev mixer 用來訪問音效卡中的混音器,用於...

國嵌攻略 132 串列埠驅動實現

如何開發linux驅動程式 一般情況下都會有現成的驅動程式,不需要從零開始開發驅動程式。所以linux驅動開發主要分為兩個步驟 1.讀得懂驅動程式 2.寫的了核心功能。傳送中斷處理程式 傳送中斷處理函式在 drivers serial samsung.c的s3c24xx serial tx char...

國嵌攻略 143 LCD驅動程式分析

lcd驅動程式分析 lcd驅動程式 在 drivers video s3c2410fb.c檔案中,在該驅動的s3c2410fb init中註冊了平台驅動,該驅動的初始化 在s3c24xxfc probe函式中。1.分配fb info結構,使用framebuffer alloc 2.獲取lcd控制器的...