導航:首頁 > 操作系統 > linux設備驅動設備樹

linux設備驅動設備樹

發布時間:2022-08-19 11:26:36

linux設備樹到底是什麼該如何徹底理解

Linux這幾年發展迅猛,勢如破竹。 雖然內核 3.0版本,並沒有什麼重大的修改,不過,這已經預示著Linux將迎來一個新的時代。 《linux設備驅動程序》是基於2.6.10來寫的。《深入理解linux內核》是基於2.6.11來寫的。雖然2.6.x的內核,在主要內容上變化不大,不過已經有些顯得跟不上內核更迭的速度了。 目前內核方面寫的不錯的書籍中,最新的算是《深入Linux內核架構》了,一個德國人寫的。這本書是基於2.6.24寫的。這本書在國外是作為教材用的,個人覺得,從自學的角度上講,要比ULK更好,而且裡面與最新的內核更貼近,看起來更舒服一些。 《linux device drivers》英文第三版序言里有這樣一段話:「I'm excited by what I witness in the embedded arena, and I hope this text helps by doing more; but ideas are moving fast these days, and it's already time to plan for the fouth edition, and look for a fourth author to help.」 不難看懂,我就不翻譯了。從這里可以看出,作者們已經做好找第四位合作者寫第四版的准備了:) 萬事都是需要與時俱進的。所以,這兩本書都是會不斷更新的。否則,就只能說明一點,出版商發現有更好的書籍替代他們了:) 不管怎麼樣,希望這些大部頭的下一版的作者中,能看到中國開發者的名字~~

② linux的設備驅動一般分為幾類各有什麼特點

大致分為三類,字元驅動,塊設備驅動,網路設備驅動。
字元設備可以看成是用位元組流存取的文件

塊設備則可以看成是可以任意存取位元組數的字元設備,在應用上只是內核管理數據方式不同

網路設備可以是一個硬體設備,或者是軟體設備,他沒有相應的read write,它是面向流的一種特殊設備。

③ linux中內核使用設備樹時,驅動載入的時候,device的數據怎麼傳給驅動

linux設備樹驅動exynos4412怎麼寫
系統調用是操作系統內核和應用程序之間的介面,設備驅動程序是操作系統內核和機器硬體之間的介面。設備驅動程序為應用程序屏蔽了硬體的細節,這樣在應用程序看來,硬體設備只是一個設備文件,應用程序可以象操作普通文件一樣對硬體設備進行操作。設備驅動程序是內核的一部分,它完成以下的功能:
1、對設備初始化和釋放。
2、把數據從內核傳送到硬體和從硬體讀取數據。
3、讀取應用程序傳送給設備文件的數據和回送應用程序請求的數據。
4、檢測和處理設備出現的錯誤。
在Linux操作系統下有三類主要的設備文件類型,一是字元設備,二是塊設備,三是網路設備。字元設備和塊設備的主要區別是:在對字元設備發出讀/寫請求時,實際的硬體I/O一般就緊接著發生了,塊設備則不然,它利用一塊系統內存作緩沖區,當用戶進程對設備請求能滿足用戶的要求,就返回請求的數據,如果不能,就調用請求函數來進行實際的I/O操作。塊設備是主要針對磁碟等慢速設備設計的,以免耗費過多的CPU時間來等待。
已經提到,用戶進程是通過設備文件來與實際的硬體打交道。每個設備文件都都有其文件屬性(c/b),表示是字元設備還是塊設備?另外每個文件都有兩個設備號,第一個是主設備號,標識驅動程序,第二個是從設備號,標識使用同一個設備驅動程序的不同的硬體設備,比如有兩個軟盤,就可以用從設備號來區分他們。設備文件的的主設備號必須與設備驅動程序在登記時申請的主設備號一致,否則用戶進程將無法訪問到驅動程序。
最後必須提到的是,在用戶進程調用驅動程序時,系統進入核心態,這時不再是搶先式調度。也就是說,系統必須在你的驅動程序的子函數返回後才能進行其他的工作。如果你的驅動程序陷入死循環,不幸的是你只有重新啟動機器了,然後就是漫長的fsck。
讀/寫時,它首先察看緩沖區的內容,如果緩沖區的數據未被處理,則先處理其中的內容。

④ Linux的模型

