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串列埠程式設計
- Linux 串列埠程式設計Linux串列埠程式設計
- Linux 串列埠程式設計 串列埠裝置程式開發Linux串列埠程式設計
- Linux下串列埠程式設計基礎Linux串列埠程式設計
- Linux 串列埠程式設計 使用termios與API進行串列埠程式開發Linux串列埠程式設計iOSAPI
- POSIX 串列埠程式設計指南串列埠程式設計
- Linux 串列埠程式設計 深入瞭解 termiosLinux串列埠程式設計iOS
- Android之串列埠程式設計Android串列埠程式設計
- ROS串列埠程式設計學習筆記ROS串列埠程式設計筆記
- VC++串列埠通訊程式設計詳解C++串列埠程式設計
- Windows下的Win32串列埠程式設計WindowsWin32串列埠程式設計
- Linux下串列埠通訊詳解(下)讀寫串列埠及關閉串列埠Linux串列埠
- Linux下PCI轉串列埠卡及USB轉串列埠Linux串列埠
- linux 串列埠通訊Linux串列埠
- android串列埠程式Android串列埠
- VC++串列埠程式設計之簡訊應用開發(轉)C++串列埠程式設計
- UART串列埠及Linux實現串列埠Linux
- linux串列埠命令列除錯Linux串列埠命令列除錯
- 使用串列埠連線到Linux串列埠Linux
- 基於多串列埠ETH005裝置的Socket網路程式設計串列埠程式設計
- 沒有真實串列埠裝置時使用"虛擬串列埠驅動"除錯你的串列埠程式碼串列埠除錯
- 串列埠UART串列埠
- 帶內串列埠 在串列埠中輸入命令串列埠
- Linux串列埠程式收發16進位制資料錯誤Linux串列埠
- 串列埠資料抓取及串列埠通訊模擬串列埠
- 你真的瞭解串列埠嗎(示波器串列埠波形分析)串列埠
- tty,串列埠,控制檯與驅動程式串列埠
- C#串列埠通訊程式SerialPort類C#串列埠
- 串列埠流控串列埠
- 串列埠通訊串列埠
- 串列埠blog串列埠
- IBM串列埠線序以及串列埠線的做法(轉)IBM串列埠
- 【linux學習--工具篇】串列埠除錯工具Linux串列埠除錯
- gdbserver連線Ubuntu除錯程式(使用串列埠)ServerUbuntu除錯串列埠
- 序列通訊的基本原理及用MFC實現串列埠通訊程式設計 (轉)串列埠程式設計
- QT實現串列埠助手中串列埠名的實時更新QT串列埠
- 【STM32】串列埠串列埠
- 串列埠小工具串列埠