色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux終端初始化和tty驅動框架

麥辣雞腿堡 ? 來源:嵌入式Linux系統開發 ? 作者:Jasonangel ? 2023-09-28 16:33 ? 次閱讀

initcall機制

注意上述流程,我們來理解一下 initcall 機制:

普通我們寫一個程序,想要它被調用,需要在主流程中調用這個函數,才算被調用。

那么這種方式如果放在 Linux 中,是難以想象的,我們自己寫的代碼要在多少個地方聲明。

而你如果采用initcall機制,意思就是說,你使用一個字符串聲明你的驅動初始化函數,那么所有的驅動初始化函數都存在內存中一個連續的段中,系統啟動以后,會從這個段的第一個函數開始,一個一個遍歷,進而一個一個調用,這就是initcall 機制。這就是為什么我們寫驅動只需要使用 module_init 聲明,編譯進去即可自動被調用的原因!!!

System.map

編譯后的內核根目錄 System.map 文件記載了所有的驅動加載順序,如果你不確定驅動的加載順序,在這里查看就可以,每次編譯 Linux 內核就會產生一個新的 System.map。

tty 驅動

我們不要把 tty 驅動和 串口驅動 弄混了,tty 驅動架構如下:

圖片

其中 tty driver 等價于我們普通寫的驅動,可以自己寫。

也就是說,在 tty 驅動框架主要有三層:tty core、tty line discipline、tty driver,另外最上層是用戶空間,最下層是硬件。

tty core 稱之為 tty 核心,主要作用是向用戶提供統一的接口

tty line discipline 稱之為 tty 線路規程,主要從上下兩層接收數據,并按照一定協議進行轉換,比如 ppp 或者藍牙協議,這樣你的tty 終端就不止可以用普通的串口,還可以通過其他協議訪問到我們的系統。比如手機鏈接 PCB 板子的 WiFi 接入系統控制終端,輸入 ls、cd等命令。這一層并不是必須的,你可以直接使用驅動和 tty core 進行通信,但一般這一層都會有。

tty driver 就是我們常說的串口驅動。

在 console_init 函數中,它做的兩件事,就是注冊 tty 線路規程,注冊 tty 驅動,tty 核心是包含在內核當中的。tty 線路規程和tty 驅動可以有很多個。

有的人會有疑問,為什么有了 tty 驅動了,還會有一個 tty 線路規程。得益于 Linux 模塊化的思想,這里主要是為了分層與隔離。tty驅動只和硬件相關,只解析基本的硬件信息,把硬件信息轉換成字符。所有的對字符的進一步處理包括加入藍牙協議傳輸,監控數據等都放在 tty 線路規程當中。這樣 tty
驅動是可以完美復用和移植的。

分享一張彭大佬的圖,本文我只講了概念,彭大佬講解過 tty 源碼:

圖片

這里只需要注意一點,在右下角,tty driver 是沒有 read 函數的,tty driver 層有 buffer,輸入的數據會存儲在buffer 中,被讀取。

原因很簡單,對于 tty 來說,輸入設備和輸出設備不是同一個設備,輸入設備是鍵盤,輸出設備是屏幕,這和普通的 IIC、SPI驅動同一個設備不一樣。因此在設計上 tty driver 沒有 read 函數。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 驅動
    +關注

    關注

    12

    文章

    1840

    瀏覽量

    85307
  • Linux
    +關注

    關注

    87

    文章

    11310

    瀏覽量

    209603
  • 框架
    +關注

    關注

    0

    文章

    403

    瀏覽量

    17500
  • 終端
    +關注

    關注

    1

    文章

    1136

    瀏覽量

    29906
