Почему мы должны портировать ROM

272
Lewis Kelsey

Мы можем установить Windows на несколько машин, но когда кто-то пытается прошить ROM на другом устройстве Android, это не работает. Я предполагаю, что это потому, что оптимизация ядра и системы совместима только с конкретным SOC, батареей. BIOS информирует Windows о возможностях различных устройств через таблицы ACPI и работает с различными аппаратными средствами. Есть ли причина, по которой на устройствах с Android в обычном смысле нет уровня аппаратной абстракции, это просто выигрыш производителей?

-2
Большинство ваших предположений неверны. Вы не можете "прошить" ROM. Флэш-память не * "ROM" *. В Android есть слои абстракции HW. Тот факт, что Android работает на более широком диапазоне (* диапазон *, а не на количестве) устройств, чем Windows, подтверждает это. Проблема в том, что образ полностью настроен под аппаратное обеспечение. Принимая во внимание, что установка Windows молча настраивает себя и пытается автоматически установить все необходимые драйверы устройств для вас. Вот почему вы должны быть подключены к Интернету во время установки. sawdust 5 лет назад 1
https://www.google.co.uk/amp/s/lifehacker.com/how-to-flash-a-rom-to-your-android-phone-30885281/amp Ром только что стал синонимом мобильная ОС с пользовательским скином в этом случае Lewis Kelsey 5 лет назад 0

1 ответ на вопрос

0
LawrenceC

Есть ли причина, по которой на устройствах Android нет уровня аппаратной абстракции в обычном смысле?

Экономические причины:

  • Устройства Android, как правило, представляют собой одноплатные устройства на базе ARM со всем встроенным оборудованием, и это оборудование не изменится в течение срока службы устройства. Пользователь обычно просто покупает новое устройство.

  • Android - это встроенный тип операционной системы. Оборудование, на котором работает Android, как правило, не поддерживает и не запускает какую-либо другую операционную систему.

  • ACPI - сложный стандарт, который сложно реализовать.

Для таких вещей, как телефоны, время выхода на рынок стоит для компаний больше, чем разработка стандартов, которые используют другие компании. Windows, желая продавать операционные системы, которые работают на разных производителях оборудования на базе Intel, явно предпочитала иметь этот стандарт (и Intel, и Microsoft приложили руку к разработке ACPI).

Технические причины:

  • Windows во многом зависит от прошивки (BIOS или UEFI) во время запуска и во время работы. Linux может быть настроен так, чтобы вообще не полагаться на прошивку после загрузки, и для платформ ARM это, вероятно, типично.

    • Столь более простые (и менее дружественные) схемы можно использовать с Linux, например, с деревьями устройств или просто с встроенными в ядро ​​драйверами, которые знают, где находится их оборудование на платформе, без необходимости какого-либо обнаружения.

но когда кто-то пытается прошить ROM на другом устройстве Android, он не работает

  • Загрузчик в устройствах Android часто настраивается на загрузку только подписанного образа - если образ, содержащий ОС, не подписан, он не будет работать.

  • Сам загрузчик часто зависит от аппаратного обеспечения и предназначен для конкретной платы. (Вы не можете взять BIOS для одной модели ноутбука и ожидать, что он будет работать на другой модели ноутбука - вам, как OEM, придется создавать новый BIOS для новой платформы). Если образ ROM содержит загрузчик и вы пытаетесь запустить его на неправильной платформе, он, вероятно, не будет работать.

  • Драйверы Linux для аппаратных устройств во многих устройствах Android не с открытым исходным кодом. Включает в себя такие вещи, как дисплей, Wi-Fi, сотовая связь. Так что они не будут работать с более поздними версиями ядра. Вероятно, это основная причина, по которой разные ПЗУ не будут работать, потому что версия ядра - более поздняя, ​​более качественная, но более новый драйвер недоступен (и его нельзя создать без исходного кода).

  • Параметры командной строки, передаваемые загрузочному ядру, могут иметь решающее значение - например, эти параметры могут указывать ядру избегать определенных диапазонов памяти, которые приводят к блокировке системы при обращении к ней.

Эти ответы на вопросы ОП неверны (например, у Android есть HW-абстракция), и аргументация также неверна. OP приравнивает запись флеш-образа Android к установке Windows, которая выполняет настройку системы. Конфигурация флеш-образа Android не установлена. Эквивалентной операцией Windows будет трансплантация существующей системы Windows на жестком диске / твердотельном накопителе с одного компьютера на другой компьютер и ожидание безупречной загрузки. ОП сравнивает * установки *, которые похожи на яблоки с апельсинами, и этот «ответ» не указывает на это. sawdust 5 лет назад 1
Вы получили хорошее представление о том, что перепрошивка ПЗУ в том виде, в котором описывается OP, похожа на пересадку существующей Windows. Я знаю о HAL «интерфейс поставщика» в Oreo, но это не связано с тем, как ACPI на x86 пытается представить аппаратное обеспечение - Android HAL - это уровень операционной системы, а не уровень прошивки. LawrenceC 5 лет назад 0