導航:首頁 > 器材知識 > 設備樹如何引用子節點

設備樹如何引用子節點

發布時間:2025-06-11 05:17:57

① Linux設備樹語法詳解

Linux內核自3.x版本引入設備樹概念,用於實現驅動代碼與設備信息的分離,優化硬體與驅動代碼的維護。設備樹文件,如ARM Linux內exynos4412參考板的板級設備樹文件"arch/arm/boot/dts/exynos4412-origen.dts",存放硬體介面信息,通過$make dtbs命令編譯成二進制.dtb文件供內核驅動使用。為避免重復編寫相似的.dts文件,Linux設備樹目錄提煉公用和共通部分為.dtsi文件,每個.dts文件僅需包含差異部分。Linux設備樹以樹狀結構描述設備信息,節點名長度不超過31個ASCII字元,形如[@],如mac_addr、gpio、clock、power等屬性具有特定意義,用於設備識別與配置。設備樹中的鍵值對描述設備屬性,如compatible用於查找設備節點。節點引用簡化查找過程,編譯時合並相同節點屬性信息。address和interrupts屬性分別描述設備與CPU的IO口和中斷請求,便於驅動提取並配置硬體。自定義屬性用於特定設備的驅動配置。設備樹與驅動的移植涉及硬體信息配置、驅動編譯與內核集成。移植過程需參照晶元手冊和電路原理圖,確保配置正確性。完成移植後,執行相關命令驗證設備驅動的正確性。此外,還有關於C++ Linux後台伺服器開發的多個知識點分享,如Linux、Nginx、MySQL、Redis、P2P、K8S、Docker、TCP/IP、協程、DPDK、webrtc等。

② 璁懼囨爲鍩烘湰璇娉曞強灞炴у垎鏋

鍦ㄧ‖浠朵笘鐣屼腑錛岃懼囨爲錛圖evice Tree錛夊氨鍍忎竴搴х粨鏋勫寲鐨勬ˉ姊侊紝榪炴帴鐫鎿嶄綔緋葷粺涓庣‖浠躲傚畠鏄涓縐嶅己澶х殑鏁版嵁妯″瀷錛屼互C璇璦緇撴瀯浣撶殑褰㈠紡錛屼負Linux鍐呮牳鍒濆嬪寲璁懼囨彁渚涗簡鍏抽敭淇℃伅銆傝╂垜浠涓璧鋒帰緔㈠畠鐨勮搗婧愩侀噸瑕佹т互鍙婂唴鏍鎬腑涓嶅彲鎴栫己鐨勬枃浠躲


鑷2011騫磋搗錛岃懼囨爲鍦ˋRM Linux鍐呮牳涓宕闇插ご瑙掞紝瀹冪殑寮曞叆鏄涓轟簡綆鍖栦唬鐮佺$悊錛岃В鍐沖唴鏍3.x涔嬪墠騫沖彴鏂囦歡鎻忚堪紜浠剁殑鍐椾綑闂棰樸傜幇鍦錛岃懼囨爲鎴愪負浜嗛┍鍔ㄧ▼搴忎笌紜浠朵氦浜掔殑鏍稿績緇勪歡錛屾棤璁烘槸dts錛圖evice Tree Source錛屾簮鏂囨湰錛夌殑ASCII鏂囨湰鎻忚堪錛岃繕鏄緙栬瘧鍚庣殑dtb錛圖evice Tree Blob錛屼簩榪涘埗鏂囦歡錛夛紝閮藉湪鏋勫緩鍜岀淮鎶ょ‖浠惰懼囩殑鐢熸佺郴緇熶腑鍙戞尌鐫鍏抽敭浣滅敤銆


璁懼囨爲鍩虹璇娉


璁懼囨爲鐢變竴緋誨垪鑺傜偣鏋勬垚錛屾瘡涓鑺傜偣閮芥湁鍏剁嫭鐗圭殑鍚嶇О瑙勫垯銆傝妭鐐瑰悕鐢卞瓧絎︺佹暟瀛楀拰鈥-鈥濈粍鎴愶紝闀垮害闄愬埗鍦31涓瀛楃︿互鍐咃紝閫氬父鍙嶆槧鍑鴻懼囩被鍨嬶紝鑰寀nit-address鍒欐爣璁拌懼囩殑鐗╃悊浣嶇疆銆備緥濡傦細


