SultanXDA อธิบายแนวทาง Unified ROM บน OnePlus 3/3T

เราติดต่อ SultanXDA เพื่อสอบถามว่า ROM และเคอร์เนลที่รวมเป็นหนึ่งของเขาทำงานอย่างไรกับ OnePlus 3/3T อ่านต่อเมื่อเราพบ!

ย้อนกลับไปเมื่อเรากล่าวถึง XDA Recognized Developer สุลต่านคดา ปล่อยของเขา ROM และเคอร์เนล CyanogenMod 13 ที่กำหนดเองสำหรับ OnePlus 3Tผู้คนจำนวนมากประหลาดใจที่เห็น ROM "แบบเดียวกัน" ที่เปิดตัวสำหรับ OnePlus 3T มาถึง OnePlus 3 (หรือกลับกัน!)

Sultanxda ใช้แนวทางแบบครบวงจรในการแจกจ่าย ROM สำหรับ โอเปิ้ล 3 และ โอเปิ้ล 3T เนื่องจากฮาร์ดแวร์และซอฟต์แวร์ระดับต่ำคล้ายกันมาก ซึ่งหมายความว่า ROM เสนอความเข้ากันได้ข้ามระหว่างอุปกรณ์ทั้งสอง โดยที่ ROM ROM เดียวกันสามารถแจกจ่ายให้กับทั้งคู่ได้ รหัสไปรษณีย์ที่เข้ากันได้ข้ามช่วยให้ผู้ใช้ (และนักพัฒนาซอฟต์แวร์ด้วย) ไม่ต้องกังวลกับการกระพริบซิปผิดโดยไม่ตั้งใจและรับอุปกรณ์ที่ปิดสนิท นี่ไม่ได้เป็นการบอกว่า OnePlus 3/3T นั้นง่ายต่อการใช้งาน – เพียงแต่สร้างความปวดหัวน้อยลงโดยรวมสำหรับทุกฝ่ายที่เกี่ยวข้อง

เราติดต่อกับ XDA Recognized Developer สุลต่านคดา เพื่อให้เกิดความกระจ่างมากขึ้นเกี่ยวกับขั้นตอนทั้งหมด เพื่อสนับสนุนการนำวิธีการของเขาไปใช้ ต่อไปนี้เป็นประเด็นหลักจากการสนทนาโดยเน้นเพิ่มเติม:

อะไรคือความแตกต่างใน OnePlus 3/3T ที่อนุญาตให้รวม ROM แบบรวม?

สาเหตุที่ ROM แบบรวมเป็นไปได้ก็เพราะ OnePlus ได้รวม BSP (ไลบรารีที่เป็นกรรมสิทธิ์) [แพ็คเกจสนับสนุนบอร์ด] แม้ว่าการรวมเคอร์เนลจะเป็นเรื่องง่าย แต่โดยปกติแล้วการรวม ROM นั้นเป็นไปไม่ได้สำหรับนักพัฒนา [ROM] เนื่องจากความไม่สอดคล้องกันใน BSP ที่มีเพียง OEM เท่านั้นที่สามารถแก้ไขได้ ในส่วนของฉัน สิ่งที่ฉันต้องทำคือรวมเคอร์เนลและแยกอิมเมจเฟิร์มแวร์ GPU บางส่วนออก อิมเมจเฟิร์มแวร์ของ GPU นั้นแตกต่างกันระหว่าง Snapdragon 820 และ 821 ดังนั้นจึงเข้ากันไม่ได้ ฉันแก้ไขเคอร์เนลเพื่อให้มัน โหลดเฟิร์มแวร์ GPU ที่ถูกต้อง สำหรับแต่ละอุปกรณ์เพื่อแก้ไขปัญหานี้ ฉันแล้ว เพิ่มอิมเมจเฟิร์มแวร์ที่เกี่ยวข้อง ไปยัง ROM ในคอมมิตนี้ อิมเมจเฟิร์มแวร์เฉพาะอุปกรณ์ที่เหลือ (เช่น อิมเมจของโมเด็ม) จะอยู่ในพาร์ติชันเฟิร์มแวร์บนอุปกรณ์แต่ละเครื่อง ดังนั้น ปัญหา GPU เป็นปัญหาเดียวที่เกี่ยวข้องกับเฟิร์มแวร์ที่ฉันเผชิญ.

ROM และ Kernel ทราบได้อย่างไรว่าเป็นอุปกรณ์ใด

เคอร์เนลรู้ว่าอุปกรณ์ใดกำลังทำงานอยู่ด้วยโปรแกรมโหลดบูต บูตโหลดเดอร์จะเลือกการกำหนดค่าแผนผังอุปกรณ์ (บรรจุอยู่ในอิมเมจเคอร์เนล) ที่ตรงกับ ID ของบอร์ดและส่งผ่านสิ่งนี้ การกำหนดค่าบนเคอร์เนล ทำให้เคอร์เนลมีความยืดหยุ่นในการโหลดการกำหนดค่าที่เหมาะสมสำหรับทั้ง OnePlus 3 และ โอเปิ้ล 3T คุณสามารถค้นหา ID บอร์ดสำหรับ โอเปิ้ล 3 และ โอเปิ้ล 3T โดยทำตามไฮเปอร์ลิงก์

