平台裝置驅動

來源:互聯網
上載者:User
   來自精通Linux裝置驅動程式開發:平台裝置驅動中的平台可看做一種偽匯流排,通常用於將整合進片上系統的輕量級裝置和Linux裝置模型串連在一起。平台由平台裝置和平台裝置驅動程式組成。

(來自:http://blog.tianya.cn/blogger/post_show.asp?BlogID=862226&PostID=21247170)

裝置驅動中,平台裝置作為一個虛擬裝置和匯流排可以大大簡化設計難度。

核心在初始化過程中,首先初始化虛擬匯流排,其次將裝置添加到虛擬匯流排上,最後註冊裝置驅動,它會掃描虛擬匯流排尋找與之匹配的裝置(如果裝置名稱相符,就進行探測,探測成功後進行綁定)

probe函數一般完成硬體裝置使能, struct resource的擷取以及虛擬位址的動態映射和具體類型裝置的註冊(因為平台裝置只是一種虛擬裝置類型);remove函數與之相反。

只要和核心本身運行依賴性不大的外圍裝置 ( 換句話說只要不在核心運行所需的一個最小系統之內的裝置 ), 相對獨立的 , 擁有各自獨自的資源 (addresses and IRQs) ,都可以用 platform_driver 實現。

 在開發過程中核心版本的不同對於平台裝置驅動註冊方式也有不同的表示方法。

如2.6.14.1中的註冊和登出                          如2.6.26.1中的註冊和登出 static int __init s3c2410_rtc_init(void)       static int __init s3c2410_rtc_init(void) {                                              {    return driver_register(&s3c2410_rtcdrv);        return platform_driver_register(&s3c2410_rtcdrv);}                                              } static void __exit s3c2410_rtc_exit(void)      static void __exit s3c2410_rtc_exit(void) {                                              {    driver_unregister(&s3c2410_rtcdrv);             platform_driver_unregister(&s3c2410_rtcdrv);}                                              }   如2.6.14.1中                                 如2.6.26.1中 static struct device_driver s3c2410_rtcdrv={   static struct platform_driver s3c2410_rtcdrv = {    .name = "s3c2410-rtc",                        .probe = s3c2410_rtc_probe,    .owner = THIS_MODULE,                         .remove = s3c2410_rtc_remove,    .bus = &platform_bus_type,                    .suspend = s3c2410_rtc_suspend,    .probe = s3c2410_rtc_probe,                   .resume = s3c2410_rtc_resume,    .remove = s3c2410_rtc_remove,                 .driver = {     .suspend = s3c2410_rtc_suspend,                  .name = "s3c2410-rtc",    .resume = s3c2410_rtc_resume,                    .owner = THIS_MODULE,}};                                              };
 

來自:http://yuxu9710108.blog.163.com/blog/static/23751534201111805633259/ 平台裝置,平台驅動間及資源間的關係

平台裝置:platform_device{}用於定義好該SOC晶片上所用的各個裝置所需要佔用的資源
然後platform_add_devices()初始化好之,註冊其需要佔用的資源。

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.