SultanXDA explică abordarea ROM unificată pe OnePlus 3/3T

click fraud protection

Am contactat SultanXDA pentru a întreba cum funcționează ROM-ul și kernelul său unificat pentru OnePlus 3/3T. Citiți mai departe pe măsură ce aflăm!

Când am acoperit acel dezvoltator recunoscut XDA Sultanxda i-a eliberat pe a lui ROM personalizat CyanogenMod 13 și Kernel pentru OnePlus 3T, mulți oameni au fost surprinși să vadă că „aceeași” construcție ROM care a fost lansată pentru OnePlus 3T își face drum spre OnePlus 3 (sau invers!).

Sultanxda a adoptat abordarea unificată a distribuirii ROM-urilor pentru OnePlus 3 si OnePlus 3T datorită hardware-ului lor în mare măsură similar și software-ului de nivel scăzut. Acest lucru însemna că ROM-ul a oferit compatibilitate încrucișată între ambele dispozitive, unde același zip ROM putea fi distribuit celor doi. Fermoarele compatibile încrucișate au permis utilizatorilor (și dezvoltatorului) să nu-și facă griji cu privire la afișarea accidentală a fermoarului greșit și la obținerea unui dispozitiv blocat. Acest lucru nu înseamnă că OnePlus 3/3T sunt ușor de montat -- înseamnă doar mai puține dureri de cap în general pentru toate părțile implicate.

Am contactat un dezvoltator recunoscut XDA Sultanxda pentru a face mai multă lumină asupra întregii proceduri, pentru a încuraja adoptarea metodei sale. Iată principalele concluzii din conversație, cu un accent suplimentar:

Ce este diferit pe OnePlus 3/3T care permite ROM-uri unificate?

Motivul pentru care este posibilă un ROM unificat este că OnePlus a unificat BSP (bibliotecile proprietare) [Board Support Package]. Deși unificarea unui nucleu este ușoară, unificarea unui ROM este în mod normal imposibilă pentru dezvoltatorii [ROM] din cauza inconsecvențelor din BSP pe care doar OEM le poate rezolva. Din punctul meu de vedere, tot ce trebuia să fac a fost să unific nucleul și să separe câteva imagini de firmware GPU. Imaginile de firmware ale GPU-ului sunt diferite între Snapdragon 820 și 821, deci nu sunt compatibile încrucișate. Am modificat nucleul pentru a-l face încărcați firmware-ul GPU corect pentru ca fiecare dispozitiv să remedieze acest lucru. atunci eu a adăugat imaginile firmware corespunzătoare la ROM în acest commit. Restul imaginilor firmware specifice dispozitivului (cum ar fi imaginile modemului) sunt situate într-o partiție de firmware pe fiecare dispozitiv, deci problema GPU-ului a fost singura problemă legată de firmware cu care m-am confruntat.

Cum își dau seama ROM-ul și Kernel-ul despre ce dispozitiv este?

Nucleul știe pe ce dispozitiv rulează datorită bootloader-ului. Bootloader-ul selectează configurația Device Tree (ambalată în imaginea kernelului) care se potrivește cu ID-ul plăcii sale și transmite acest lucru configurație pe nucleu Acest lucru oferă nucleului flexibilitate de a încărca configurațiile corespunzătoare atât pentru OnePlus 3, cât și pentru OnePlus 3T. Puteți găsi ID-ul plăcii pentru OnePlus 3 si OnePlus 3T urmând hyperlinkurile.

Aveți nevoie doar de un nucleu modificat pentru a suporta versiuni unificate?

Nu, și ROM-ul trebuie să fie unificat. OnePlus a unificat BSP pornind de la Open Betas-ul pentru OP3 și l-a păstrat unificat în lansarea oficială OP3T OxygenOS. Aceasta înseamnă că ROM-urile trebuie să utilizeze biblioteci proprietare fie din versiunile Open Beta ale OP3, fie din versiunea oficială OxygenOS a OP3T pentru a fi unificate. Există, de asemenea, cerința de imagine a firmware-ului GPU pe care am descris-o mai sus și ecranul tactil al OP3T firmware-ul trebuie să fie inclus și în ROM (acest lucru a fost adăugat în comiterea firmware-ului GPU la care m-am conectat de mai sus).

De asemenea, există o avertizare la nucleul unificat: dezvoltatorii trebuie fie să folosească nucleul meu (care este deja unificat), fie trebuie să adauge suport OP3 la nucleul OxygenOS al OP3T. Suportul pentru OP3T nu poate fi adăugat pur și simplu la nucleul OP3 din cauza suportului incomplet Snapdragon 821, așa că unificarea poate necesita multă muncă din partea dezvoltatorilor OP3 dornici. Nucleul meu avea deja suport complet pentru Snapdragon 821 când am primit OP3T (din moment ce nucleul meu se bazează pe ramura Snapdragon 821 de la CAF), așa că procesul de unificare a fost destul de nedureros pentru mine.

Sunt sigur că mulți dezvoltatori ar folosi mai degrabă nucleul OxygenOS al OP3T decât nucleul meu, ceea ce ar necesita adăugarea suportului pentru OP3. Nu m-am gândit să creez un nucleu unificat pentru ROM-urile OxygenOS, așa că ar putea fi nevoie de muncă suplimentară pentru ca acest lucru să se întâmple.

Pot alți dezvoltatori să arunce o privire la cod și să vadă cum se face acest lucru?

Da. Sultanxda menționează că toată lucrarea sa este disponibilă public pe a lui cont GitHub, astfel încât oricine are know-how-ul necesar poate vedea cum a fost întreprinsă unificarea ROM. Desigur, procedura este puțin complicată și necesită un nivel de expertiză, dar este un proces foarte mult de setare și uitare cu beneficii care provin sub formă de întreținere mai mică, mai puțină dublare a muncii și o îmbunătățire sentimentul de asigurare că oamenii nu vor confunda fișierele celor două dispozitive, deoarece un singur zip funcționează pentru ambele. Odată ce un ROM sau un nucleu este unificat și confirmat a fi pe deplin funcțional atât pe OnePlus 3, cât și pe OnePlus 3T, este nevoie de foarte puține lucrări suplimentare.


Sperăm că am scos la lumină noi informații care ar trebui să ajute mai mulți dezvoltatori să opteze pentru versiuni unificate pentru dispozitive. Dezvoltarea pe OnePlus 3T este în creștere, iar versiunile unificate reprezintă viitorul pentru ambele dispozitive.