對於dts的理解和分析

2021-08-02 10:46:01 字數 1222 閱讀 7933

dts是linux下對於裝置資源的一種描述方式,相對於之前platform的描述方式,可以大大節省linux核心**,主要是驅動描述方面。

dts檔案將被編譯成dtb檔案,與編譯生成的kernel檔案打包在一起,一般放在頭部。

kernel在載入時,會將dtb檔案匯入到記憶體,驅動**使用標準的api訪問dtb資源並載入驅動。

以下是openwrt中對於dtb的分析:

0103-owrtdtb.patch

head.s 加入16kb的dtb空間

--- a/arch/mips/kernel/head.s

+++ b/arch/mips/kernel/head.s

@@ -86,6 +86,9 @@ export(__image_cmdline)

.fill 0x400

#endif /* config_image_cmdline_hack */

+ .ascii "owrtdtb:"

+ export(__image_dtb)

+ .fill 0x4000

__ref

tools/patch-image/src/patch-dtb.c,執行命令為: patch-dtb vmlinux-*** ***.dtb

將dtb檔案拷貝到vmlinux前16kb空間

--- a/arch/mips/ralink/of.c

+++ b/arch/mips/ralink/of.c

@@ -66,6 +66,8 @@ static int __init early_init_dt_find_mem

return 0; }

+extern struct boot_param_header __image_dtb;

+ void __init plat_mem_setup(void)

{ set_io_port_base(kseg1);

@@ -74,7 +76,7 @@ void __init plat_mem_setup(void)

* load the builtin devicetree. this causes the chosen node to be

*/- __dt_setup_arch(__dtb_start);

+ __dt_setup_arch(&__image_dtb);

對於equals和 的理解

很多時候equals和 大家都分不太清楚怎麼樣來使用,今天小編就來教大家怎麼使用 equals比較的是兩個變數的值是否相等 而 則比較的是這個變數的記憶體位址是否相同 打個比方來說 string a new string a string b new string a system.out.prin...

對於new和override的理解

在成功的道路上,你沒有耐心去等待成功的到來,那麼,你只好用一生的耐心去面對失敗。override 和new 在同乙個宣告中使用 new和 override 修飾符是錯誤的。隱藏乙個繼承成員並不被認為是錯誤的,但是會造成編譯器給出警告。為了禁止這個警告,派生類成員的宣告可以包括乙個 new修飾符來指出...

對於函式的整理和理解

函式的呼叫方式有三種,第一種叫傳值呼叫,這種只是單獨把實參的值傳給形參,但是形參值改變時實參值並不會發生改變 這種方式是比較簡單的呼叫方式 第二種是引用這種是把實參形參聯絡起來,意思就是實參和形參實際為乙個量 就和每種物體都有好幾個名字一樣,但卻都是指一種東西,這種呼叫方式彌補了傳值呼叫的確定,這時...