新聞動(dòng)態

免費谘(zī)詢熱線

13621929115
常見(jiàn)問題(tí)
您的(de)位置: 主頁 > 新聞動態 > 常見問(wèn)題(tí)

軍事模型

發(fā)布日期:2023-04-04 23:02瀏覽次數:

概括來(lái)說,Platform設備包括:基於端口的設備(已不推薦使用軍事模型,保留(liú)下來隻為兼容舊設備,legacy);連(lián)接物理總(zǒng)線的橋(qiáo)設備;集成在SOC平台上麵(miàn)的控製器;連接在其它bus上的(de)設備(很

    platform_dri軍(jun1)事模型ver_registe、platform_driver_unregister,platform driver的注冊、注銷接口platform_driver_probe,主動執行probe動作。

    platform_set_drvdata、platform_get_drvdata,設置或者獲取driver軍事模(mó)型(xíng)保存在device變量中的私有數據3.4 懶人API又是注冊platform device,又是注冊platform driver,看著挺囉嗦的。

    不過內核想到了這點,所(suǒ)以提供一個懶人API,可以同時注冊platform driver,並分配一個platform device:#define plat軍事模型form_create_bundle(driver, probe, res, n_res, data, size) \

    

    隻要提供一個platform_driver(要把driver的probe接口顯式的傳(chuán)入),並(bìng)告知軍事模型該設備占用的資源信息,platform模塊就(jiù)會幫忙分配資源,並執(zhí)行probe操作對於那些不需要熱拔插的設(shè)備來說,這種方(fāng)式是最省事(shì)的了。

    3.5 Early platform device/driver內核啟動時,要完成一定的初始化操作之後,才會處理device和driver的注冊及probe,因此在這軍事模(mó)型之前(qián),常規的(de)platform設備是無(wú)法使用的。

    但是在Linux中,有些設備需要盡早使(shǐ)用(如在啟動過程中充當console輸出的serial設備),所以platform模(mó)塊提供(gòng)了一種稱作Early platform device/driver的機製,允許驅動開發人員,在開發驅動時,向內核注冊可在內核早軍事模型期啟動過程中使(shǐ)用的driver。

    這些機製(zhì)提供了如下接口:4. Platform模塊的內部動作解析4.1 Platform模塊的初始化Platform模塊的(de)初始化是由drivers/base/platform.c中platform_bus_init接(jiē)口完成的,該接口(kǒu)的實現和動作如下(xià):

    early_platform_cleanup,清除所有和Ear軍事模型(xíng)ly device/driver相關的代碼因為執(zhí)行到這裏的時候,證明係統已經(jīng)完成了Early階段的啟動,轉而進行正常的設備初(chū)始化、啟動操作,所以(yǐ)不再需要Early Platform相關的東(dōng)西。

    device_register,注冊一個名稱(chēng)為platform_bus的(de)設備,該設(shè)備的定義(yì)非(fēi)常簡單,隻包含i軍事模型nit_name(為“platform”)該步驟會在sysfs中創(chuàng)建“/sys/devices/platform/”目錄,所(suǒ)有的Platform設備,都會包含在此目錄下。

    bus_register,注冊一個名(míng)稱為platform_bus_type的(de)bus,該bus的定義如下:struct bus_ty軍事(shì)模型pe platform_bus_type = { .name = "platform", .dev_attrs = platform_dev_attrs, .match = platform_match, .uevent = platform_uevent, .pm = &platform_dev_軍事(shì)模型pm_ops, };

    該步驟會(huì)在sysfs中創建“/sys/bus/platform/”目(mù)錄,同時,結合“Linux設備模型(6)_Bus”的描述,會在“/sys/bus/platform/”目錄下,創建uevent attribute(/sys/bus/platform/uevent)、device軍事模(mó)型s目錄、drivers目錄、drivers_probe和(hé)drivers_autoprobe兩個attribute(/sys/bus/platform/drivers_probe和/sys/bus/platform/drivers_autoprobe)。

    4.2 platform device和plat軍(jun1)事模型form driver的注冊結合第3章的(de)描(miáo)述,platform device和platform driver的注冊(cè),由(yóu)platform_device_add和platform_driver_register兩個接口實際實現。

    其內部動作分別如下platform_device_add的內部動作:如果該設(shè)軍(jun1)事模型備沒有指定父設備,將其父設備設(shè)置為platform_bus,即“/sys/devices/platform/”所(suǒ)代(dài)表的(de)設備,這時該設備的sysfs目錄即為“/sys/devices/platform/xxx_device”。

    將該設備的bus指定為platform_bus_type(pdev->dev軍事模型.bus = &platform_bus_type)根據設備的ID,修改或者設置設(shè)備的(de)名(míng)稱對(duì)於多個同名的設(shè)備(bèi),可(kě)以使用ID區(qū)分,在(zài)這裏將實際名稱(chēng)修改為“name.id”的形式。

    調用resource模塊的insert_resource接口,將該設備(bèi)需要使用的resource統一管理起(qǐ)來(www.17C.com知道,在這軍事模型之前,隻是聲明了本設備需要使用(yòng)哪些resource,但resource模塊並不知情,也(yě)就無從管理,因此需要告知)。

    調用device_add接口,將內嵌的struct device變量添加(jiā)到內核中(zhōng)platform_driver_register的內部動作:將該driver的(de)bus指定為platform軍事模型_bus_type(drv->driver.bus = &platform_bus_type)。

    如果(guǒ)該(gāi)platform driver提(tí)供(gòng)了probe、remove、shutdown等回調函數,將該它內嵌的struct driver變量的probe、remove、shutdown等指(zhǐ)針,設置為plat軍事模型form模(mó)塊提供(gòng)函數,包括platform_drv_probe、platform_drv_remove和platform_drv_shutdown。

    因為probe等動作會從struct driver變量開始,經過platform_drv_xxx等接口的轉接,就(jiù)可以到達platform diver自身軍事模型的回調函數中調用(yòng)driver_register接口,將內嵌的struct driver變(biàn)量(liàng)添加到內核中。

    4.3 platform設備的probewww.17C.com在“Linux設備(bèi)模型(6)_Bus”中講過,設備的probe,都發生在向指定(dìng)的bus添加device或者device_driver時,由bus模塊的b軍事模型us_probe_device,或者device_driver模塊driver_attach接(jiē)口觸發。

    這裏就不再詳細描述了


標簽:

產品推薦

Copyright © 2002-2020 上海潤之模型設計有限公司 版權所有 展示模型,展品模型,展廳模(mó)型,展示道具,展廳(tīng)展品,展品道(dào)具(jù),模型定製,模型公司,上(shàng)海模型公司 備案號:滬ICP備20018260號

13621929115
网站地图 www.17C.com_17.C-起草网登录在线_17c.一起草 在线观看视频_17c.com免费观看入口