一文帶你走進(jìn)設(shè)備驅(qū)動(dòng)模型與sysfs
設(shè)備驅(qū)動(dòng)模型與sysfs
Linux在2.6版本引入了設(shè)備驅(qū)動(dòng)模型,設(shè)備驅(qū)動(dòng)模型負(fù)責(zé)統(tǒng)一實(shí)現(xiàn)和維護(hù)一些特性,諸如:熱插拔、對(duì)象生命周期、用戶空間和驅(qū)動(dòng)空間的交互等基礎(chǔ)設(shè)施
1.設(shè)備驅(qū)動(dòng)模型基本概念
設(shè)備驅(qū)動(dòng)模型主要包含:類(class)、總線(bus)、設(shè)備(device)、驅(qū)動(dòng)(driver),它們的本質(zhì)都是內(nèi)核中的幾種數(shù)據(jù)結(jié)構(gòu)的“實(shí)例”
類的本質(zhì)是class結(jié)構(gòu)體類型,各種不同的類其實(shí)就是class的各種實(shí)例 總線的本質(zhì)是bus_type結(jié)構(gòu)體類型,各種不同的總線其實(shí)就是bus_type的各種實(shí)例 設(shè)備的本質(zhì)是device結(jié)構(gòu)體類型,各種不同的設(shè)備其實(shí)就是device的各種實(shí)例 驅(qū)動(dòng)的本質(zhì)是device_driver結(jié)構(gòu)體類型,各種不同的驅(qū)動(dòng)其實(shí)就是device_driver的各種實(shí)例
2.sysfs基本概念
sysfs其實(shí)就是/sys目錄,其主要作用就是:展示設(shè)備驅(qū)動(dòng)模型中各組件的層次關(guān)系,并將各組件的本體——內(nèi)核中的數(shù)據(jù)結(jié)構(gòu)以文件形式呈現(xiàn),方便用戶層查看及操作
【文章福利】小編推薦自己的Linux內(nèi)核技術(shù)交流群:【891587639】整理了一些個(gè)人覺(jué)得比較好的學(xué)習(xí)書(shū)籍、視頻資料共享在群文件里面,有需要的可以自行添加哦!?。。ê曨l教程、電子書(shū)、實(shí)戰(zhàn)項(xiàng)目及代碼)? ? ??


3./sys目錄結(jié)構(gòu)與設(shè)備驅(qū)動(dòng)模型
/sys目錄結(jié)構(gòu)很好的展示了驅(qū)動(dòng)設(shè)備模型,如圖:

注意:同一個(gè)設(shè)備可能在/sys中存在多個(gè)設(shè)備文件,比如一顆led的設(shè)備文件可能在/sys/bus/platform/devices/led1,同時(shí)還有一個(gè)在/sys/class/leds/led1。雖然他們都是同一顆led的設(shè)備文件,但是他們的來(lái)源、機(jī)制、原理都是不同的,不能混為一談 4.各組件的特性與聯(lián)系 kobject:設(shè)備驅(qū)動(dòng)模型各實(shí)例的最基本單元,提供一些公用型服務(wù)如: 提供該實(shí)例在sysfs中的操作方法(show和store);提供在sysfs中以文件形式存在的屬性,其實(shí)就是應(yīng)用接口;提供各個(gè)實(shí)例的層次架構(gòu),讓sysfs中弄出目錄結(jié)構(gòu)。設(shè)備驅(qū)動(dòng)模型中每個(gè)實(shí)例內(nèi)部都會(huì)包含一個(gè)kobject 總線、設(shè)備、驅(qū)動(dòng),這三者有著密切的聯(lián)系。在內(nèi)核中,設(shè)備和驅(qū)動(dòng)是分開(kāi)注冊(cè)的,注冊(cè) 設(shè)備的時(shí)候,并不需要驅(qū)動(dòng)已經(jīng)存在,而驅(qū)動(dòng)被注冊(cè)的時(shí)候,也不需要對(duì)應(yīng)的設(shè)備已經(jīng)被注冊(cè)。而總線就是連接設(shè)備和驅(qū)動(dòng)之間的紐帶,如圖:

5.為什么要讓總線匹配驅(qū)動(dòng)和設(shè)備?
這么做是為了讓算法和數(shù)據(jù)分離,驅(qū)動(dòng)源碼中不攜帶數(shù)據(jù),只負(fù)責(zé)算法(對(duì)硬件的操作方法);而設(shè)備則負(fù)責(zé)攜帶硬件信息。這樣最大程度保持驅(qū)動(dòng)的獨(dú)立性和適應(yīng)性,并且可以實(shí)現(xiàn)一個(gè)驅(qū)動(dòng)對(duì)應(yīng)多個(gè)設(shè)備
- - 內(nèi)核技術(shù)中文網(wǎng) - 構(gòu)建全國(guó)最權(quán)威的內(nèi)核技術(shù)交流分享論壇 (0voice.com)
轉(zhuǎn)載地址:一文帶你走進(jìn)設(shè)備驅(qū)動(dòng)模型與sysfs - 圈點(diǎn) - 內(nèi)核技術(shù)中文網(wǎng) - 構(gòu)建全國(guó)最權(quán)威的內(nèi)核技術(shù)交流分享論壇 (0voice.com)
