Linux驅動中的platform

來源:互聯網
上載者:User

Linux驅動中的platform

      從Linux2.6核心起,引入一套新的驅動管理和註冊機制:platform_device 和 platform_driver 。Linux 中大部分的裝置驅動,都可以使用這套機制,裝置用 platform_device 表示;驅動用 platform_driver 進行註冊。

       Linux platform driver 機制和傳統的device driver機制(即:通過 driver_register 函數進行註冊)相比,一個十分明顯的優勢在於platform機制將裝置本身的資源註冊進核心,由核心統一管理,在驅動程式中用使用這些資源時,通過platform device提供的標準介面進行申請並使用。

       platform 是一個虛擬地址匯流排,相比 PCI、USB,它主要用於描述SOC上的片上資源。platform 所描述的資源有一個共同點:在CPU 的匯流排上直接取址。平台裝置會分到一個名稱(用在驅動綁定中)以及一系列諸如地址和插斷要求號(IRQ)之類的資源。

       platform 匯流排下驅動的開發步驟是:

1、 裝置

需要實現的結構體是:platform_device 。

1)初始化 resource 結構變數

2)初始化 platform_device 結構變數

3)向系統註冊裝置:platform_device_register。

以上三步,必須在裝置驅動載入前完成,即執行platform_driver_register()之前,原因是驅動註冊時需要匹配核心中所有登入的裝置名稱。platform_driver_register()中添加device到核心最終還是調用的device_add函數。Platform_device_add和device_add最主要的區別是多了一步insert_resource(p, r),即將platform資源(resource)添加進核心,由核心統一管理。

2、驅動

驅動註冊中,需要實現的結構體是:platform_driver 。

在驅動程式的初始化函數中,調用了platform_driver_register()註冊 platform_driver 。需要注意的是:platform_driver 和 platform_device 中的 name 變數的值必須是相同的 。這樣在 platform_driver_register() 註冊時,會將當前註冊的 platform_driver 中的 name 變數的值和登入的所有 platform_device 中的 name 變數的值進行比較,只有找到具有相同名稱的 platform_device 才能註冊成功。當註冊成功時,會調用 platform_driver 結構元素 probe 函數指標。

platform_driver_register()的註冊過程:

 

1 platform_driver_register(&s3c2410fb_driver) </p><p>2 driver_register(&drv->driver)</p><p>3 bus_add_driver(drv) </p><p>4 driver_attach(drv) </p><p>5 bus_for_each_dev(drv->bus, NULL, drv, __driver_attach)</p><p>6 __driver_attach(struct device * dev, void * data)</p><p>7 driver_probe_device(drv, dev)</p><p>8 really_probe(dev, drv)</p><p>

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

 

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/farsight2009/archive/2010/11/02/5983324.aspx

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.