СултанXDA объясняет подход к использованию унифицированного ПЗУ на OnePlus 3/3T

click fraud protection

Мы обратились к Султану XDA, чтобы узнать, как его унифицированное ПЗУ и ядро ​​работают на OnePlus 3/3T. Читайте дальше, как мы узнаем!

Назад, когда мы рассказывали об этом признанном разработчике XDA Султанхда выпустил свой Кастомное ПЗУ и ядро ​​CyanogenMod 13 для OnePlus 3T, многие люди были удивлены, увидев, что «та же» сборка ПЗУ, которая была выпущена для OnePlus 3T, появилась в OnePlus 3 (или наоборот!).

Султанxda принял единый подход к распространению ПЗУ для OnePlus 3 и OnePlus 3T из-за их во многом схожего аппаратного обеспечения и программного обеспечения низкого уровня. Это означало, что ПЗУ обеспечивало перекрестную совместимость между обоими устройствами, при этом на дуэт можно было распространять один и тот же zip-архив ПЗУ. Кросс-совместимые zip-архивы позволяли пользователям (и разработчикам тоже) не беспокоиться о том, что вы случайно прошьете неправильный zip-архив и получите заблокированное устройство. Это не означает, что OnePlus 3/3T легко разобрать — это просто влечет за собой меньшую головную боль в целом для всех участвующих сторон.

Мы обратились к признанному разработчику XDA. Султанхда чтобы пролить больше света на всю процедуру и способствовать принятию его метода. Вот основные выводы из разговора с дополнительным акцентом:

Что отличается от OnePlus 3/3T, позволяющего использовать унифицированные ПЗУ?

Причина, по которой возможно унифицированное ПЗУ, заключается в том, что OnePlus унифицировал BSP (собственные библиотеки) [Пакет поддержки платы]. Хотя унифицировать ядро ​​легко, унификация ПЗУ обычно невозможна для разработчиков [ПЗУ] из-за несоответствий в BSP, которые может устранить только OEM. С моей стороны все, что мне нужно было сделать, это унифицировать ядро ​​и разделить несколько образов прошивки графического процессора. Образы прошивки графического процессора Snapdragon 820 и 821 различаются, поэтому они не перекрестно совместимы. Я изменил ядро, чтобы сделать это загрузите правильную прошивку графического процессора для каждого устройства, чтобы это исправить. Затем я добавил соответствующие образы прошивок в ПЗУ в этом коммите. Остальные образы встроенного ПО для конкретного устройства (например, образы модема) расположены в разделе встроенного ПО на каждом устройстве, поэтому проблема с графическим процессором была единственной проблемой, связанной с прошивкой, с которой я столкнулся.

Как ПЗУ и ядро ​​определяют, что это за устройство?

Ядро знает, на каком устройстве оно работает, благодаря загрузчику. Загрузчик выбирает конфигурацию дерева устройств (упакованную в образ ядра), соответствующую идентификатору ее платы, и передает ее. конфигурации в ядро. Это дает ядру гибкость для загрузки соответствующих конфигураций как для OnePlus 3, так и для ОнеПлюс 3Т. Вы можете найти идентификатор платы для OnePlus 3 и OnePlus 3T перейдя по гиперссылкам.

Вам нужно только модифицированное ядро ​​для поддержки унифицированных сборок?

Нет, ПЗУ тоже должно быть унифицировано. OnePlus унифицировал BSP, начиная с открытых бета-версий для OP3, и сохранил его унифицированным в официальном выпуске OP3T OxygenOS. Это означает, что для унификации ПЗУ должны использовать собственные библиотеки либо из сборок открытой бета-версии OP3, либо из официальной версии OxygenOS OP3T. Существует также требование к образу прошивки графического процессора, которое я описал выше, и сенсорный экран OP3T. Прошивка также должна быть включена в ПЗУ (это было добавлено в коммит прошивки графического процессора, на который я дал ссылку). выше).

Кроме того, есть предостережение относительно унифицированного ядра: разработчики должны либо использовать мое ядро ​​(которое уже унифицировано), либо добавить поддержку OP3 в ядро ​​OxygenOS OP3T. Поддержка OP3T не может быть просто добавлена ​​в ядро ​​OP3 из-за неполной поддержки Snapdragon 821, поэтому унификация может потребовать большой работы от желающих разработчиков OP3. Когда я получил OP3T, мое ядро ​​уже имело полную поддержку Snapdragon 821 (поскольку мое ядро ​​основано на ветке Snapdragon 821 от CAF), поэтому процесс объединения прошел для меня довольно безболезненно.

Я уверен, что многие разработчики предпочли бы использовать ядро ​​OxygenOS OP3T, а не мое ядро, для чего потребуется добавить в него поддержку OP3. Я не рассматривал возможность создания унифицированного ядра для ПЗУ OxygenOS, поэтому для этого может потребоваться дополнительная работа.

Могут ли другие разработчики взглянуть на код и посмотреть, как это делается?

Да. Султанхда упоминает, что все его работы общедоступны на его сайте. Аккаунт GitHub, поэтому любой, кто обладает необходимыми знаниями, может увидеть, как была проведена унификация ПЗУ. Конечно, процедура немного сложна и требует определенного уровня знаний, но это во многом процесс «установил и забыл» с преимуществами, возникающими в виде меньшего обслуживания, меньшего дублирования работы и улучшенного чувство уверенности в том, что люди не перепутают файлы на двух устройствах, поскольку на обоих работает только один zip. После того как ПЗУ или ядро ​​будут унифицированы и подтверждены как полностью функциональные как на OnePlus 3, так и на OnePlus 3T, дополнительной работы потребуется совсем немного.


Мы надеемся, что нам удалось раскрыть новую информацию, которая поможет большему количеству разработчиков сделать выбор в пользу унифицированных сборок для устройств. Разработка OnePlus 3T растет, а унифицированные сборки — это будущее для обоих устройств в будущем.