Linux 串列埠程式設計 一些背景
在大部分講解 Linux 程式設計書籍的時候會發現沒有單獨的串列埠程式設計章節,實際上串列埠程式設計已經被概括在了“終端”或者“終端IO”章節裡面。在上一篇部落格中對經常出現的幾個容易混淆的概念進行簡單描述:tty,串列埠,控制檯與驅動程式。後面會在實際使用過程中對幾種裝置的原理與使用進行詳解。
在系統下面通過執行 "ls /dev" 或者 "cat /proc/tty/drivers" 可以看到經常碰到的一些術語以及分類,如下所示:
對開發者而言,比較熟悉的有 console 控制檯、tty 終端、ttyS serial串列埠裝置、pty 偽終端等。由於 pty 成對使用,所以又細分為了主從兩類。這些裝置類對應的系統裝置檔名參見第二列,可以輸入 "ls /dev" 進行檢視。
需要理清這些概念的關係就需要追溯早起計算機的使用歷史,最初計算機成本高昂,通常需要連線多套鍵盤顯示器供多人使用,因此就出現了這樣一種專門連線計算機的裝置,它只有顯示器和鍵盤,外加簡單處理電路。使用者可以通過這套裝置連線到計算機上(通常是通過串列埠連線),然後登入系統,並對計算機進行操作。這樣一臺只有輸入、顯示器件並能連線到計算機的裝置就稱為終端。tty 裝置的名稱是從過去的電傳打字機(Teletype)縮寫而來,也是最早出現的一種終端裝置,因此現在在 Linux 系統中,就用 tty 來表示 “終端”。而 console 控制檯,pty 偽終端等可以理解為虛擬 tty。總之,在 Unix 系統中 tty 就可以理解為連線到系統的物理或者虛擬終端。
“console”控制檯用於使用者和系統進行互動的裝置,與終端作用類似。該虛擬 tty 與普通終端相比,多了一些功能:如顯示系統核心訊息,後臺服務日誌等。從硬體上看,控制檯與終端等都是具備輸入顯示功能的裝置,沒有區別。實際上他們表達的意思相同。控制檯與終端的區別體現在軟體上,在啟動 Linux 核心前傳入的命令列引數 "console=..." 就是用來指定具體的控制檯。控制檯在 tty 驅動初始化之前就可以使用了,最開始被用來顯示核心訊息。我們在計算機或者嵌入式系統中經常會看到 "console = ttySAC0"、"console = ttyS1" 等語句,實際就是選取某個虛擬或者物理終端作為控制檯與使用者互動。
當 tty 驅動初始化結束,使用者程式就可以通過 tty 驅動的介面來操作各類終端裝置,包括控制檯。而後面要介紹的應用程式操作介面也由此而來。
關於 Linux 串列埠程式設計的其他文章,可以移步至以下連結:
- 《Linux 串列埠程式設計<一> 一些背景》
- 《Linux 串列埠程式設計<二> 深入瞭解 termios》
- 《Linux 串列埠程式設計<三> 使用termios與API 進行串列埠程式開發》
- 《Linux 串列埠程式設計<四> 串列埠裝置程式開發》
如果有想法或者疑問可以給我郵件或者評論,覺得有用就點贊吧~:-D
相關文章
- Linux串列埠程式設計Linux串列埠程式設計
- Android之串列埠程式設計Android串列埠程式設計
- ROS串列埠程式設計學習筆記ROS串列埠程式設計筆記
- linux 串列埠通訊Linux串列埠
- Linux下串列埠監視Linux串列埠
- UART串列埠及Linux實現串列埠Linux
- linux串列埠命令列除錯Linux串列埠命令列除錯
- 沒有真實串列埠裝置時使用"虛擬串列埠驅動"除錯你的串列埠程式碼串列埠除錯
- 【linux學習--工具篇】串列埠除錯工具Linux串列埠除錯
- 串列埠blog串列埠
- 串列埠UART串列埠
- 帶內串列埠 在串列埠中輸入命令串列埠
- 串列埠資料抓取及串列埠通訊模擬串列埠
- 你真的瞭解串列埠嗎(示波器串列埠波形分析)串列埠
- java併發程式設計系列:java併發程式設計背景知識Java程式設計
- 串列埠通訊串列埠
- gdbserver連線Ubuntu除錯程式(使用串列埠)ServerUbuntu除錯串列埠
- 【Linux】 Linux網路程式設計Linux程式設計
- 【linux】系統呼叫版串列埠分析&原始碼實戰Linux串列埠原始碼
- linux程式和埠檢視Linux
- Linux jpeg程式設計Linux程式設計
- Linux Bash程式設計Linux程式設計
- QT實現串列埠助手中串列埠名的實時更新QT串列埠
- 【STM32】串列埠串列埠
- Android 串列埠通訊Android串列埠
- 串列埠小工具串列埠
- RHEL6.8程式單印表機串列埠檢查串列埠
- 程式碼隨想錄:設計連結串列
- 【程式碼隨想錄】二、連結串列:2、設計連結串列
- 程式設計的一些抽象核心程式設計抽象
- 一些程式設計題目的解析程式設計
- linux 下根據埠kill 程式Linux
- Linux之shell程式設計Linux程式設計
- Linux Shell程式設計(1)Linux程式設計
- Linux Shell程式設計(2)Linux程式設計
- Rust 程式設計,用連結串列實現棧Rust程式設計
- Linux單裝置多路USB串列埠的實現方法介紹Linux串列埠
- 【Linux】Linux系統程式設計入門Linux程式設計
- 11. 串列埠通訊串列埠