日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Linux 串口、usb转串口驱动分析(2-1) 【转】

發布時間:2023/12/13 综合教程 25 生活家
生活随笔 收集整理的這篇文章主要介紹了 Linux 串口、usb转串口驱动分析(2-1) 【转】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=26807463&id=4186851

Linux 串口、usb轉串口驅動分析1

內核版本:2.6.35.6 榮鵬140319

聲明:圖和個別段落(我做了小的修改)是直接從網上截取

目標:主要是想對Linux 串口、usb轉串口驅動框架有一個整體的把控,因此會忽略某些細節,同時里面涉及到的一些驅動基礎,比如字符設備驅動、平臺驅動等也不進行詳細說明原理。如果有任何錯誤地方,請指出,謝謝!

一、整體概述

linux下的串口或者usb轉串口驅動都是依賴linux內核提供的tty核心、tty線路規劃和tty驅動,所以牽涉到很多層次,之所以有這么多層次,肯定是有它們存在意義的。

舉例來說,像串口或者usb轉串口的驅動,最終可以確定的是以字符設備驅動提供給上層使用,于是tty核心層就對這部分通用的實現進行了封裝,但這不是最重要的,最重要的是tty核心層里同時實現了一種數據格式化機制,這就是tty線路規劃,這樣的好處是可以分別針對不同類設備的線路規劃,比如針對終端io的,比如針對網絡的ppp還有slip還有藍牙還有IrDA等,這些的實現不需要考慮底層硬件,也就是說這些串口到具體協議的轉換的實現與硬件相分離了,這就是tty核心及tty線路規劃存在的目地。

那為什么會有tty驅動層呢? 也許你覺得我們的串口驅動可以直接通過tty核心提供的功能就可以實現了。 這個確實是可以,但是linux內核因為要兼容世界上存在的各種串口設備,所以針對串口額外實現了一個serial核心層,針對usb轉串口額外實現了usb-serial核心層,它們就是所謂的tty驅動層。我們的串口或者usb轉串口實現就是與tty驅動層打交道,當然串口芯片或者usb轉串口芯片有很多種,所以不同的芯片都要有對應的驅動,但是它們都是基于tty驅動層實現,這個是可以肯定的。

所以,我們要寫串口驅動,最好還是對這些層次有些了解。

整體框架圖如下:

這圖是直接摘抄網上的。其實,我認為在tty驅動層下還應該有個具體的驅動,比如如果是8250串口控制器芯片,那么應該有個8250的驅動,然后才是硬件。

更準確的圖我認為如下圖所示:

更詳細的如下圖所示:


下面摘抄網上的

(1)、tty線程規程

以特殊的方式格式化從一個用戶或者硬件收到的數據,這種格式化常常采用一個協議轉換的形式,如虛擬終端、PPP、Bluetooth、Ir等。

(2)、tty設備發送數據流程

tty核心從一個用戶獲取將要發送給一個tty設備的數據,tty核心將數據傳遞給tty線路規程驅動,接著數據被傳遞到tty驅動,tty驅動將數據轉換為可以發送的硬件格式。

(3)、tty設備接收數據流程

從tty硬件接收到的數據向上交給tty驅動,進入tty線路規程驅動,再進入tty核心,在此被用戶獲取。盡管tty核心與tty之間的數據傳輸會經歷tty線路規程的轉換,但是tty驅動與tty核心之間也可以直接傳輸數據。

再摘抄2張網上的圖:

tty設備的數據流通圖:

總結

以上是生活随笔為你收集整理的Linux 串口、usb转串口驱动分析(2-1) 【转】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。