收藏 人收藏

    評論

    相關推薦

    手機模塊初始化向導

    手機模塊初始化向導:為了剛好的對手機模塊進行初始化,所以把最基本的向導寫下來.本向導適用于本公司的西門子TC35I和華為GT9000模塊。一、在初始化手機模塊前,請先確定DT
    發表于 09-18 09:41 ?17次下載

    LINUX系統引導和初始化-LINUX內核解讀

    Linux 的系統引導和初始化 ----------Linux2.4.22內核解讀之一 一、 系統引導和初始化概述 相關代碼(引導扇區的程序及其輔助程序,以 x86體系為例): \
    發表于 11-03 22:31 ?53次下載

    RDA1846S初始化設置

    RDA1846S初始化設置RDA1846S初始化設置RDA1846S初始化設置
    發表于 01-15 17:08 ?0次下載

    UCOS_III_配置與初始化

    UCOS_III_配置與初始化
    發表于 12-20 22:53 ?5次下載

    HX711初始化程序

    這是HX711的初始化程序
    發表于 02-08 01:51 ?90次下載

    Linux內存初始化

    之前有幾篇博客詳細介紹了Xen的內存初始化,確實感覺這部分內容蠻復雜的。這兩天在看Linux內核啟動中內存的初始化,也是看的云里霧里的,想嘗試下邊看邊寫,在寫博客的過程中慢慢思考,最后也能把自己
    發表于 10-12 11:16 ?0次下載

    8253初始化程序分享_8253應用案例

    本文首先介紹了8253概念及8253各通道的工作方式,其次詳細介紹了8253初始化要求及編程,最后用一個例子介紹了8253的初始化程序。
    發表于 05-23 15:52 ?2.2w次閱讀
    8253<b class='flag-5'>初始化</b>程序分享_8253應用案例

    IIC總線初始化基本驅動參考程序應用代碼免費下載

    本文檔的主要內容詳細介紹的是IIC總線初始化基本驅動參考程序應用代碼免費下載。程序功能:為IIC總線的基本驅動程序(此程序沒有寫主函數,只是一些IIC必備的子函數)
    發表于 01-16 08:00 ?5次下載
    IIC總線<b class='flag-5'>初始化</b>基本<b class='flag-5'>驅動</b>參考程序應用代碼免費下載

    Linux內核初始化過程中的調用順序

    所有的__init函數在區段.initcall.init中還保存了一份函數指針,在初始化時內核會通過這些函數指針調用這些__init函數指針,并在整個初始化完成后,釋放整個init區段(包括.init.text,.initcall.init等)。
    發表于 05-12 08:40 ?1614次閱讀

    在51平臺下初始化文件的引入導致全局變量無法初始化的問題如何解決

    本文檔的主要內容詳細介紹的是在51平臺下初始化文件的引入導致全局變量無法初始化的問題如何解決。
    發表于 08-20 17:31 ?0次下載
    在51平臺下<b class='flag-5'>初始化</b>文件的引入導致全局變量無法<b class='flag-5'>初始化</b>的問題如何解決

    C++之初始化列表學習的總結

    類中可以使用初始化列表對成員進行初始化
    的頭像 發表于 12-24 17:39 ?854次閱讀

    Nand Flash驅動(實現初始化以及讀操作)

    Nand Flash驅動(實現初始化以及讀操作)
    發表于 12-02 12:36 ?11次下載
    Nand Flash<b class='flag-5'>驅動</b>(實現<b class='flag-5'>初始化</b>以及讀操作)

    tty驅動接口分析

    tty這個名稱源于電傳打字節的簡稱,在linux表示各種終端終端通常都跟硬件相對應。比如對應于輸入設備鍵盤鼠標,輸出設備顯示器的控制終端
    的頭像 發表于 07-14 12:21 ?1141次閱讀
    <b class='flag-5'>tty</b><b class='flag-5'>驅動</b>接口分析

    MSP430F5529硬件IIC驅動OLED(初始化使用的寄存器)

    MSP430F5529硬件IIC驅動OLED(初始化使用的寄存器)
    發表于 11-24 16:36 ?1次下載

    基于旋轉平移解耦框架的視覺慣性初始化方法

    精確和魯棒的初始化對于視覺慣性里程計(VIO)至關重要,因為不良的初始化會嚴重降低姿態精度。
    的頭像 發表于 11-01 10:16 ?364次閱讀
    基于旋轉平移解耦<b class='flag-5'>框架</b>的視覺慣性<b class='flag-5'>初始化</b>方法
    主站蜘蛛池模板: 钉钉女老师| 俄罗斯粗大猛烈18P| 饥渴的40岁熟妇完整版在线| 亚洲欧美日韩人成| 乱色欧美激惰| 国产精品一区二区四区| 吻嘴胸全身好爽床大全| 少妇高潮A视频| 4399的视频BD高清在线观看免费| 三级黄色在线看| 天天综合网网欲色| 多肉np一女多男高h爽文现代| 欧美大jiji| PORN白嫩内射合集| 亲女乱h文小兰第一次| 扒开她的黑森林让我添动态图| 欧美精品一区二区在线电影| 国产电影三级午夜a影院| 强奸美女老师| 东莞桑拿美女| 无码任你躁久久久久久久 | 蜜芽tv在线观看免费网站| 中文字幕无码A片久久| 国产精品成人不卡在线观看| 日韩av国产av欧美天堂社区| 动漫美女脱小内内露尿口| 天美传媒在线观看免费完整版 | 91免费永久在线地址| 伦理片 a在线线版韩国| 99视频偷窥在线精品国自产拍| 欧美大jiji| 国产成人国产在线观看入口| 午夜毛片在线观看| 久久国产高清视频| 99re6在线视频国产精品欧美| 青青草在现线免费观看| 国产成人免费视频| 亚洲三级视频在线| 男人国产AV天堂WWW麻豆| 亚洲日本va中文字幕久久| 快穿女主有名器的H纯肉黄暴拉文|