আপনি ডিভাইস ট্রি সোর্স (DTS) ফাইল কম্পাইল করতে ডিভাইস ট্রি কম্পাইলার (DTC) ব্যবহার করতে পারেন। যাইহোক, টার্গেট মেইন ডিটিতে ওভারলে ডিভাইস ট্রি (ডিটি) প্রয়োগ করার আগে, আপনাকে ডিভাইস ট্রি ওভারলে (ডিটিও) এর আচরণ অনুকরণ করে ফলাফলও যাচাই করতে হবে।
DTC দিয়ে কম্পাইল করুন
.dts
কম্পাইল করার জন্য dtc
ব্যবহার করার সময়, আপনাকে .dtbo
এ একটি __symbols__
নোড যোগ করতে বিকল্প -@
যোগ করতে হবে। __symbols__
নোডে একটি লেবেল দ্বারা চিহ্নিত সমস্ত নোডের একটি তালিকা রয়েছে, যা DTO লাইব্রেরি রেফারেন্সের জন্য ব্যবহার করতে পারে।
প্রধান DT .dts
নির্মাণের নমুনা কমান্ড:
dtc -@ -O dtb -o my_main_dt.dtb my_main_dt.dts
ওভারলে DT .dts
নির্মাণের নমুনা কমান্ড:
dtc -@ -O dtb -o my_overlay_dt.dtbo my_overlay_dt.dts
হোস্টে DTO ফলাফল যাচাই করুন
যাচাইকরণ আপনাকে প্রধান DT-তে ওভারলে DT স্থাপন করার সময় যে ত্রুটিগুলি ঘটতে পারে তা সনাক্ত করতে সাহায্য করতে পারে। লক্ষ্য আপডেট করার আগে, আপনি /include/
in .dts
ব্যবহার করে DTO-এর আচরণ অনুকরণ করে হোস্টে DT ওভারলে করার ফলাফল যাচাই করতে পারেন।
চিত্র 1. হোস্টে DTO অনুকরণ করতে সিনট্যাক্স /ইনক্লুড/ ব্যবহার করুন।
- ওভারলে
.dts
এর একটি অনুলিপি তৈরি করুন। অনুলিপিতে, প্রথম লাইনের শিরোনামটি সরান। উদাহরণ: ফাইলটিকে/dts-v1/; /plugin/;
my_overlay_dt_wo_header.dts
(অথবা আপনি চান এমন কোনো ফাইলের নাম) হিসাবে সংরক্ষণ করুন। - প্রধান
.dts
এর একটি অনুলিপি তৈরি করুন। অনুলিপিতে, শেষ লাইনের পরে, ধাপ 1 এ আপনি যে ফাইলটি তৈরি করেছেন তার জন্য অন্তর্ভুক্ত সিনট্যাক্স যুক্ত করুন। উদাহরণস্বরূপ: ফাইলটিকে/include/ "my_overlay_dt_wo_header.dts"
my_main_dt_with_include.dts
(বা আপনি চান এমন কোনো ফাইলের নাম) হিসাবে সংরক্ষণ করুন। - মার্জড ডিটি পেতে
my_main_dt_with_include.dts
কম্পাইল করতেdtc
ব্যবহার করুন, যা DTO এর মতো একই ফলাফল হওয়া উচিত। যেমন:dtc -@ -O dtb -o my_merged_dt.dtb my_main_dt_with_include.dts
my_merged_dt.dto
ডাম্প করতেdtc
ব্যবহার করুন।dtc -O dts -o my_merged_dt.dts my_merged_dt.dtb
Android 9 এ DTO যাচাই করুন
Android 9 এর জন্য একটি ডিভাইস ট্রি ব্লব ওভারলে (DTBO) পার্টিশন প্রয়োজন। SoC DT-তে নোড যোগ করতে বা বৈশিষ্ট্যগুলিতে পরিবর্তন করতে, বুটলোডারকে অবশ্যই SoC DT-এর উপর একটি ডিভাইস নির্দিষ্ট DT-কে গতিশীলভাবে ওভারলে করতে হবে।
প্রয়োগকৃত ওভারলে নির্দেশ করুন
ওভারলে অ্যাপের সঠিকতা মূল্যায়ন করতে ভেন্ডর টেস্ট স্যুট (VTS) সক্ষম করতে, বিক্রেতাদের অবশ্যই একটি নতুন কার্নেল কমান্ড লাইন প্যারামিটার androidboot.dtbo_idx
যোগ করতে হবে যা DTBO পার্টিশন থেকে নির্বাচিত ওভারলেগুলি নির্দেশ করে। অ্যান্ড্রয়েড 12-এ কার্নেল সংস্করণ 5.10 বা তার বেশি ব্যবহার করে, এই প্যারামিটারটি বুট কনফিগারেশনের মাধ্যমে যায়। উদাহরণস্বরূপ, androidboot.dtbo_idx=x,y,z
প্যারামিটার x
, y
এবং z
রিপোর্ট করে DTBO পার্টিশন থেকে DTO-এর শূন্য-ভিত্তিক সূচক হিসাবে বুটলোডার দ্বারা বেস DT-তে প্রয়োগ করা হয়েছে (সেই ক্রমে)।
ওভারলেগুলি প্রধান DT থেকে নোডগুলিতে প্রয়োগ করতে পারে বা নতুন নোড যোগ করতে পারে, তবে পূর্ববর্তী ওভারলেতে যোগ করা নোডের উল্লেখ করতে পারে না । এই বিধিনিষেধটি প্রয়োজনীয় কারণ ওভারলে অ্যাপটি ওভারলে প্রতীক টেবিলকে প্রধান DT প্রতীক টেবিলের সাথে একত্রিত করে না (একত্রীকরণ না করলে প্রতীকের নামগুলির মধ্যে দ্বন্দ্ব এবং ওভারলেগুলির মধ্যে নির্ভরশীলতার জটিলতা এড়ানো যায়)।
উদাহরণ: অবৈধ ওভারলে
এই উদাহরণে, overlay_2.dts
নোড e
বোঝায়, যা overlay_1.dts
দ্বারা যোগ করা হয়েছিল। প্রধান DT-তে overlay_1
প্রয়োগ করার পরে, ফলাফল DT-তে overlay_2
প্রয়োগ করার চেষ্টা করা হলে, ওভারলে অ্যাপটি একটি ত্রুটির সাথে ব্যর্থ হয় যে চিহ্নটি বেস DT-এর প্রতীক টেবিলে উপস্থিত e
।
main.dts | overlay_1.dts | overlay_2.dts |
---|---|---|
[main.dts] /dts-v1/; / { a: a {}; b: b {}; c: c {}; }; | [overlay_1.dts] /dts-v1/; /plugin/; &b { ref1 = <&a>; e: e { prop = <0x0a>; phandle = <0x04>; }; }; | [overlay_2.dts] /dts-v1/; /plugin/; /* invalid! */ &e { prop = <0x0b>; }; |
উদাহরণ: বৈধ ওভারলে
এই উদাহরণে, overlay_2.dts
শুধুমাত্র প্রধান DTS থেকে নোড b
কে বোঝায়। যখন overlay_1
বেস ডিটি-তে প্রয়োগ করা হয়, তারপর overlay_2
অ্যাপের পরে, নোড e
( overlay_1.dts
দ্বারা সেট করা) তে prop
মান overlay_2.dts
দ্বারা সেট করা মান দ্বারা ওভাররাইট করা হয়।
main.dts | overlay_1.dts | overlay_2.dts |
---|---|---|
[final.dts] /dts-v1/; / { a: a {}; b: b {}; c: c {}; }; | [overlay_1.dts] /dts-v1/; /plugin/; &b { ref1 = <&a>; e { prop = <0x0c>; }; }; | [overlay_2.dts] /dts-v1/; /plugin/; /* valid */ &b { ref1 = <&c>; e { prop = <0x0d>; }; }; |
DTBO পার্টিশন বাস্তবায়ন করুন
প্রয়োজনীয় DTBO পার্টিশন বাস্তবায়ন করতে, বুটলোডার নিম্নলিখিত কাজ করতে পারে তা নিশ্চিত করুন:
- এটি যে বোর্ডে চলছে তা চিহ্নিত করুন এবং প্রয়োগ করার জন্য সংশ্লিষ্ট ওভারলেগুলি নির্বাচন করুন৷
- কার্নেল কমান্ড লাইনে
androidboot.dtbo_idx
প্যারামিটার যোগ করুন।- প্যারামিটারটি অবশ্যই নির্দেশ করবে, DTBO পার্টিশন চিত্র থেকে DTO-এর শূন্য-ভিত্তিক সূচকগুলি এটি বেস DT-তে প্রয়োগ করেছে (একই ক্রমে)।
- সূচকগুলিকে অবশ্যই DTBO পার্টিশনে ওভারলেটির অবস্থান উল্লেখ করতে হবে।
DTBO পার্টিশনের গঠন সম্পর্কে বিস্তারিত জানার জন্য, ডিভাইস ট্রি ওভারলে পড়ুন।
DTBO পার্টিশন যাচাই করুন
আপনি নিম্নলিখিত যাচাই করতে VTS ব্যবহার করতে পারেন:
- কার্নেল কমান্ড লাইন প্যারামিটার
androidboot.dtbo_idx
এর অস্তিত্ব (পরীক্ষা করে যেInit
স্বয়ংক্রিয়ভাবে সংশ্লিষ্টro.boot.dtbo_idx
সিস্টেম বৈশিষ্ট্য সেট আপ করেছে)। -
ro.boot.dtbo_idx
সিস্টেম প্রপার্টির বৈধতা (প্রপার্টি অন্তত একটি বৈধ DTBO ইমেজ ইনডেক্স নির্দিষ্ট করে তা পরীক্ষা করে)। - DTBO পার্টিশনের বৈধতা (এছাড়াও DTBO পার্টিশনের ওভারলেগুলি যাচাই করে যা বেস DT-তে প্রয়োগ করা হয়)।
- অতিরিক্ত নোড বা বৈশিষ্ট্য পরিবর্তনের ফলে ডিটি লিনাক্স কার্নেলে উপস্থাপন করা হয়।
উদাহরণস্বরূপ, নিম্নলিখিত ওভারলে এবং চূড়ান্ত DT-এ, কার্নেল কমান্ড লাইনে androidboot.dtbo_idx=5,3
যোগ করলে বৈধতা পাস হয় কিন্তু কার্নেল কমান্ড লাইনে androidboot.dtbo_idx=3,5
যোগ করলে বৈধতা পাস হয় না।
সূচক 3 এ ওভারলে ডিটি | সূচক 5 এ ওভারলে ডিটি |
---|---|
[overlay_1.dts] /dts-v1/; /plugin/; &c { prop = <0xfe>; }; | [overlay_2.dts] /dts-v1/; /plugin/; &c { prop = <0xff>; }; |
ফাইনাল ডিটি |
---|
/dts-v1/; / { a { phandle = <0x1>; }; b { phandle = <0x2>; }; c { phandle = <0x3>; prop = <0xfe>; }; __symbols__ { a = "/a"; b = "/b"; c = "/c"; }; }; |
এই পৃষ্ঠার কন্টেন্ট ও কোডের নমুনাগুলি Content License-এ বর্ণিত লাইসেন্সের অধীনস্থ। Java এবং OpenJDK হল Oracle এবং/অথবা তার অ্যাফিলিয়েট সংস্থার রেজিস্টার্ড ট্রেডমার্ক।
2024-08-26 UTC-তে শেষবার আপডেট করা হয়েছে।