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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux设备驱动模型1——简介和底层架构

發(fā)布時間:2023/12/20 linux 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux设备驱动模型1——简介和底层架构 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

以下內(nèi)容源于朱有鵬《物聯(lián)網(wǎng)大講堂》課程的學習整理,如有侵權,請告知刪除。


一、linux設備驅動模型簡介

1、什么是設備驅動模型?

(1)類class、總線bus、設備device、驅動driver;

  • 分別對應四個結構體,用來表述這四個概念。

(2)kobject(結構體)和對象生命周期

  • 高度抽象的結構體,表示內(nèi)核的一個總的父類。

(3)sysfs

(4)udev

2、為什么需要設備驅動模型?

  • 早期內(nèi)核(2.4之前)沒有統(tǒng)一的設備驅動模型,但照樣可以用(那時候設備比較少);
  • 2.6版本中正式引入設備驅動模型,目的是在設備越來越多,功耗要求等新特性要求的情況下讓驅動體系更易用、更優(yōu)秀。
  • 設備驅動模型負責統(tǒng)一實現(xiàn)和維護一些特性,諸如:電源管理、熱插拔、對象生命周期、用戶空間和驅動空間的交互等基礎設施
  • 設備驅動模型目的:簡化驅動程序編寫,但是客觀上設備驅動模型本身設計和實現(xiàn)很復雜。

3、驅動開發(fā)的2個點

  • 驅動源碼本身編寫、調(diào)試,重點在于對硬件的了解。
  • 驅動什么時候被安裝、驅動中的函數(shù)什么時候被調(diào)用,怎樣被調(diào)用(比如probe()函數(shù)還是直接調(diào)用?)。之前是寫應用程序來安裝,現(xiàn)在希望自動安裝、卸載(熱插拔),這些跟硬件無關,完全和設備驅動模型有關。


二、設備驅動模型的底層架構

三個結構體

1、kobject


(1)定義在linux/kobject.h中,是最基本的結構體,被其他結構體作為元素。

(2)各種對象最基本單元,提供一些公用型服務如

  • 對象引用計數(shù)(引用計數(shù)為0時,可以釋放,生命周期結束);
  • 維護對象鏈表(因此可以遍歷);
  • 對象上鎖(占用對象資源,不被其他占用);
  • 對用戶空間的表示;

(3)設備驅動模型中的各種對象其內(nèi)部都會包含一個kobject(作為元素)

  • 因此各對象可以使用kobject所提供的功能。
  • 地位相當于面向對象體系架構中的總基類。

2、kobj_type



(1)很多書中簡稱為ktype,每一個kobject都需要綁定(即用一個指針指向,而不是作為子元素)一個ktype來提供相應的功能;

(2)關鍵點1:sysfs_ops,提供該對象在sysfs中的操作方法(show和store);

(3)關鍵點2:attribute,提供在sysfs中以文件形式存在的屬性,其實就是應用接口;

(4)release函數(shù),查看引用計數(shù),去釋放對象所占用的內(nèi)存。

(5)總結:提供屬性文件,提供/sys/……操作方法

3、kset


(1)kset的主要作用是做頂層kobject的容器類。

(2)kset的主要目的是將各個kobject(代表著各個對象)組織出目錄層次架構。

(3)可以認為kset就是為了在sysfs中弄出目錄,從而讓(設備驅動模型中的)多個對象能夠有層次有邏輯性的組織在一起。


總而言之,以上三個內(nèi)容是/sys/下所有的內(nèi)容的實現(xiàn)機制。包括目錄的組織,操作方法,數(shù)據(jù)結構等。



總結

以上是生活随笔為你收集整理的Linux设备驱动模型1——简介和底层架构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。