最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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)遵守國家法律
同德县| 綦江县| 道孚县| 宝丰县| 万年县| 民乐县| 本溪市| 简阳市| 利津县| 无棣县| 鹿泉市| 玉树县| 大姚县| 邵武市| 曲水县| 巴彦淖尔市| 交城县| 南澳县| 柳江县| 广汉市| 阳高县| 平武县| 拉孜县| 平顶山市| 醴陵市| 当阳市| 望江县| 平江县| 西昌市| 镇赉县| 公主岭市| 合肥市| 禹州市| 锡林浩特市| 思茅市| 邵武市| 蓝山县| 香港| 天全县| 德阳市| 马关县|