国产三级农村妇女在线,国产精品毛片a∨一区二区三区,国产乱子伦视频大全,国产精品色拉拉,国产欧美日韩一区二区三区,

首頁 > 技術 > Linux

linux中platform是什么意思

Linux 2022-07-14 21:43:59

Linux中,platform是一個虛擬總線,與真實的“spi/sdio/usb/pcie”等總線對應;platform能夠把硬件和軟件分離出來,platform所描述的資源有一個共同點是在CPU的總線上直接取址,平臺設備會分到一個名稱以及一系列諸如地址和中斷請求號之類的資源。

教程操作環(huán)境:linux7.3系統(tǒng)、Dell G3電腦。

linux中platform是什么意思

platform為虛擬總線,與真實的spi/sdio/usb/pcie等總線對應

邏輯總線的的一個重要功能是發(fā)現(xiàn)設備并且找到合適的驅(qū)動以操作這個設備。

platform總線是一種虛擬的邏輯總線,滿足邏輯互聯(lián)功能。為了統(tǒng)一管理設備,platform可以把物理上不存在總線的一類設備,用平臺總線統(tǒng)一把它們管理起來。

常見的總線如USB,SPI,UART,PCI,I2S等總線,是在物理上實實在在存在的總線。Linux系統(tǒng)為這類總線設計了一種統(tǒng)一管理它們的方法,即bus。同時也為在物理上沒有總線的設備也統(tǒng)一設計了platform總線,所以Linux內(nèi)核設計者就設計了platform總線,也就是說,plarform 總線就是為了SoC內(nèi)部設備在物理上沒有總線的設備設計的,它統(tǒng)一歸屬bus總線一類。

這樣做的好處是,設備(device)端代碼的編寫者只關心具體的硬件部分,設備共性的部分(穩(wěn)定不變的部分)被內(nèi)核設計者完成了,這樣降低了驅(qū)動編寫的難度。

通過platform總線,可以將設備屬性(也叫數(shù)據(jù))和驅(qū)動分離,這樣可以使用相同的驅(qū)動支持同一功能核心硬件的不同設備。這樣避免了一個設備就需要一個驅(qū)動的現(xiàn)象,降低了重復性勞動。

擴展知識

platform平臺總線相關定義

platform平臺總線相關的對象定義在文件 drivers/base/platform.c中。這個文件中實現(xiàn)了平臺總線對象和對象操作方法方面的內(nèi)容。

兩個重要的數(shù)據(jù)結(jié)構體

1、platform_driver

這是內(nèi)嵌一個device_driver 的結(jié)構體對象,其中定義了操作對象的方法。

2、platform_device

它是一個內(nèi)嵌了device結(jié)構體對象,其中定義了設備描述資源的屬性。

具體對象定義如下:

1、platform_driver 對象定義

struct platform_driver 
{
int (*probe)(struct platform_device *);     //探測函數(shù),安裝設備,初始化設備,并且判斷是否能成功(初始化成功,通訊成功等等)
int (*remove)(struct platform_device *);    //從內(nèi)核中刪除這個設備
void (*shutdown)(struct platform_device *); // 關閉設備
int (*suspend)(struct platform_device *, pm_message_t state);  //掛起
int (*resume)(struct platform_device *);    //喚醒
struct device_driver driver;          //驅(qū)動的通用屬性
const struct platform_device_id *id_table; //設備ID表
};

platform_device對象對定義:

struct platform_device 
{
const char* name;      //平臺總線中設備的名字,在平臺總線下有多個設備,每個設備都有自己的名稱
intid;              //設備的排序
struct devicedev;     //所有設備通用的屬性
u32num_resources;    //設備資源,如IO等一些外設等的個數(shù)
struct resource* resource; //設備資源的首地址,和上面的個數(shù)num_resources一起構成一個數(shù)組來表示這個資源
const struct platform_device_id*id_entry;  //設備ID表,表示同一種類型的幾個設備的ID號,數(shù)組表示。
struct pdev_archdataarchdata; /* arch specific additions *///用戶自定義數(shù)據(jù),擴展數(shù)據(jù)
};

注冊平臺總線驅(qū)動的函數(shù):

int platform_driver_register(struct platform_driver *drv)

注冊平臺總線設備的函數(shù):

int platform_device_register(struct platform_device *pdev)

推薦學習:Linux視頻教程

以上就是linux中platform是什么意思的詳細內(nèi)容,更多請關注其它相關文章!

TAg

加載中~

本網(wǎng)站LOGO受版權及商標保護,版權登記號:國作登字-2022-F-10126915,未經(jīng)湖南木星科技官方許可,嚴禁使用。
Copyright ? 2012-2022 湖南木星科技有限公司(木星網(wǎng))版權所有
轉(zhuǎn)載內(nèi)容版權歸作者及來源網(wǎng)站所有,本站原創(chuàng)內(nèi)容轉(zhuǎn)載請注明來源,商業(yè)媒體及紙媒請先聯(lián)系:aishangyiwan@126.com

工信部備案號:湘ICP備19012813號-5