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

歡迎光臨散文網(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)遵守國家法律
临潭县| 米泉市| 平遥县| 曲阳县| 弋阳县| 漾濞| 定日县| 玉门市| 称多县| 枞阳县| 邹平县| 象山县| 博野县| 丽水市| 舒城县| 南溪县| 乌鲁木齐市| 四子王旗| 南陵县| 博野县| 临泽县| 大悟县| 治多县| 南投市| 浠水县| 汶上县| 龙江县| 彭阳县| 绥滨县| 凤城市| 中超| 姚安县| 永嘉县| 扎赉特旗| 桃园市| 祥云县| 荔浦县| 莲花县| 洛川县| 泗洪县| 萨迦县|