五月天青色头像情侣网名,国产亚洲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)遵守國家法律
长寿区| 互助| 霞浦县| 灌云县| 雅江县| 惠来县| 嘉黎县| 平度市| 盐亭县| 竹北市| 南投市| 万盛区| 丘北县| 吉隆县| 巍山| 沙河市| 神农架林区| 武汉市| 易门县| 深圳市| 上林县| 兴安县| 咸宁市| 蒙城县| 青田县| 连云港市| 奇台县| 灵川县| 石林| 和田县| 旬阳县| 洛南县| 南阳市| 深泽县| 绍兴县| 盐城市| 台北市| 五寨县| 鄄城县| 湖南省| 红安县|