Linux設備模型一、sysfs文件系統:sysfs文件系統是Linux2.6內核引入的,它被看成是與proc、devfs和devpty等同類別的文件系統,sysfs文件系統也是一個虛擬文件系統,它可以產生一個包括所有系統硬體的層級視圖,與提供進程和狀態信息的proc文件系統十分類似;sysfs文件系統把鏈接在系統上的所有設備和匯流排組織成一個分級的文件系統,它們可以由用戶空間存取,並向用戶空間導出內核數據結構以及它們的屬性等信息.sysfs的一個目的就是展示設備驅動模型中各個組件的層次關系,其頂級目錄包括:1、block:包含系統中所有的塊設備;2、devices:包含系統中所有的設備,並根據設備掛載的匯流排類型組織成層次關系結構;3、bus:包含系統中所有的匯流排類型;4、drivers:包含系統內核中所有已經注冊的設備驅動程序;5、class:包含系統中所有的設備類型;如,網卡設備、音效卡設備、輸入設備、輸出設備,等等;二、設備模型:從整體上描述,大概模型就如下圖所示:從圖中可以看出,Linux設備模型就是"匯流排、設備、驅動、類"這四個概念之前的相互關系;這也是Linux2.6內核抽象出來的用於管理系統中所有設備的模型圖;簡單地描述設備模型的層次關系如下:1、驅動核心中可以注冊多種類型的匯流排(bus_type);2、每一種類型的匯流排下面可以掛載許多設備(kset,device);3、每一種類型的匯流排可以使用很多設備驅動(kset,device_driver);4、每一個驅動程序可以管理一組設備;這種基本關系的建立源於實際系統中各種匯流排、設備、驅動、類結構的抽象;Linux設備模型中的匯流排、設備、驅動和類之間環環相扣的復雜關系可以滿足內核日益發展的的需要;對智能電源管理、熱插拔以及即插即用的支持要求也越來越高;

⑤ Linux網路設備驅動的結構

Linux網路設備驅動程序的體系結構從上到下可以劃分為4層,依次為網路協議介面層、網路設備介面層、提供實際功能的設備驅動功能層以及網路設備與媒介層,這4層的作用如下所示。
1)網路協議介面層向網路層協議提供統一的數據包收發介面,不論上層協議是ARP,還是IP,都通過dev_queue_xmit() 函數發送數據,並通過netif rx ()函數接收數據。這一層的存在使得上層協議獨立於具體的設備。
2)網路設備介面層向協議介面層提供統一的用於描述具體網路設備屬性和操作的結構體net device,該結構體是設備驅動功能層中各函數的容器。實際上,網路設備介面層從宏觀上規劃了具體操作硬體的設備驅動功能層的結構。
3)設備驅動功能層的各函數是網路設備介面層net_device數據結構的具體成員,是驅使網路設備硬體完成相應動作的程序,它通過hard_start_ xmit ()函數啟動發送操作,並通過網路設備上的中斷觸發接收操作。
4)網路設備與媒介層是完成數據包發送和接收的物理實體,包括網路適配器和具體的傳輸媒介,網路適配器被設備驅動功能層中的函數在物理上驅動。對於Linux系統而言,網路設備和媒介都可以是虛擬的。

⑥ linux gpio設備驅動在哪

設備樹有設備信息,gpio驅動可以根據設備樹的信息自己寫的

⑦ Linux網路設備驅動的具體結構

Linux網路設備驅動程序的體系結構從上到下可以劃分為4層,依次為網路協議介面層、網路設備介面層、提供實際功能的設備驅動功能層以及網路設備與媒介層,這4層的作用如下所示:
1)網路協議介面層向網路層協議提供統一的數據包收發介面,不論上層協議是ARP,還是IP,都通過dev_queue_xmit() 函數發送數據,並通過netif rx ()函數接收數據。這一層的存在使得上層協議獨立於具體的設備。
2)網路設備介面層向協議介面層提供統一的用於描述具體網路設備屬性和操作的結構體net device,該結構體是設備驅動功能層中各函數的容器。實際上,網路設備介面層從宏觀上規劃了具體操作硬體的設備驅動功能層的結構。
3)設備驅動功能層的各函數是網路設備介面層net_device數據結構的具體成員,是驅使網路設備硬體完成相應動作的程序,它通過hard_start_ xmit ()函數啟動發送操作,並通過網路設備上的中斷觸發接收操作。
4)網路設備與媒介層是完成數據包發送和接收的物理實體,包括網路適配器和具體的傳輸媒介,網路適配器被設備驅動功能層中的函數在物理上驅動。對於Linux系統而言,網路設備和媒介都可以是虛擬的。

⑧ linux驅動裡面怎麼讀取device-tree信息

如何編寫Linux設備驅動程序 回想學習Linux操作系統已經有近一年的時間了,前前後後,零零碎碎的一路學習過來,也該試著寫的東西了。也算是給自己能留下一點記憶和回憶吧!由於完全是自學的,以下內容若有不當之處,還請大家多指教。

⑨ linux 什麼時候加入設備樹

Linux and the Device Tree

Linux內核設備樹數據使用模型。

Open Firmware Device Tree (DT) 是一個數據結構,也是一種描述硬體的語言。准確地說,它是一種能被操作系統解析的描述硬體的語言,這樣操作系統就不需要把硬體平台的細節在代碼中寫死。

從結構上來說,DT是一個樹形結構,或者有名結點組成的非循環圖,結點可能包含任意數量的有名屬性,有名屬性又可以包含任意數量的數據。同樣存在一種機制,可以創建從一個結點到正常樹形結構之外的鏈接。