คุณต้องการเพียงเคอร์เนลที่ได้รับการดัดแปลงเพื่อรองรับบิลด์แบบรวมหรือไม่

ไม่ ROM จะต้องรวมเป็นหนึ่งเดียวกันด้วย OnePlus รวม BSP ไว้ด้วยกันโดยเริ่มจาก Open Betas สำหรับ OP3 และคงไว้ซึ่งความเป็นหนึ่งเดียวในการเปิดตัว OP3T OxygenOS อย่างเป็นทางการ ซึ่งหมายความว่า ROM จะต้องใช้ไลบรารีที่เป็นกรรมสิทธิ์จากรุ่น Open Beta ของ OP3 หรือรุ่น OxygenOS อย่างเป็นทางการของ OP3T เพื่อที่จะรวมเป็นหนึ่งเดียว นอกจากนี้ยังมีข้อกำหนดอิมเมจเฟิร์มแวร์ GPU ที่ฉันอธิบายไว้ข้างต้น และหน้าจอสัมผัสของ OP3T จะต้องรวมเฟิร์มแวร์ไว้ใน ROM ด้วยเช่นกัน (ซึ่งถูกเพิ่มในเฟิร์มแวร์ GPU ที่ฉันเชื่อมโยงด้วย ข้างบน).

นอกจากนี้ยังมีข้อแม้สำหรับเคอร์เนลแบบรวม: นักพัฒนาต้องใช้เคอร์เนลของฉัน (ซึ่งรวมเป็นหนึ่งแล้ว) หรือต้องเพิ่มการรองรับ OP3 ให้กับเคอร์เนล OxygenOS ของ OP3T ไม่สามารถเพิ่มการรองรับ OP3T ลงในเคอร์เนลของ OP3 ได้เนื่องจากการรองรับ Snapdragon 821 ที่ไม่สมบูรณ์ ดังนั้นการรวมเข้าด้วยกันอาจต้องอาศัยการทำงานจำนวนมากจากนักพัฒนา OP3 ที่เต็มใจ เคอร์เนลของฉันรองรับ Snapdragon 821 อย่างสมบูรณ์แล้วเมื่อฉันได้รับ OP3T (เนื่องจากเคอร์เนลของฉันใช้สาขา Snapdragon 821 จาก CAF) ดังนั้นกระบวนการรวมจึงค่อนข้างไม่ลำบากสำหรับฉัน

ฉันแน่ใจว่านักพัฒนาจำนวนมากอยากจะใช้เคอร์เนล OxygenOS ของ OP3T มากกว่าเคอร์เนลของฉัน ซึ่งจะต้องเพิ่มการรองรับ OP3 ลงไป ฉันไม่ได้คิดที่จะสร้างเคอร์เนลแบบรวมสำหรับ OxygenOS ROM ดังนั้นจึงอาจต้องมีการทำงานเพิ่มเติมเพื่อให้สิ่งนั้นเกิดขึ้น

นักพัฒนารายอื่นสามารถดูโค้ดและดูวิธีการได้หรือไม่

ใช่. Sultanxda กล่าวว่างานทั้งหมดของเขาเปิดเผยต่อสาธารณะเกี่ยวกับตัวเขา บัญชี GitHubดังนั้นใครก็ตามที่มีความรู้ที่จำเป็นสามารถดูวิธีการรวม ROM ได้ จริงอยู่ว่าขั้นตอนนี้เกี่ยวข้องเล็กน้อยและต้องใช้ความเชี่ยวชาญในระดับหนึ่ง แต่ มันเป็นกระบวนการที่ต้องตั้งค่าและลืมไปมาก ด้วยผลประโยชน์ที่มาในรูปของการดูแลรักษาน้อย ความซ้ำซ้อนของงานน้อยลง และได้รับการปรับปรุง ความรู้สึกมั่นใจว่าผู้คนจะไม่สับสนระหว่างไฟล์ของอุปกรณ์ทั้งสอง เนื่องจากมีซิปเดียวเท่านั้นที่ใช้ได้กับทั้งสองอุปกรณ์ เมื่อ ROM หรือเคอร์เนลได้รับการรวมเป็นหนึ่งและยืนยันว่าทำงานได้อย่างสมบูรณ์ทั้งบน OnePlus 3 และ OnePlus 3T จำเป็นต้องมีการทำงานเพิ่มเติมเพียงเล็กน้อย


เราหวังว่าเราจะนำเสนอข้อมูลใหม่ ๆ ซึ่งน่าจะช่วยให้นักพัฒนาจำนวนมากขึ้นเลือกใช้การสร้างแบบรวมสำหรับอุปกรณ์ต่างๆ การพัฒนาบน OnePlus 3T กำลังเติบโตและการสร้างแบบรวมเป็นอนาคตสำหรับอุปกรณ์ทั้งสองในอนาคต