鑺傜偣鎿嶄綔

鑺傜偣鏌ユ壘鑹烘湳

閫氳繃鑺傜偣鐨刢ompatible灞炴э紙濡傗渄avicom,dm9000鈥濓級錛岄┍鍔ㄧ▼搴忓彲浠ョ簿紜鍖歸厤璁懼囧拰椹卞姩銆俛ddress灞炴х敤浜庢弿榪板湴鍧錛屽#address-cells鍜#size-cells瀹氫箟浜嗗瓙鑺傜偣reg灞炴х殑鍦板潃鍗曞厓鍜岄暱搴︺俰nterrupt灞炴у垯綆$悊涓鏂淇″彿錛岄氳繃interrupt-parent鍜宨nterrupts鏉ラ厤緗涓鏂鎺у埗鍣ㄣ


涓句釜渚嬪瓙錛屽綋鎻忚堪鐗囬夊拰鍦板潃鏄犲皠鏃訛紝濡傜墖閫0鍋忕Щ0鏄犲皠鍒癈PU鍦板潃絀洪棿0x10100000~0x10110000錛屼腑鏂鎺у埗鍣ㄧ殑璁劇疆閫氳繃#interrupt-cells鏉ュ畾涔変腑鏂鎻忚堪絎︾殑緇撴瀯銆


GPIO鎺у埗鍣ㄧ殑鐗瑰埆涔嬪


GPIO鎺у埗鍣ㄧ殑綆$悊閫氳繃gpio-controller灞炴у0鏄庯紝#gpio-cells鍒欏畾涔変簡GPIO鑺傜偣灞炴х殑鍗曞厓鍐呭癸紝鍖呮嫭寮曠敤GPIO鑺傜偣鍒鍚嶃佹爣鍙峰拰宸ヤ綔妯″紡銆傚湪鐗╄仈緗戠殑澶嶆潅涓栫晫閲岋紝姝g『鐞嗚В鍜屼嬌鐢ㄨ繖浜涘睘鎬ф槸鍏抽敭錛屼互紜淇濊懼囩殑楂樻晥榪愪綔鍜屽伐璧勫為暱銆

③ 【驅動】SPI驅動分析(四)-關鍵API解析

在SPI(Serial Peripheral Interface)驅動分析中,關鍵API解析是核心內容。本文將深入解析SPI驅動中的關鍵API,包括設備樹設備樹解析、SPI主控制器注冊、SPI子系統初始化、SPI控制器注冊、SPI設備和驅動匹配、SPI從設備注冊、SPI數據傳輸以及數據結構關系圖等內容。以下是對這些關鍵API的詳細解析:

在設備樹中對SPI進行描述時,主要通過`of_spi_register_master`函數獲取SPI主控制器的GPIO引腳編號信息,並將其存儲在主控制器的cs_gpios數組中。這一過程在`kernel\drivers\spi\spi.c`文件中實現。

`of_register_spi_devices`函數用於將子節點設備注冊到SPI匯流排上,同樣位於`kernel\drivers\spi\spi.c`文件。

`of_find_spi_master_by_node`函數用於根據設備節點查找對應的SPI主控制器,實現邏輯在`drivers\spi\spi.c`文件中。

`of_spi_notify`作為SPI設備樹變更的通知回調函數,確保系統在設備樹發生變更時能夠及時響應,其定義在`drivers\spi\spi.c`文件。

SPI子系統初始化通過`spi_init`函數完成,該函數在`drivers/spi/spi.c`文件中定義,它負責分配內存緩沖區、注冊SPI匯流排類型和SPI主控制器類,以及在需要時注冊設備樹重配置的通知回調。

`spi_register_master`函數用於將SPI主控制器注冊到SPI匯流排上,以便與SPI設備進行通信,該函數定義在`drivers/spi/spi.c`文件中。

在驅動程序的probe()函數最後階段,會調用`spi_register_master`函數以完成與SPI匯流排的連接。SPI控制器使用板級特定的匯流排編號,並結合晶元選擇編號進行設備定址。