從概念上講,一套通用的使用方法,即bindings。Bindings定義了數據如何呈現在設備樹中,怎樣描述典型的硬體特性,包括數據匯流排,中斷線,GPIO連接以及外設等。

盡可能多的硬體被描述從而使得已經存在的bindings最大化地使用源代碼,但是由於屬性名和結點名是簡單字元串, 可以通過定義新結點和屬性的方式很方便地擴展已經存在的bindings或者創建一個新的binding。在沒有認真了解過已經存在的bindings的情況下,創建一個新的binding要慎之又慎。對於I2C匯流排,通常有兩種不同的,互不相容的bindings出現,就是因為新的binding創建時沒有研究I2C設備是如何在當前系統中被枚舉的。

1. 歷史

2. 數據模型
請參考Device Tree Usage章節
2.1 High Level View
必須要認識到的是,DT是一個描述硬體的數據結構。它並沒有什麼神奇的地方,也不能把所有硬體配置的問題都解決掉。它只是提供了一種語言,將硬體配置從Linux Kernel支持的board and device driver中提取出來。DT使得board和device變成數據驅動的,它們必須基於傳遞給內核的數據進行初始化,而不是像以前一樣採用hard coded的方式。

觀念上說,數據驅動平台初始化可以帶來較少的代碼重復率,使得單個內核映像能夠支持很多硬體平台。

Linux使用DT的三個主要原因:
1) 平台識別 (Platform Identification)
2) 實時配置 (Runtime Configuration)
3) 設備植入 (Device Population)

2.2 平台識別
第一且最重要的是,內核使用DT中的數據去識別特定機器。最完美的情況是,內核應該與特定硬體平台無關,因為所有硬體平台的細節都由設備樹來描述。然而,硬體平台並不是完美的,所以內核必須在早期初始化階段識別機器,這樣內核才有機會運行特定機器相關的初始化序列。

大多數情況下,機器識別是與設備樹無關的,內核通過機器的核心CPU或者SOC來選擇初始化代碼。以ARM平台為例,setup_arch()會調用setup_machine_fdt(),後者遍歷machine_desc鏈表,選擇最匹配設備樹數據的machine_desc結構體。它是通過查找設備樹根結點的compatible屬性並與machine_desc->dt_compat進行比較來決定哪一個machine_desc結構體是最適合的。

Compatible屬性包含一個有序的字元串列表,它以確切的機器名開始,緊跟著一個可選的board列表,從最匹配到其他匹配類型。以TI BeagleBoard的compatible屬性為例,BeagleBoard xM Board可能描述如下:
compatible = "ti,omap3-beagleboard", "ti,omap3450", "ti,omap3";
compatible = "ti,omap3-beagleboard-xm", "ti,omap3450", "ti,omap3";
在這里,」ti, omap3-beagleboard-xm」是最匹配的模型,"ti,omap3450"次之,"ti,omap3"再次之。

機敏的讀者可能指出,Beagle xM也可以聲明匹配"ti,omap3-beagleboard",但是要注意的是,板級層次上,兩個機器之間的變化比較大,很難確定是否兼容。從頂層上來看,寧可小心也不要去聲明一個board兼容另外一個。值得注意的情況是,當一個board承載另外一個,例如一個CPU附加在一個board上。(兩種CPU支持同一個board的情況)

⑩ linux 設備樹 從哪個版本開始

1、kernel最早加入設備樹的歷史得追溯到v2.6.23,從這個版本開始,在driver目錄下多了一個of目錄。當然,此時只是引入一些新想法而已。這距離linus大怒說出(2011年3月17日):this whole ARM thing is a f*cking pain in the ass,還早著。
2、於是從2011年3月開始,內核在PowerPC、ARM等體系裡正式打算使用設備樹。以ARM體系為例,加入設備樹的版本就是v3.1,可以在arch/arm/boot/目錄下看到dts目錄的出現。

閱讀全文

與linux設備驅動設備樹相關的資料

熱點內容
勾引閨蜜老公在電影院 瀏覽:553
神秘電影網頁鏈接 瀏覽:927
重生到一夫多妻的現代世界 瀏覽:438
彼時曾相伴為什麼看不了 瀏覽:721
漏的多的電影 瀏覽:239
李采譚合作的男演員 瀏覽:942
醫院雲伺服器采購 瀏覽:505
國產經典懷舊敵特老電影 瀏覽:901
有劇情有尺度大的電影 瀏覽:290
演算法所需達到的時間性能 瀏覽:323
圖片管理發布源碼 瀏覽:425
編程怎麼轉換中文 瀏覽:971
二手安卓手機為什麼要屏蔽升級 瀏覽:870
福昕pdf套件注冊碼 瀏覽:142
bitblock加密注意事項 瀏覽:782
海外建國類小說 瀏覽:708
看鬼片a鬼鬼片 瀏覽:269
轉世收母的小說 瀏覽:630
主角把媽媽親人都收入後宮的小說 瀏覽:62
電影小網站 瀏覽:84