فرمت منبع درخت دستگاه (DTS) یک نمایش متنی از درخت دستگاه (DT) است. کامپایلر درختی دستگاه (DTC) این فرمت را به یک DT باینری پردازش می کند، که شکل مورد انتظار هسته لینوکس است.
از مراجع استفاده کنید
پروژه DTC (کامپایلر درخت دستگاه + وصله های همپوشانی) فرمت DTS را در dtc-format.txt و manual.txt توصیف می کند. قالب و قوانین DTO در dt-object-internal.txt توضیح داده شده است. این اسناد نحوه به روز رسانی DT اصلی را با استفاده از node fragment@x
و نحو __overlay__
در روکش DT توضیح می دهند. به عنوان مثال:
/ { fragment@0 { target = <&some_node>; __overlay__ { some_prop = "okay"; ... }; }; };
با این حال، گوگل اکیداً توصیه می کند که fragment@x
و syntax __overlay__
استفاده نکنید و در عوض از نحو مرجع استفاده کنید. به عنوان مثال:
&some_node { some_prop = "okay"; ... };
نحو مرجع توسط dtc
در همان شیء فوق با استفاده از نحو __overlay__
کامپایل می شود. این نحو شما را مجبور به شماره گذاری قطعات نمی کند و به شما امکان می دهد DTS همپوشانی را به راحتی بخوانید و بنویسید. اگر dtc
شما از این قند نحوی پشتیبانی نمی کند، از dtc در AOSP استفاده کنید.
از برچسب ها استفاده کنید
برای اجازه دادن به ارجاعات تعریف نشده به گره هایی که در زمان کامپایل وجود ندارند، فایل همپوشانی DT .dts
باید دارای یک برچسب /plugin/
در هدر خود باشد. به عنوان مثال:
/dts-v1/; /plugin/;
از اینجا میتوانید با استفاده از یک مرجع، گرههایی را که قرار است روی هم قرار گیرند، هدف قرار دهید، که یک مسیر گره مطلق است که با علامت علامت (&) پیشوند دارد. به عنوان مثال، برای node@0
در DT اصلی:
برچسب ها را در DT اصلی تعریف کنید ... | ... سپس از برچسب ها استفاده کنید. |
---|---|
[my_main_dt.dts] /dts-v1/; / { my_node: node@0 { status = "disabled"; my_child: child@0 { value = <0xffffffff>; }; }; }; | [my_overlay_dt.dts] /dts-v1/; /plugin/; &my_node { status = "okay"; }; &my_child { value = <0x1>; }; |
لغو
اگر ویژگی هدف مرجع در DT اصلی وجود داشته باشد، پس از DTO لغو می شود. در غیر این صورت ضمیمه می شود. به عنوان مثال:
main.dts | overlay.dts | نتیجه ادغام شده |
---|---|---|
[my_main_dt.dts] /dts-v1/; / { compatible = "corp,foo"; my_node: node@0 { status = "disabled"; }; }; | [my_overlay_dt.dts] /dts-v1/; /plugin/; &my_node { status = "okay"; }; | /dts-v1/; / { compatible = "corp,foo"; ... node@0 { linux,phandle = <0x1>; phandle = <0x1>; status = "okay"; }; }; |
اضافه کنید
اگر ویژگی هدف مرجع در DT اصلی وجود نداشته باشد، پس از DTO اضافه می شود. به عنوان مثال:
main.dts | overlay.dts | نتیجه ادغام شده |
---|---|---|
[my_main_dt.dts] /dts-v1/; / { compatible = "corp,foo"; my_node: node@0 { status = "okay"; }; }; | [my_overlay_dt.dts] /dts-v1/; /plugin/; &my_node { new_prop = "bar"; }; | /dts-v1/; / { compatible = "corp,foo"; ... node@0 { linux,phandle = <0x1>; phandle = <0x1>; status = "okay"; new_prop = "bar"; }; }; |
گره های کودک
نمونه هایی از نحو گره فرزند:
main.dts | overlay.dts | نتیجه ادغام شده |
---|---|---|
[my_main_dt.dts] /dts-v1/; / { compatible = "corp,foo"; my_nodes: nodes { compatible = "corp,bar"; node@0 { status = "disabled"; }; }; }; | [my_overlay_dt.dts] /dts-v1/; /plugin/; &my_nodes { new_prop1 = "abc"; node@0 { status = "okay"; new_prop2 = "xyz"; }; }; | /dts-v1/; / { compatible = "corp,foo"; ... nodes { linux,phandle = <0x1>; phandle = <0x1>; compatible = "corp,bar"; new_prop1 = "abc"; node@0 { linux,phandle = <0x2>; phandle = <0x2>; status = "okay"; new_prop2 = "xyz"; }; }; }; |