SultanXDA objašnjava Unified ROM pristup na OnePlus 3/3T

Kontaktirali smo SultanXDA kako bismo se raspitali o tome kako njegov unificirani ROM i kernel rade za OnePlus 3/3T. Čitajte dalje dok saznajemo!

Kad smo govorili o tom XDA Recognised Developeru Sultanxda pustio svoje prilagođeni CyanogenMod 13 ROM i kernel za OnePlus 3T, mnogi su se ljudi iznenadili kad su vidjeli da "ista" verzija ROM-a koja je objavljena za OnePlus 3T dolazi do OnePlus 3 (ili obrnuto!).

Sultanxda je usvojila jedinstveni pristup distribuciji ROM-ova za OnePlus 3 i OnePlus 3T zahvaljujući njihovom uglavnom sličnom hardveru i niskoj razini softvera. To je značilo da ROM nudi unakrsnu kompatibilnost između oba uređaja, pri čemu se isti ROM zip može distribuirati dvojcu. Unakrsno kompatibilni zipovi omogućili su korisnicima (i razvojnom programeru) da ne brinu o tome da će slučajno upaliti pogrešan zip i dobiti zakinuti uređaj. To ne znači da je OnePlus 3/3T lako sklopiti - to samo podrazumijeva manje glavobolje za sve uključene strane.

Obratili smo se XDA Recognized Developeru

Sultanxda da baci malo više svjetla na cijeli postupak, kako bi potaknuo usvajanje njegove metode. Evo glavnih zaključaka iz razgovora s dodatnim naglaskom:

Što je drugačije na OnePlus 3/3T što omogućuje objedinjene ROM-ove?

Razlog zašto je objedinjeni ROM moguć je taj što je OnePlus objedinio BSP (vlastite biblioteke) [Board Support Package]. Iako je objedinjavanje kernela jednostavno, objedinjavanje ROM-a obično je nemoguće za [ROM] programere zbog nedosljednosti u BSP-u koje samo OEM može riješiti. S moje strane, sve što sam trebao učiniti je objediniti kernel i odvojiti neke slike GPU firmvera. Slike firmvera GPU-a razlikuju se između Snapdragona 820 i 821, tako da nisu međusobno kompatibilne. Modificirao sam kernel da to napravim učitajte ispravan GPU firmware za svaki uređaj da to popravi. ja onda dodao odgovarajuće slike firmvera na ROM u ovom predanju. Ostatak slika firmvera specifičnih za uređaj (kao što su slike modema) nalazi se na particiji firmvera na svakom uređaju, tako da problem s GPU-om bio je jedini problem vezan uz firmware s kojim sam se suočio.

Kako ROM i kernel otkrivaju koji je to uređaj?

Kernel zna na kojem uređaju radi zahvaljujući bootloaderu. Bootloader odabire konfiguraciju stabla uređaja (upakiranu u sliku kernela) koja odgovara ID-u njegove ploče i prosljeđuje ovo konfiguracija na kernelu To daje kernelu fleksibilnost za učitavanje odgovarajućih konfiguracija i za OnePlus 3 i za OnePlus 3T. Možete pronaći ID ploče za OnePlus 3 i OnePlus 3T prateći hiperveze.

Trebate li samo modificirani kernel za podršku objedinjenim verzijama?

Ne, ROM također mora biti unificiran. OnePlus je objedinio BSP počevši od otvorenih beta verzija za OP3 i zadržao ga unificiranim u službenom izdanju OP3T OxygenOS. To znači da ROM-ovi moraju koristiti vlasničke biblioteke iz OP3 Open Beta verzija ili OP3T službenog OxygenOS izdanja kako bi bili unificirani. Tu je i zahtjev za sliku firmvera GPU-a koji sam gore opisao i dodirni zaslon OP3T-a firmware također treba biti uključen u ROM (ovo je dodano u GPU firmware commitu na koji sam se povezao iznad).

Također, postoji upozorenje za objedinjeni kernel: programeri moraju ili koristiti moj kernel (koji je već unificiran), ili moraju dodati OP3 podršku OxygenOS kernelu OP3T-a. Podrška za OP3T ne može se jednostavno dodati jezgri OP3 zbog nepotpune podrške za Snapdragon 821, tako da objedinjavanje može zahtijevati puno rada voljnih OP3 programera. Moj kernel je već imao potpunu podršku za Snapdragon 821 kada sam primio OP3T (budući da se moj kernel temelji na grani Snapdragon 821 iz CAF-a), tako da je proces unifikacije za mene bio prilično bezbolan.

Siguran sam da bi mnogi programeri radije koristili OP3T-ov OxygenOS kernel radije nego moj kernel, što bi zahtijevalo dodavanje podrške za OP3. Nisam se bavio izradom unificiranog kernela za OxygenOS ROM-ove, tako da će možda biti potreban dodatni rad da se to ostvari.

Mogu li drugi programeri pogledati kôd i vidjeti kako se to radi?

Da. Sultanxda spominje da su svi njegovi radovi javno dostupni na njegovom GitHub račun, tako da svatko s potrebnim znanjem i iskustvom može vidjeti kako je provedeno objedinjavanje ROM-a. Doduše, postupak je malo složen i zahtijeva razinu stručnosti, ali to je proces postavljanja i zaboravljanja s prednostima koje proizlaze iz manjeg održavanja, manjeg dupliciranja posla i poboljšanog osjećaj sigurnosti da ljudi neće brkati datoteke dvaju uređaja jer samo jedan zip radi za oba. Nakon što se ROM ili kernel unificiraju i potvrdi da su u potpunosti funkcionalni na OnePlus 3 i OnePlus 3T, potrebno je vrlo malo dodatnog rada.


Nadamo se da smo iznijeli nove informacije koje bi trebale pomoći većem broju programera da se odluče za objedinjene verzije za uređaje. Razvoj na OnePlus 3T raste, a unificirane verzije budućnost su za oba uređaja.