五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

硬件信息在內(nèi)核驅(qū)動(dòng)中的傳遞方法(平臺(tái)設(shè)備)

2023-03-01 16:52 作者:秋名山西  | 我要投稿

內(nèi)核驅(qū)動(dòng)模型重要的三個(gè)結(jié)構(gòu)體

struct device

struct device_driver

struct bus_type

詳細(xì)內(nèi)容放在末尾。

硬件信息在內(nèi)核驅(qū)動(dòng)中的傳遞方法(平臺(tái)設(shè)備)

對(duì)于linux設(shè)備驅(qū)動(dòng)模型來說,所有設(shè)備和驅(qū)動(dòng)都掛接在總線上。編程者需要通過內(nèi)核提供的struct device結(jié)構(gòu)體告訴內(nèi)核,外設(shè)工作所需要的資源,例如gpio引腳、中斷、時(shí)鐘等。然后通過填充內(nèi)核提供的struct device_driver結(jié)構(gòu)體,完成相關(guān)資源的申請(qǐng)并對(duì)外設(shè)進(jìn)行初始化,然后為應(yīng)用程序提供操作設(shè)備的方法,包括打開、關(guān)閉、讀寫等操作。

如果遇到一個(gè)新設(shè)備,我們發(fā)現(xiàn)內(nèi)核設(shè)備驅(qū)動(dòng)模型提供的struct device和struct device_driver結(jié)構(gòu)體不能完全滿足我們的需求,這時(shí)可以自行定義新結(jié)構(gòu)體, 將struct device和struct device_driver嵌入其中,用于描述通用信息,不同的信息再額外添加,這樣做的好處是我們新添加的結(jié)構(gòu)體也可以納入設(shè)備驅(qū)動(dòng)模型中進(jìn)行管理,例如struct i2c_driver、struct platform_device等。而對(duì)于platform設(shè)備驅(qū)動(dòng)來說,外設(shè)的的配置信息需要傳給內(nèi)核的struct device,struct device中定義了專門的指針void *platform_data,用來指向存儲(chǔ)外設(shè)備信息的結(jié)構(gòu)體。以便在適合的時(shí)候被驅(qū)動(dòng)讀取使用。我們可以看出,指針void *platform_data并沒有被指定相應(yīng)的類型,也就是說可以根據(jù)不同的設(shè)備,讓其指向struct xxxx_platform_data,該結(jié)構(gòu)體可以由不同的驅(qū)動(dòng)框架提供。例如gpio_led_platform,i2c_gpio_platform_data;

詳細(xì)代碼:


硬件信息在內(nèi)核驅(qū)動(dòng)中的傳遞方法(平臺(tái)設(shè)備)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
宜城市| 拜泉县| 孟连| 金塔县| 镇雄县| 霍城县| 苍溪县| 桐乡市| 承德市| 罗田县| 黔东| 无极县| 榆中县| 会同县| 肥乡县| 五莲县| 汕尾市| 石景山区| 卫辉市| 隆昌县| 包头市| 文昌市| 榆树市| 民县| 玛多县| 道真| 惠水县| 巍山| 和政县| 密云县| 游戏| 博乐市| 孝昌县| 敦化市| 彰武县| 吉首市| 武清区| 兴宁市| 新丰县| 沁阳市| 井研县|