`spi_alloc_master`用於分配SPI主控制器的內存空間,其定義在`drivers/spi/spi.c`文件中。該函數通過設置`master[1]`來確保私有數據指針與分配的內存空間關聯。

`spi_match_device`函數實現設備與驅動程序的匹配,通過設備樹、ACPI、ID表和名稱匹配方法實現,定義在`drivers/spi/spi.c`文件。

`spi_register_board_info`函數用於注冊給定板級信息中的SPI設備,確保即使控制器驅動程序重新載入,硬體設備也不會被遺忘。

`spi_alloc_device`和`spi_add_device`分別用於分配和添加SPI設備到SPI匯流排上,定義在`drivers/spi/spi.c`文件中。

`spi_new_device`函數在特定的SPI控制器上實例化新的SPI設備,其定義在`drivers/spi/spi.c`文件。

`spi_setup`函數負責實現SPI設備的設置和配置,定義在`drivers/spi/spi.c`文件。

`spi_register_driver`函數完成SPI驅動的注冊,定義在`drivers/spi/spi.c`文件。

SPI主設備的隊列初始化通過`spi_master_initialize_queue`函數完成,其定義在`drivers\spi\spi.c`文件。

`spi_init_queue`初始化SPI主設備隊列,定義在`drivers\spi\spi.c`文件,該函數採用內核線程機制執行消息處理。

`spi_message_init`和`spi_message_add_tail`函數分別用於初始化和構建SPI消息,定義在`include\linux\spi\spi.h`文件。

`spi_message_init_with_transfers`可以一次性初始化SPI消息,並添加一組傳輸操作,定義在`include\linux\spi\spi.h`文件。

SPI數據傳輸可以是同步或非同步方式。同步傳輸通過`spi_sync`函數實現,非同步傳輸則使用`spi_async`函數,兩者均在`drivers/spi/spi.c`文件中定義。非同步傳輸中,`__spi_async`函數會調用`spi_queued_transfer`,而`spi_queued_transfer`最終調用`__spi_queued_transfer`函數來處理消息隊列中的傳輸操作。

在同步傳輸中,使用`__spi_sync`函數實現等待數據傳輸完成的機制。通過使用`DECLARE_COMPLETION_ONSTATCK`聲明`struct completion`變數,`wait_for_completion`函數使得當前線程在數據傳輸完成時被喚醒。

`__spi_pump_messages`函數處理隊列中的傳輸消息,`spi_transfer_one_message`和`spi_finalize_current_message`分別用於傳輸和完成處理當前消息的操作。

數據結構之間的關系圖提供了SPI驅動中各個關鍵組件之間的清晰連接,有助於理解SPI驅動的整體架構和工作流程。

參考的資源包括其他博主的文章和項目推薦,提供了深入學習SPI驅動的指導和實踐建議。

閱讀全文

與設備樹如何引用子節點相關的資料

熱點內容
中國五金機電市場遼寧 瀏覽:885
閥門編號2代表什麼意思 瀏覽:749
移動空調添加製冷劑多少錢 瀏覽:569
塑料閥門圖片怎麼寧 瀏覽:804
軸承鋼怎麼除銹 瀏覽:983
天然氣表顯示閥門開怎麼還是沒有氣 瀏覽:668
鑄造件內部結構怎麼進行ug建模 瀏覽:77
什麼動物也用超聲波探路 瀏覽:440
占民機械怎麼樣 瀏覽:640
遼寧自動閥門有叫什麼源 瀏覽:517
閥門脫脂需要什麼不同 瀏覽:680
然氣閥門指示牌 瀏覽:627
ABB閥門分體定位器怎麼安裝 瀏覽:189
格力空調怎麼由送風變成製冷 瀏覽:838
離子交換層析裝置及作用 瀏覽:212
設備電覽線大小怎麼算 瀏覽:158
學校教學儀器設備為什麼要報廢 瀏覽:992
液體混合控制裝置西門子plc實驗 瀏覽:926
過濾裝置中活性炭的作用是什麼 瀏覽:155
小櫻用如圖12所示的實驗裝置 瀏覽:532