在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux終端初始化和tty驅(qū)動(dòng)框架

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

initcall機(jī)制

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

普通我們寫一個(gè)程序,想要它被調(diào)用,需要在主流程中調(diào)用這個(gè)函數(shù),才算被調(diào)用。

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

而你如果采用initcall機(jī)制,意思就是說,你使用一個(gè)字符串聲明你的驅(qū)動(dòng)初始化函數(shù),那么所有的驅(qū)動(dòng)初始化函數(shù)都存在內(nèi)存中一個(gè)連續(xù)的段中,系統(tǒng)啟動(dòng)以后,會(huì)從這個(gè)段的第一個(gè)函數(shù)開始,一個(gè)一個(gè)遍歷,進(jìn)而一個(gè)一個(gè)調(diào)用,這就是initcall 機(jī)制。這就是為什么我們寫驅(qū)動(dòng)只需要使用 module_init 聲明,編譯進(jìn)去即可自動(dòng)被調(diào)用的原因!!!

System.map

編譯后的內(nèi)核根目錄 System.map 文件記載了所有的驅(qū)動(dòng)加載順序,如果你不確定驅(qū)動(dòng)的加載順序,在這里查看就可以,每次編譯 Linux 內(nèi)核就會(huì)產(chǎn)生一個(gè)新的 System.map。

tty 驅(qū)動(dòng)

我們不要把 tty 驅(qū)動(dòng)和 串口驅(qū)動(dòng) 弄混了,tty 驅(qū)動(dòng)架構(gòu)如下:

圖片

其中 tty driver 等價(jià)于我們普通寫的驅(qū)動(dòng),可以自己寫。

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

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

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

tty driver 就是我們常說的串口驅(qū)動(dòng)。

在 console_init 函數(shù)中,它做的兩件事,就是注冊 tty 線路規(guī)程,注冊 tty 驅(qū)動(dòng),tty 核心是包含在內(nèi)核當(dāng)中的。tty 線路規(guī)程和tty 驅(qū)動(dòng)可以有很多個(gè)。

有的人會(huì)有疑問,為什么有了 tty 驅(qū)動(dòng)了,還會(huì)有一個(gè) tty 線路規(guī)程。得益于 Linux 模塊化的思想,這里主要是為了分層與隔離。tty驅(qū)動(dòng)只和硬件相關(guān),只解析基本的硬件信息,把硬件信息轉(zhuǎn)換成字符。所有的對字符的進(jìn)一步處理包括加入藍(lán)牙協(xié)議傳輸,監(jiān)控?cái)?shù)據(jù)等都放在 tty 線路規(guī)程當(dāng)中。這樣 tty
驅(qū)動(dòng)是可以完美復(fù)用和移植的。

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

圖片

這里只需要注意一點(diǎn),在右下角,tty driver 是沒有 read 函數(shù)的,tty driver 層有 buffer,輸入的數(shù)據(jù)會(huì)存儲(chǔ)在buffer 中,被讀取。

原因很簡單,對于 tty 來說,輸入設(shè)備和輸出設(shè)備不是同一個(gè)設(shè)備,輸入設(shè)備是鍵盤,輸出設(shè)備是屏幕,這和普通的 IIC、SPI驅(qū)動(dòng)同一個(gè)設(shè)備不一樣。因此在設(shè)計(jì)上 tty driver 沒有 read 函數(shù)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 驅(qū)動(dòng)
    +關(guān)注

    關(guān)注

    12

    文章

    1878

    瀏覽量

    86303
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11412

    瀏覽量

    212247
  • 框架
    +關(guān)注

    關(guān)注

    0

    文章

    404

    瀏覽量

    17721
  • 終端
    +關(guān)注

    關(guān)注

    1

    文章

    1177

    瀏覽量

    30476
