Firmware file что это
Введение в Android Firmware
Пользовательская прошивка также является единственным способом установки новых версий Android на устройствах, которые больше не поддерживаются их производителями. Если вы не владеете устройством, принадлежащим к серии Nexus или Android One, я уверен, что вы уже это знали.
В этой статье я помогу вам понять, что такое Android-прошивка и как работает устройство Android. Я также расскажу вам об инструментах, которые вы можете использовать для замены прошивки на своём устройстве.
Предостережения
1. Что такое прошивка для Android?
Первоначально прошивка была термином, используемым для обозначения крошечных критически важных программ, установленных в памяти, доступной только для чтения, или ПЗУ, на электронном устройстве. Изменение прошивки было либо невозможным, либо требовало специального оборудования, которое обычно было недоступно обычным конечным пользователям.
Однако прошивка для Android отличается от других. Она включает в себя всю операционную систему Android и хранится в записываемой памяти под флэш-памятью NAND, том же типе памяти, который используется на устройствах хранения, таких как USB-накопители и SD-карты. Слово прошивка используется только потому, что производители устройств не удосужились придумать новое слово для этого.
Прошивку Android также часто называют Android ROM, потому что по умолчанию пользователи не могут напрямую писать в нее.
2. Что содержит прошивка Android?
Прошивка, установленная на устройстве Android производителем, содержит сборку операционной системы Android и две дополнительные программы с закрытым исходным кодом, которые обычно незаменимы, загрузчик и радио прошивка.
Что такое загрузчики
Загрузчик Android представляет собой небольшой фрагмент проприетарного кода, который отвечает за запуск операционной системы Android, когда устройство включено. Однако загрузчик почти всегда выполняет еще одну задачу. Он проверяет подлинность операционной системы.
Как он решает, что является подлинным? Он проверяет, был ли загрузочный раздел подписан с использованием уникального ключа OEM, что является сокращением от ключа Original Equipment Manufacturer. Ключ OEM, конечно же, принадлежит производителю устройства, является закрытым, и вы не можете понять, что это такое.
Из-за проверки подлинности вы не можете напрямую установить пользовательский ПЗУ на устройстве Android. К счастью, в наши дни большинство производителей устройств позволяют пользователям отключать проверку. На Android-жаргоне они позволяют пользователям разблокировать загрузчик.
Конкретная процедура, которую вам нужно выполнить, чтобы разблокировать загрузчик, зависит от вашего устройства. Некоторые производители, такие как Sony и HTC, ожидают, что вы предоставите секретный токен разблокировки. Другие просто ожидают, что вы запустите фиксированный набор команд с помощью терминала.
Обычно для запуска команд разблокировки используется инструмент fastboot, который является частью Android SDK. Например, если у вас есть устройство Nexus, вы можете разблокировать его загрузчик, выполнив следующую команду:
В этой статье вы узнаете больше о fastboot. Обратите внимание, что если у вас есть устройство с загрузчиком, которое невозможно разблокировать, нет простого способа изменить или заменить его прошивку.
Что такое радио прошивка
Это может показаться вам неожиданностью, но ваш смартфон Android фактически запускает другую операционную систему на независимом процессоре, называемом процессором основной полосы. Радио прошивка относится к операционной системе, которая работает на процессоре основной полосы частот.
Что такое билды Android
Сборка Android обычно используется в виде ZIP-файла, который может использоваться fastboot. Он имеет следующее содержимое:
С другой стороны, ramdisk является файловой системой только для чтения, которая монтируется ядром во время процесса загрузки. Он содержит хорошо известный процесс init, первый процесс, который запускается любой операционной системой на базе Linux. Он также содержит различные демоны, такие как adbd и healthd, которые запускаются процессом init. Вот как выглядит дерево каталогов ramdisk:
recovery.img очень похож на boot.img. Он имеет загрузочный исполняемый файл ядра, который может использовать загрузчик, и ramdisk. Следовательно, образ для восстановления также можно использовать для запуска устройства Android. Когда он используется, вместо Android запускается очень ограниченная операционная система, которая позволяет пользователю выполнять административные операции, такие как сброс пользовательских данных устройства, установка новой прошивки и создание резервных копий.
Процедура, необходимая для загрузки с использованием образа восстановления, зависит от устройства. Обычно это включает в себя запуск режима загрузчика, также называемый fastboot mode, путем нажатия комбинации аппаратных ключей, присутствующих на устройстве, а затем выбора опции Recovery. Например, на устройстве Nexus вам нужно нажать и удерживать кнопку питания в сочетании с кнопкой уменьшения громкости.
Кроме того, вы можете использовать adb, инструмент, включенный в Android SDK, для прямого входа в режим восстановления.
3. Использование fastboot
Аналогичным образом, если вы хотите заменить только загрузочный образ, вы должны использовать следующую команду:
Обратите внимание, что ни одна из команд fastboot, упомянутых в этом разделе, не будет работать, если загрузчик вашего устройства не был разблокирован.
Заключение
SP FlashTool как прошивать
SP FlashTool как прошивать. Аппаратная платформа MTK в качестве основы для построения современных смартфонов, планшетных компьютеров и других устройств получила очень широкое распространение. Вместе с разнообразием устройств, в жизнь пользователей пришла возможность выбора вариаций ОС Android – число доступных официальных и кастомных прошивок для популярных МТК-девайсов может достигать нескольких десятков! Для манипуляций с разделами памяти устройств Mediatek чаще всего используется SP Flash Tool — мощный и функциональный инструмент.
Несмотря на большое разнообразие MTK-устройств, процесс установки программного обеспечения через приложение SP FlashTool в целом одинаков и осуществляется в несколько шагов. Рассмотрим их подробно.
Содержание
Подготовка устройства и ПК
Для того, чтобы процедура записи файлов-образов в разделы памяти устройств прошла беспроблемно, необходимо подготовиться соответствующим образом, проведя определенные манипуляции, как с Андроид-девайсом, так и с ПК или ноутбуком.
1. Загружаем все необходимое, — прошивку, драйвера и само приложение. Распаковываем все архивы в отдельную папку, в идеальном варианте расположенную в корне диска С.
2. Желательно, чтобы названия папок для расположения файлов приложения и прошивки не содержали русских букв и пробелов. Наименование может быть любым, но называть папки следует осознанно, чтобы впоследствии не запутаться, особенно если пользователь любит экспериментировать с различными видами ПО, загружаемого в аппарат.
3. Устанавливаем драйвер. Этот пункт подготовки, а точнее его правильное выполнение во многом предопределяет беспроблемное протекание всего процесса. О том, как установить драйвер для MTK-решений, подробно рассказано в статье по ссылке ниже: Установка драйверов для прошивки Android
4. Делаем бэкап системы. При любом исходе процедуры прошивки, пользователю практически во всех случаях придется восстанавливать собственную информацию, а в том случае, если что-то пойдет не так, данные, которые не были сохранены в резервной копии, будут безвозвратно утеряны. Поэтому крайне желательно выполнить шаги одного из способов создания бэкапа из статьи: Как сделать бэкап Android-устройства перед прошивкой
5. Обеспечиваем бесперебойность подачи электроэнергии для ПК. В идеальном случае, компьютер, который будет использоваться для манипуляций через SP FlashTool должен быть полностью исправен и оснащен источником бесперебойного питания.
Установка прошивок
С помощью приложения SP FlashTool можно осуществлять практически все возможные операции с разделами памяти устройства. Установка прошивок – это основная функция и для ее выполнения в программе предусмотрено несколько режимов работы.
Способ 1: Download Only
Рассмотрим подробно процедуру загрузки ПО в Android-устройство при использовании одного из самых распространенных и часто используемых режимов прошивки через SP FlashTool — «Download Only».
1. Запускаем SP FlashTool. Программа не требует установки, поэтому для ее запуска просто дважды кликаем по файлу flash_tool.exe, расположенному в папке с приложением.
2. При первом запуске программы, появляется окно с сообщением об ошибке. Этот момент не должен волновать пользователя. После того, как путь расположения необходимых файлов будет указан программе, ошибка больше не появится. Нажимаем кнопку «ОК».
3. В главном окне программы после запуска изначально выбран режим работы — «Download Only». Сразу же следует отметить, что данное решение применяется в большинстве ситуаций и является основным для практически всех прошивочных процедур. Отличия в работе при использовании других двух режимов будут описаны ниже. В общем случае оставляем «Download Only» без изменений.
4. Переходим к добавлению в программу файлов-образов для дальнейшей их записи в разделы памяти аппарата. Для некоторой автоматизации процесса в SP FlashTool используется специальный файл под названием Scatter. Этот файл является по своей сути перечнем всех разделов флеш-памяти устройства, а также адресов начальных и конечных блоков памяти Андроид-устройства для записи разделов. Чтобы добавить скаттер-файл в приложение нажимаем кнопку «choose», расположенную справа от поля «Scatter-loading file».
5. После нажатия на кнопку выбора scatter-файла открывается окно Проводника, в котором необходимо указать путь к нужным данным. Скаттер-файл располагается в папке с распакованной прошивкой и имеет название MTxxxx_Android_scatter_yyyyy.txt, где xxxx – номер модели процессора устройства, для которого предназначены загружаемые в аппарат данные, а – yyyyy, тип памяти, используемый в девайсе. Выбираем скаттер и нажимаем кнопку «Открыть».
6. Важно отметить, что в приложении SP FlashTool предусмотрена проверка хеш-сумм, призванная обезопасить Андроид-девайс от записи неверных или поврежденных файлов. При добавлении скаттер-файла в программу производится проверка файлов-образов, перечень которых содержится в загружаемом скаттере. Эту процедуру можно отменить в процессе проверки или отключить в настройках, но делать этого категорически не рекомендуется!
7. После загрузки скаттер-файла, в автоматическом режиме добавились и компоненты прошивки. Об этом свидетельствуют заполненные поля «Name», «Begin Adress», «End Adress», «Location». Строки под заголовками содержат соответственно имя каждого раздела, начальный и конечный адреса блоков памяти для записи данных, а также путь, по которому расположены файлы-образы на диске ПК.
8. Слева от наименований разделов памяти располагаются чек-боксы, позволяющие исключить или добавить определенные файл-образы, которые будут записаны в устройство.
9. Проверяем настройки программы. Нажимаем меню «Options» и в раскрывшемся окне переходим в раздел «Download». Отмечаем галочками пункты «USB Checksum» и «Storage Сhecksum» — это позволит проверить контрольные суммы файлов перед записью в устройство, а значит избежать прошивки испорченных образов.
10. После выполнения вышеперечисленных шагов переходим непосредственно к процедуре записи файлов-образов в соответствующие разделы памяти устройства. Проверяем, что устройство отключено от компьютера, выключаем полностью Андроид-девайс, вынимаем и вставляем обратно аккумулятор, если он съемный. Для перевода SP FlashTool в режим ожидания подключения аппарата для прошивки нажимаем кнопку «Download», обозначенную зеленой стрелкой, направленной вниз.
11. В процессе ожидания подключения девайса, программа не дает возможности осуществлять какие либо действия. Доступна только кнопка «Stop», позволяющая прервать процедуру. Подключаем выключенный аппарат к USB-порту.
12. После подключения устройства к ПК и его определения в системе начнется процесс прошивки аппарата, сопровождаемый заполнением индикатора выполнения, расположенного внизу окна.
В течение процедуры индикатор меняет свой цвет в зависимости от производимых программой действий. Для полного понимания происходящих во время прошивки процессов рассмотрим расшифровку цветов индикатора:
13. После того, как программа выполнит все манипуляции, появляется окошко «Download OK», подтверждающее успешное завершение процесса. Отключаем девайс от ПК и запускаем его длительным нажатием клавиши «Питание». Обычно первый запуск Android после прошивки длится довольно долго, следует набраться терпения.
Способ 2: Firmware Upgrade
Процедура работы с MTK-устройствами под управлением Android в режиме «Firmware Upgrade»в целом аналогична вышеописанному методу «Download Only» и требует выполнения похожих действий от пользователя.
Отличием режимов является невозможность выбора отдельных образов для записи в варианте «Firmware Upgrade». Другими словами, в этом варианте память устройства будет перезаписана в полном соответствии с перечнем разделов, который содержится в скаттер-файле.
В большинстве случаев этот режим используется для обновления официальной прошивки в целом рабочего аппарата, если пользователю требуется новая версия ПО, а другие методы обновления не работают, либо неприменимы. Также может применяться при восстановлении девайсов после краха системы и в некоторых других случаях.
Процесс прошивки в режиме «Firmware Upgrade» после нажатия кнопки «Download» в SP FlashTool и подключения устройства к ПК состоит из следующих этапов:
Действия пользователя для осуществления прошивки в режиме «Firmware Upgrade», повторяют предыдущий способ, за исключением отдельных пунктов.
1. Выбираем скаттер-файл (1), выбираем режим работы SP FlashTool в раскрывающемся перечне (2), нажимаем кнопку «Download» (3), затем подключаем выключенный аппарат к порту USB.
2. По завершению процедуры, покажется окошко «Download OK».
Способ 3: Format All + Download
Режим «Format All+Download» в SP FlashTool предназначается для выполнения прошивки при восстановлении девайсов, а также используется в ситуациях, когда другие вышеописанные методы неприменимы либо не срабатывают.
Ситуации, в которых применяется «Format All+Download», многообразны. В качестве примера можно рассмотреть случай, когда в аппарате было установлено модифицированное ПО и/или выполнена переразметка памяти девайса на отличное от заводского решение, а затем понадобился переход на оригинальное ПО от производителя. В этом случае попытки записать оригинальные файлы завершаться ошибкой и программа SP FlashTool предложит использование аварийного режима в соответствующем окне-сообщении.
Этапов выполнения прошивки в рассматриваемом режиме всего три:
Шаги, необходимые для проведения процедуры форматирования и записи разделов в режиме «Format All+Download» аналогичны таковым в вышеописанных методах для режимов «Download» и «Firmware Upgrade».
1. Выбираем scatter-файл, определяем режим, нажимаем кнопку «Download».
2. Подключаем устройство к USB-порту ПК и дожидаемся окончания процесса.
Установка кастомного рекавери через SP Flash Tool
1. Запускаем Флеш Тул, добавляем scatter-файл, выбираем «Download Only».
2. С помощью чек-бокса в самом верху перечня разделов снимаем отметки со всех файлов-образов. Устанавливаем галочку только возле раздела «RECOVERY».
3. Далее необходимо указать программе путь к файлу-образу кастомного рекавери. Для этого совершаем двойной клик по пути, прописанному в разделе «Location», и в открывшемся окне Проводника находим необходимый файл *.img. Нажимаем кнопку «Открыть».
4. Результатом вышеописанных манипуляций должно стать нечто похожее на скриншот ниже. Галочкой отмечен исключительно раздел «RECOVERY» в поле «Location» указан путь и сам файл-образ рекавери. Нажимаем кнопку «Download».
5. Подключаем выключенный девайс к ПК и наблюдаем за процессом прошивки рекавери в устройство. Все происходит очень быстро.
6. По окончанию процесса снова видим уже знакомое по предыдущим манипуляциям окошко «Download OK». Можно перезагружаться в модифицированную среду восстановления.
Как видим, процесс прошивки MTK-девайсов на Android с помощью приложения SP Flash Tool — процедура не сложная, но требующая должной подготовки и взвешенности действий. Делаем все спокойно и обдумываем каждый шаг – успех обеспечен!
Мобильные устройства изнутри. Разметка памяти, структура файлов описания и разметки памяти
1. Введение
Как оказалось, разметка физической памяти мобильных устройств (МУ) это малоописанный раздел знаний, необходимых разработчику. Т.к. память существует во всех устройствах, созданных на основе микропроцессоров или микроконтроллеров, а их уже миллиарды, то это еще и очень-очень востребованный раздел знаний.
Эта статья посвящена аспектам разметки памяти только МУ, т.к. именно здесь существует тесно свитый разными производителями клубок из файлов описания разметки при почти полном отсутствии теоретических данных о структуре самих этих файлов.
Разметка физической памяти МУ формируется на основании таблиц или списков описаний параметров разделов памяти. Практически каждая фирма-производитель МУ имеет свою форму (структуру) этих таблиц. Тем не менее, все описания параметров разделов имеют много общего, что позволяет рассматривать их в едином контексте.
На основе таблиц описаний затем формируются файлы разметки памяти, которые в виде образов разделов прошиваются непосредственно в память МУ.
2. Что такое разметка памяти?
Подробнее, что представляет собой разметка памяти МУ и для чего это нужно, можно посмотреть, например, в [1]. Вот еще одна публикация, в которой доступно объясняется устройство памяти и ее разметка [2].
Если кратко, то разметка памяти, как процесс, выполняет распределение всего объема внутренней физической памяти МУ на отдельные разделы, которые могут иметь разное функциональное назначение, вплоть до разных файловых систем, и разные права доступа. Это позволяет выделить в памяти отдельно области для хранения данных и работы пользователя, отдельно для работы операционной системы, шифровать или форматировать разделы при необходимости и независимо друг от друга и т.д.
При выполнении разметки разработчик МУ должен придерживаться некоторых правил, которые называются схемами разметки памяти. Схема разметки описывает размещение всех разделов физической памяти: их очередность, смещение и название, т.е. метку или имя раздела. Могут указываться и другие параметры: его размер, тип, регион, флаги и т.п.
Для выполнения разметки памяти используют файлы двух видов: текстовые и бинарные (двоичные RAW-файлы).
Текстовый файл представляет собой перечень (список) всех разделов памяти, каждая запись которого содержит описание основных параметров этих разделов. Он используется при выполнении нескольких операций:
Процесс создания разметки памяти можно описать следующим алгоритмом:
3. Схемы разметки памяти
Чаще всего применяются две схемы разметки памяти: Mbr и Gpt.
При любой схеме разметки памяти первым по порядку разделом в пользовательском регионе МУ всегда должен быть раздел разметки (Mbr, Gpt, Parameter).
3.1.Mbr-схема разметки памяти
Согласно Mbr-схеме память МУ представляется как последовательность разделов, дополненная главной загрузочной записью или Mbr (Master Boot Record), содержащей таблицу описания разделов. Mbr физически располагается в первом (нулевом) секторе памяти МУ:
рис.1. Главная загрузочная запись.
Mbr содержит сигнатуру, т.е. признак Mbr, и непосредственно саму таблицу описания разделов.
Внутреннее строение Mbr [3] позволяет разместить в ней только 4 записи о разделах, что является в современных условиях существенным недостатком. Если требуется разбить память на большее количество разделов, то используется дополнительная (расширенная) загрузочная запись Extended Boot Record (Ebr). При этом в Mbr вместо записи об одном из разделов помещается запись о дополнительном (extended) разделе, содержащем только Ebr.
Сама Ebr устроена аналогично Mbr, и использовать ее нужно точно также. Т.е., если при заполнении таблицы Ebr опять не хватает места под записи о разделах, то создается следующая Ebr-таблица и т.д.
Mbr и все Ebr могут помещаться в отдельные файлы-образы, которые размещаются и прошиваются в соответствующих отдельных разделах памяти. При этом все файлы, содержащие Ebr, имеют имена нумерованные последовательно: Ebr1, Ebr2,…
При другом варианте Ebr помещаются в один файл-образ последовательно, тогда этот образ, соответственно, размещается в одном Ebr-разделе памяти.
3.2. Gpt-схема разметки памяти
Gpt-схема разметки (GUID Partition Table) является частью EFI (Extensible Firmware Interface) — стандарта, используемого вместо BIOS для разметки памяти и загрузки ее разделов. Переход на другой формат описания разделов позволил устранить самый существенный недостаток Mbr-схемы — малое число разделов, т.к. в таблице описания разделов Gpt можно разместить до 128 разделов. Структуру самих таблиц можно посмотреть в [4].
Согласно Gpt-схеме память МУ тоже представляет собой последовательность разделов, необходимых для работы МУ, дополненную спереди Gpt-таблицей описания разделов, называемой основной. При этом после всех разделов размещается дополнительная Gpt-таблица, называемая резервной. Такое расположение таблиц, теоретически, повышает надежность разметки, т.к. при сбое или порче основной Gpt-таблицы ОС может использовать для работы, или восстановления основной, резервную.
4. Таблицы описания разделов памяти
Таблицы описания разделов памяти МУ содержат информацию о всех разделах, необходимую для создания разметки памяти. Каждая строка (запись) таблицы описывает один раздел и содержит, как правило, следующие параметры:
4.1. Parameter-файл
Прошивка МУ на чипе RK содержит текстовый файл PARAMETER, который предназначен для описания построения (настройки и загрузки) физической памяти блочного типа. Причем использовался он и на ОС LINUX.
Оригинальный вид содержимого файла PARAMETER для МУ Cube u30gt-M приведен ниже:
FIRMWARE_VER:4.0.4
MACHINE_MODEL:U30GT-M
MACHINE_ID:007
MANUFACTURER:RK30SDK
MAGIC:0x5041524D
ATAG:0x60000800
MACHINE:3066
CHECK_MASK:0xFF
KERNEL_IMG:0x60408000
RECOVERY_KEY:0,4,C,6,0
COMBINATION_KEY:0,4,C,6,0
CMDLINE: console=ttyFIQ0 androidboot.console=ttyFIQ0 init=/init initrd=0x62000000,0x00800000 mtdparts=rk29xxnand:0x00002000@0x00002000(misc),0x00004000@0x00004000(kernel),0x00008000@0x00008000( boot),0x00008000@0x00010000(recovery),0x000C0000@0x00018000(backup),0x00040000@0x000D8000(cache),0x00200000@0x00118000(userdata),0x00002000@0x00318000(kpanic),0x00120000@0x0031A000(system),-@0x0043A000(user)
4.1.1. Описание параметров файла PARAMETER
Файл PARAMETER может содержать следующие параметры:
4.1.2. Параметр CMDLINE и его возможности
Формат командной строки, т.е. CMDLINE, имеет следующий вид:
CMDLINE: ключ1=значение1 [ключ2=значение2], где
mtddef — описание разметки памяти устройства блочного типа (БУ). Если МУ содержит несколько БУ, то может содержать и несколько описаний, которые располагаются последовательно без промежутка и разделяются символом «точка с запятой».
Описание разметки памяти каждого БУ имеет следующее строение:
Параметр part_size описывает размер раздела в блоках, выраженный в hex-системе счисления. Если вместо размера указан символ «минус» («-«), это означает максимально возможный размер, т.е. до физического конца памяти.
Параметр part_offset представляет смещение раздела в блоках, выраженный в hex-системе счисления. Смещение всегда выравнивается на границу в 0х1000.
Параметр label (имя раздела) это строковый идентификатор раздела, заключенный в круглые скобки, например, (boot).
Параметр flag (флаг) может принимать только одно значение — «ro«, означающее, что раздел предназначен только для чтения. Отсутствие флага означает, что раздел доступен для чтения и записи.
Несколько очень важных замечаний:
4.2. Rawprogram0-файл
Файл rawprogram0.xml предназначен для описания разметки памяти МУ на основе чипов Qualcomm и имеет следующее строение:
Рис.3. Вид файла rawprogram0.xml от Lenovo s90a
Он содержит таблицу описания параметров разделов в виде xml-элементов типа program. Все разделы перечисляются строго в порядке их размещения в памяти МУ.
Каждый xml-элемент может содержать следующие xml-атрибуты:
4.3. Ota-файл
Это единственный файл описаний, который описывает строение файла прошивки, а не разметку памяти.
Например, файл ota-обновления МУ на чипе МТ6582 фирмы MTK, имеет следующий вид:
Он содержит описание тех разделов, чьи образы присутствуют в файле прошивки для ota-обновления, каждое из которых имеет следующее строение:
label part_offset, где
4.4. Scatter-файл
Файл scatter содержит описание разметки памяти МУ, построенных на основе чипов МТК. Существует три версии структуры этого файла, что связано с историческим развитием возможностей как самих чипов памяти, так и чипов процессоров фирмы MTK.
4.4.1. Версия 1
Файл описаний разметки первой версии содержит список описаний каждого раздела памяти, и имеет следующий вид:
Рис.5. Scatter-файл первой версии
Каждый раздел памяти описывается следующей структурой:
Такое описание разделов памяти предполагает, что:
4.4.2. Версия 2
Scatter-файл описаний разметки памяти второй версии содержит заголовок и непосредственно таблицу описаний каждого раздела памяти. Он имеет следующий вид:
Рис.6. Scatter-файл второй версии
Заголовок содержит параметры прошивки целиком и содержит следующие поля:
Для чипов МТ6572-МТ6577 в качестве значения Begin Address флешером используется значение поля linear_start_addr, отражающее истинное смещение раздела в памяти (представляющей один сплошной регион), т.к. чипы не умеют работать с регионами, а используемая память имела только один регион для размещения разделов. При этом значение поля «physical_start_addr» всегда равно нулю.
Чипы МТ6582 уже умеют работать с регионами, но используемая память еще имеет только один регион. Поэтому в качестве значения Begin Address флешером уже используется значение поля physical_start_addr, отражающее смещение раздела в пределах регионов, создаваемых в памяти программно, а поле linear_start_addr содержит значения смещения от начала чипа памяти.
В связи с тем, что, начиная с чипа МТ6592, МУ от МТК используют полноценную работу с регионами памяти, то для чипов МТ6592 и выше флешером в качестве значения Begin Address используется значение поля physical_start_addr.
Значение поля Format Length флешер всегда получает из поля partition_size.
5.Файлы разметки памяти.
Файлы разметки памяти содержат образ раздела разметки памяти МУ. Их структура зависит от схемы разметки (Gpt или Mbr) и от назначения, например, резервные файлы разметки Pmt или Gpt.
Встречаются следующие виды файлов разметки:
5.1. Mbr-файл
Mbr-файл представляет собой образ раздела разметки памяти по Mbr-схеме, имеющий размер 1 сектор, т.е. 512 байт.
В МУ применяется так называемая классическая структура Mbr-файла [5]:
Рис.7. Классическая структура Mbr-файла
Каждая запись параметров раздела содержит следующие поля, значения которых отличается от принятых в классической структуре Mbr:
Поле IsBoot имеет размер 1 байт и используется для обозначения активности раздела, старший бит которого указывает на загрузочный раздел:
Поле Type имеет размер 1 байт и используется производителями МУ для обозначения типа описываемого раздела. Обозначение типа раздела у разных производителей могут отличаться, но есть некоторые общепринятые значения:
Поле Offset имеет размер 4 байта и содержит значение смещения раздела, выраженное в секторах.
Поле Size имеет размер 4 байта и содержит значение размера раздела, выраженное тоже в секторах.
По адресу 0x01FE расположена сигнатура Mbr-файла, имеющая значение 0xAA55.
5.2. Ebr-файл
Ebr-файл представляет собой образ расширенного раздела разметки памяти, выполненной по Mbr-схеме. Он имеет такое же строение и размер, как и Mbr-файл:
Рис.8. Классическая структура Ebr-файла
Отличия заключаются в том, что в Ebr-файле признак активности всегда установлен в 0, да и этих файлов, при необходимости, может быть уже не один, а 63. Соответственно, для их размещения тоже понадобится создавать до 63 разделов, что приводит к расточительному расходованию памяти МУ.
Если разделов памяти относительно немного, например, как в МУ Star Z2, то используются отдельные файлы Ebr1 и Ebr2, размещаемые в отдельных разделах. Но, если разделов много, например,, то все файлы Ebr можно сложить в один и разместить общий файл в одном разделе памяти.
5.3. Gpt-файл
Gpt-файл содержит образ разметки памяти по Gpt-схеме. Чаще всего МУ имеют стандартную структуру Gpt-схемы, поэтому, фактически, в прошивке имеется два Gpt-файла: основной, называемый pgpt (primary) или gpt_main, и вторичный (резервный), называемый sgpt (secondary) или gpt_backup.
Основной Gpt-файл располагается в памяти МУ, начиная с нулевого сектора, занимает 34 сектора и имеет следующее строение:
5.4. Parameter-файл
Parameter-файл, т.е. образ раздела, содержащего разметку памяти, содержит только сам текстовый файл PARAMETER, причем независимо от размеров этого раздела. Вот как Parameter-файл выглядит, например, внутри прошивки для устройства U30GT-H фирмы RK [6]:
Рис.9. Parameter-файл от U30GT-H на процессоре RK3066
5.5. Pmt-файл
Pmt-файл представляет собой образ резервного раздела разметки памяти, используемой разработчиками МУ фирмы МТК, и имеет размер 4096 байт.
Образ раздела PMT состоит из двух таблиц описания разделов памяти. В начале расположена базовая, а следом за ней резервная или зеркальная (mirror) таблица описания разделов.
Каждая из таблиц состоит из:
Для резервной таблицы эта строка имеет вид «‘MPT1’\х01\х00\х03\х01»:
Рис.13.Сигнатура конца резервной таблицы
Структура каждой записи имеет размер 0х58 (88) байт состоит из 4 полей и имеет следующий вид:
5.6. Pit-файл
Pit-файл (Partition Information Table) представляет собой образ раздела разметки памяти, используемой разработчиками МУ фирмы Samsung, и имеет размер 4096 байт. Информация по строению образа взята из [7, 8].
Pit-файл состоит из заголовка и таблицы описаний параметров разделов.
Заголовок имеет размер 28 байт и содержит следующие поля:
Следом располагается таблица описаний параметров разделов, состоящая из записей о разделах. Признак конца таблицы — пустая запись. Каждая запись содержит следующие поля:
Поле binary содержит тип операционной системы. Допустимы следующие значения:
Поле device содержит тип устройства. Допустимы следующие значения:
Поле id содержит порядковый номер раздела в прошивке.
Поле flags содержит флаги раздела. Может принимать значения:
Поле update содержит флаги раздела при обновлении. Может принимать значения:
Поле part_off содержит смещение раздела в памяти, выраженное в блоках.
Поле part_len содержит размер раздела в памяти, выраженный в блоках.
Поле offset содержит смещение файла-образа в прошивке, выраженное в блоках.
Поле file_size содержит размер файла-образа, выраженный в блоках.
Поле label имеет длину 32 байта и содержит метку раздела памяти, завершенную нулем (0х00).
Поле file_name содержит имя файла-образа раздела прошивки, завершенное нулем (0х00).
Поле fota_name содержит имя файла-образа раздела прошивки FOTA-обновления, завершенное нулем (0х00).