<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Linux驅動(dòng)中的platform

Linux驅動(dòng)中的platform

作者: 時(shí)間:2016-10-08 來(lái)源:網(wǎng)絡(luò ) 收藏

從Linux2.6內核起,引入一套新的驅動(dòng)管理和注冊機制:platform_device 和 platform_driver 。Linux 中大部分的設備驅動(dòng),都可以使用這套機制,設備用 platform_device 表示;驅動(dòng)用 platform_driver 進(jìn)行注冊。

本文引用地址:http://dyxdggzs.com/article/201610/305944.htm

Linux platform driver 機制和傳統的device driver機制(即:通過(guò) driver_register 函數進(jìn)行注冊)相比,一個(gè)十分明顯的優(yōu)勢在于platform機制將設備本身的資源注冊進(jìn)內核,由內核統一管理,在驅動(dòng)程序中用使用這些資源時(shí),通過(guò)platform device提供的標準接口進(jìn)行申請并使用。

platform 是一個(gè)虛擬的地址總線(xiàn),相比 PCI、USB,它主要用于描述SOC上的片上資源。platform 所描述的資源有一個(gè)共同點(diǎn):在CPU 的總線(xiàn)上直接取址。平臺設備會(huì )分到一個(gè)名稱(chēng)(用在驅動(dòng)綁定中)以及一系列諸如地址和中斷請求號(IRQ)之類(lèi)的資源。

platform 總線(xiàn)下驅動(dòng)的開(kāi)發(fā)步驟是:

1、 設備

需要實(shí)現的結構體是:platform_device 。

1)初始化 resource 結構變量

2)初始化 platform_device 結構變量

3)向系統注冊設備:platform_device_register。

以上三步,必須在設備驅動(dòng)加載前完成,即執行platform_driver_register()之前,原因是驅動(dòng)注冊時(shí)需要匹配內核中所有已注冊的設備名。platform_driver_register()中添加device到內核最終還是調用的device_add函數。Platform_device_add和device_add最主要的區別是多了一步insert_resource(p, r),即將platform資源(resource)添加進(jìn)內核,由內核統一管理。

2、驅動(dòng)

驅動(dòng)注冊中,需要實(shí)現的結構體是:platform_driver 。

在驅動(dòng)程序的初始化函數中,調用了platform_driver_register()注冊 platform_driver 。需要注意的是:platform_driver 和 platform_device 中的 name 變量的值必須是相同的 。這樣在 platform_driver_register() 注冊時(shí),會(huì )將當前注冊的 platform_driver 中的 name 變量的值和已注冊的所有 platform_device 中的 name 變量的值進(jìn)行比較,只有找到具有相同名稱(chēng)的 platform_device 才能注冊成功。當注冊成功時(shí),會(huì )調用 platform_driver 結構元素 probe 函數指針。

platform_driver_register()的注冊過(guò)程:

1 platform_driver_register(s3c2410fb_driver)

2 driver_register(drv->driver)

3 bus_add_driver(drv)

4 driver_attach(drv)

5 bus_for_each_dev(drv->bus, NULL, drv, __driver_attach)

6 __driver_attach(struct device * dev, void * data)

7 driver_probe_device(drv, dev)

8 really_probe(dev, drv)

在really_probe()中:為設備指派管理該設備的驅動(dòng):dev->driver = drv, 調用probe()函數初始化設備:drv->probe(dev)



關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>