2017-06-17 122 views
0

設備樹文本文件(.dts)的寫入順序是否完成?寫入設備樹文本文件的順序是否重要?

例如,如果從文件頂部取一個節點並將其移動到底部,是否會更改硬件檢測,IRQ配置或其他任務的順序?

+0

什麼是*「。dtx」*文件?我只熟悉** .dts **和** .dtsi **源文件/文本文件。 – sawdust

回答

1

設備樹文本文件(.dtx)的寫入順序是否存在?

.dts.dtsi源文件中的答案是 「依賴」。
設備樹有一個結構,所以重新排列節點可能會或可能不會改變系統硬件配置。


總體一個設備樹具有這樣的結構,例如(滑動的Device Tree for Dummies 23)

/ { 
    aliases { ... }; 
    cpus { ... }; 
    [email protected] { 
     [email protected] { 
      /* Some devices */ 
     }; 
     [email protected] { 
      /* Some devices */ 
     }; 
    }; 
    [email protected] { 
     /* Some devices */ 
    }; 
}; 

器件將由節點進行說明。
連接到特定總線(例如apbh @ 80000000)的設備節點可以通過設備地址或按設備名稱的字母順序進行數字排序。節點(總線內)的這種排序並不重要。
但是,如果「您從文件頂部取一個節點並將其移動到底部」,並將該節點重新分配給不同的總線,那麼顯然您將定義不同的配置(可能不正確)。


一個設備樹源文本的文件結構由.dts文件(板)和任選的.dtsi文件。理想情況下,應該有一個通用的SoC文件,並且可以使用該SoC的每個.dts板文件包含該文件。

用於SoC的.dtsi文件通常由供應商提供,並應具有所有芯片設備的定義。基本設備(例如電源管理,DMA控制器)將被定義和啓用。但是非必需的可選外圍設備和/或連接到多路複用引腳的I/O的外圍設備將被禁用。

[email protected] { 
    [...] 
    hsadc: [email protected] { 
     reg = <0x80002000 0x2000>; 
     [...] 
     status = "disabled"; 
    }; 
    [...] 
}; 

如果你想在你的主板上使用可選的外圍,你不應該修改或定製SoC的.dtsi文件只是您的主板。
相反,您應該在頂級主板文件(包括SoC .dtsi文件)中增加該設備的節點,然後重新聲明設備的狀態。

#include "my_soc.dtsi" 
/{ 
    [email protected] { 
     [email protected] { 

      hsadc: [email protected] { 
       status = "okay"; 
      }; 

      [...] 
     }; 
    }; 
}; 

爲了得到適當的配置,與此status = "okay"節點必須被放置在通用節點之後(在包含.dtsi),使得status = "disabled"可以被覆蓋。
很顯然,這是位置依賴的另一種情況。


我的意思例如,如果你從文件的頂部採取節點,並將其移動到下方,將其更改硬件檢測,IRQ配置,或任何的順序?

設備樹僅用於定義系統硬件的配置。設備驅動程序的執行順序由驅動程序的構建方式控制,即宏調用初始調用宏。請參閱init function invocation of drivers compiled into kernelWhat is the difference between module_init and subsys_initcall while initializing the driver?
設備驅動程序獲取資源受該驅動程序的控制,並且不受設備樹屬性的指導,驅動程序僅讀取設備樹屬性。

+0

謝謝。我會更新我的問題,以刪除「dtx」,它應該讀作「dts」你是對的。 – Bludzee

+0

@sawdust:爲了啓用節點,我相信語句將是status =「okay」。 –

+0

@ a.saurabh - 是的!感謝您指出錯誤。 – sawdust