收藏 人收藏

    評論

    相關(guān)推薦

    手機(jī)模塊初始化向?qū)?/a>

    手機(jī)模塊初始化向?qū)?為了剛好的對手機(jī)模塊進(jìn)行初始化,所以把最基本的向?qū)懴聛?本向?qū)нm用于本公司的西門子TC35I和華為GT9000模塊。一、在初始化手機(jī)模塊前,請先確定DT
    發(fā)表于 09-18 09:41 ?17次下載

    LINUX系統(tǒng)引導(dǎo)和初始化-LINUX內(nèi)核解讀

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

    RDA1846S初始化設(shè)置

    RDA1846S初始化設(shè)置RDA1846S初始化設(shè)置RDA1846S初始化設(shè)置
    發(fā)表于 01-15 17:08 ?0次下載

    UCOS_III_配置與初始化

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

    HX711初始化程序

    這是HX711的初始化程序
    發(fā)表于 02-08 01:51 ?92次下載

    Linux內(nèi)存初始化

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

    8253初始化程序分享_8253應(yīng)用案例

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

    IIC總線初始化基本驅(qū)動(dòng)參考程序應(yīng)用代碼免費(fèi)下載

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

    Linux內(nèi)核初始化過程中的調(diào)用順序

    所有的__init函數(shù)在區(qū)段.initcall.init中還保存了一份函數(shù)指針,在初始化時(shí)內(nèi)核會(huì)通過這些函數(shù)指針調(diào)用這些__init函數(shù)指針,并在整個(gè)初始化完成后,釋放整個(gè)init區(qū)段(包括.init.text,.initcall.init等)。
    發(fā)表于 05-12 08:40 ?1715次閱讀

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

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

    C++之初始化列表學(xué)習(xí)的總結(jié)

    類中可以使用初始化列表對成員進(jìn)行初始化
    的頭像 發(fā)表于 12-24 17:39 ?1001次閱讀

    Nand Flash驅(qū)動(dòng)(實(shí)現(xiàn)初始化以及讀操作)

    Nand Flash驅(qū)動(dòng)(實(shí)現(xiàn)初始化以及讀操作)
    發(fā)表于 12-02 12:36 ?11次下載
    Nand Flash<b class='flag-5'>驅(qū)動(dòng)</b>(實(shí)現(xiàn)<b class='flag-5'>初始化</b>以及讀操作)

    tty驅(qū)動(dòng)接口分析

    tty這個(gè)名稱源于電傳打字節(jié)的簡稱,在linux表示各種終端終端通常都跟硬件相對應(yīng)。比如對應(yīng)于輸入設(shè)備鍵盤鼠標(biāo),輸出設(shè)備顯示器的控制終端
    的頭像 發(fā)表于 07-14 12:21 ?1361次閱讀
    <b class='flag-5'>tty</b><b class='flag-5'>驅(qū)動(dòng)</b>接口分析

    MSP430F5529硬件IIC驅(qū)動(dòng)OLED(初始化使用的寄存器)

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

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

    精確和魯棒的初始化對于視覺慣性里程計(jì)(VIO)至關(guān)重要,因?yàn)椴涣嫉?b class='flag-5'>初始化會(huì)嚴(yán)重降低姿態(tài)精度。
    的頭像 發(fā)表于 11-01 10:16 ?755次閱讀
    基于旋轉(zhuǎn)平移解耦<b class='flag-5'>框架</b>的視覺慣性<b class='flag-5'>初始化</b>方法
    主站蜘蛛池模板: 国产欧美一区二区三区观看 | 亚洲国产精品网站久久 | 午夜刺激爽爽视频免费观看 | 欲香欲色| 狠狠色依依成人婷婷九月 | 国产papa| 日本日本69xxxx | 亚洲国产成+人+综合 | 18毛片| 一区二区高清在线观看 | 很黄很色的网站 | 九九热在线免费观看 | 国产在线一区二区三区四区 | 亚洲综合激情九月婷婷 | 一区二区三区四区在线免费观看 | www色在线 | 中国免费黄色片 | 日本jlzz | 欧洲另类一二三四区 | 欧美人与zoxxxx另类9 | 欧美在线观看视频一区 | 中文字幕佐山爱一区二区免费 | 一级视频在线免费观看 | www.亚洲成在线| 8888四色奇米在线观看不卡 | 日日干干| 在线精品一区二区三区 | 亚洲第一区精品日韩在线播放 | 七月婷婷在线视频综合 | 日韩a毛片免费全部播放完整 | 老师我好爽再深一点好大 | 久久手机免费视频 | 国产综合视频在线观看 | 高清性色生活片欧美在线 | 日本h视频在线 | 国产伦精品一区二区三区 | 99 久久99久久精品免观看 | va天堂| 特黄aaaaaa久久片 | 18视频网站在线观看 | 一区不卡视频 |