Переразметка памяти android мтк

Переразметка памяти android мтк

Разметка памяти мобильных устройств. Теория и практика

В этой теме будут затронуты следующие вопросы:

  • строение файлов разметки памяти, таких как scatter, MBR, EBR, GPT, EFI, parameter и др.;
  • предложены средства (приложения) для изменения разметки памяти;
  • даны практические рекомендации по осуществлению операций по переразбивке (переразметке) памяти мобильных устройств.

Для начала стоит начать с материала под спойлером «Полезная информация«, а затем, наполнившись знаниями, приступить и к практике, используя приложения, представленные ниже:

Требования:

  • операционная система Windows 7 или выше;
  • установленный пакет .NET 4.0.

Возможности:

  • позволяет изменять размер ЛЮБОГО раздела памяти с автоматическим пересчетом параметров всех разделов;
  • позволяет удалять любой раздел полностью;
  • восстанавливать PMT-файл по имеющемуся scatter-файлу;
  • восстанавливать scatter-файл по имеющемуся PMT-файлу;
  • автоматически формирует файлы разметки памяти (scatter, MBR+EBR);
  • устанавливает верхнюю границу памяти 3 способами ;
  • размеры памяти привязаны к размеру блока, размер которого можно выбрать ;
  • работает с нестандартными scatter-файлами;
  • мультиязычность. Поддерживается два языка: русский и английский.

Свежая версия
Архив содержит папку с ресурсами русского языка, распаковать ВСЮ структуру вместе.
ScatterEditor_v1.06.zip ( 43.32 КБ )

Инструкция
Инструкция пользователя ScatterEditor_v1.06.zip ( 1.36 МБ )

Требования:

  • операционная система Windows 7 или выше;
  • установленный пакет .NET 4.0.

Возможности:

  • поддерживает файлы новой структуры;
  • позволяет изменять размер ЛЮБОГО раздела памяти с автоматическим пересчетом параметров всех разделов;
  • позволяет удалять разделы;
  • автоматически формирует файлы разметки памяти (scatter, MBR+EBR);
  • правильно устанавливает верхнюю границу памяти, которая просматривается через свойства аппарата;
  • мультиязычность. Поддерживается два языка: русский и английский.

Свежая версия
Архив содержит папку с ресурсами русского языка, распаковать ВСЮ структуру вместе.
Scatter2Editor_v207.7z ( 34.77 КБ )

Инструкция в pdf формате
Инструкция пользователя Scatter2Editor_v2.03.zip ( 1011.1 КБ )

Требования

  • операционная система Windows 7 или выше;
  • установленный пакет .NET 4.0.

Возможности

  • позволяет редактировать размер и флаг ЛЮБОГО раздела;
  • позволяет изменять параметры командной строки запуска;
  • мультиязычная версия;

Свежая версия
RK_ParamEd_v1.01.rar ( 20.43 КБ )

Инструкция пользователя
RK_ParamEd_1.01. Users manual.rar ( 990.79 КБ )

  • PartitionsA23 — разметка разделов на процессорах AllWinner — для чипов А23 и А33, A31s (возможно подойдёт и для других чипов)

Приложение для обработки файлов разметки схем DOS (MBR+EBR, partition.bin и т.п.) и GUID (файл GPT, EFI и т.п.).
Требования

  • операционная система Windows 7 или выше;
  • установленный пакет .NET 4.0.

Свежая версия
PartitionsEditor_1.02.rar ( 122.15 КБ )

Инструкция пользователя
Скоро будет.

В теме нет куратора. По вопросам наполнения шапки обращайтесь к модераторам раздела через кнопку под сообщениями, на которые необходимо добавить ссылки.
Если в теме есть пользователь, желающий стать Куратором и соответствующий Требованиям для кандидатов, он может подать заявку в теме Хочу стать Куратором (предварительно изучив шапку темы и все материалы для кураторов).

Сообщение отредактировал derak1129 — 12.10.21, 06:08

Проверить успешность процесса переразмеки, можно только одним способом : посмотреть каким стал размер того раздела, манипуляции с которым Вы проводили в программе ScatterEditor .
Посмотреть размеры разделов телефона можно, например, через программку MTK Droid Tools Для этого подключите тел. к ПК, на котором уже установлены все необходимые драйвера, и запускаем прогу (через эту же прогу получаем временный Root-Shell , если его нет) затем жмем на кнопку «Карта блоков» . Появляется новое окошко, в котором и смотрим размеры разделов телефона.

Сообщение отредактировал SevenMaxs — 15.09.14, 17:14

ps: Могу помочь в создании топиков (в стиле Android update-script, лучшую инфу с форума собрал в одном месте).

Prince_Saint
Спасибо за информацию, но Вы не поняли замысел. Я не буду собирать в ОДНО место известные ссылки по тематике разметки, а ПРЕДЛАГАЮ готовые решения для работы. И все это буду подкреплять легкой теорией.
Беда многих перечисленных Вами ссылок в том, что они описывают решение КОНКРЕТНОЙ задачи, не описывая основ. Это приводит к тому, что при бездумном повторении этих решений, большая часть пользователей получает «кирпич» из своего любимца.
Чтобы не быть голословным начнем с описания файла MBR

Что такое MBR-файл.

Введение.
Для работы операционной системы (ОС) необходимо создать таблицу размещения ее частей. Эта таблица находится в MBR (Master Boot Record — главная загрузочная запись), которая физически располагается в начале памяти.
MBR содержит саму таблицу размещения разделов, сигнатуру файла (т.е. признак Boot Record) и исполнимый код, используемый некоторыми ОС для загрузки.

Структура MBR и EBR файлов.

MBR имеет размер 512 байт, т.е. один физический сектор и имеет следующую структуру:

Каждая запись таблицы разделов имеет длину 16 байт, а содержимое зависит от используемой ОС. Для мобильных устройств формат записи таблицы разделов имеет следующий вид:

Структура записи таблицы разделов
——————————————
Смещение Длина Описание
——————————————
00h-03h 4 Неиспользуется (всегда 0х0)
04h 1 Код типа раздела
05h-07h 3 Неиспользуется (всегда 0х0)
08h 4 Смещение раздела (в секторах по 512 байт)
0Ch 4 Количество секторов раздела (длина раздела)
——————————————

Смещение раздела указывается от первого сектора описываемой этой таблицей области памяти. Т.е. если в поле смещения раздела указано значение 0х400, а сама таблица (MBR) расположена в памяти, начиная с адреса 0х00600000 (это указывается в scatter-файле), то этот раздел физически будет расположен в памяти с адреса

0х00600000
+ 0х00080000 (0х400*0х200=0х00080000)
—————
0х00680000

Код типа раздела описывает его содержимое. Так, если раздел не содержит информации, т.е. пуст, то его код устанавливается в 0х00.
Если разделов больше 4 и в одну таблицу MBR они не помещаются, то заводится дополнительная таблица — расширительная. Она называется EBR1 (Extended Boot Record). Код такого раздела 0х05. Коды часто используемых разделов приведены в таблице.
Раздел, содержащий EBR1 имеет точно такую же структуру, только отсутствует исполнимый код. Если количество разделов не помещается и в дополнительную таблицу, то одна из записей будет содержать описание следующей таблицы, имеющей название EBR2. И так далее по мере надобности.

Работа с MBR и EBR файлами.
В файлы, содержащие таблицы MBR и EBR, вносятся изменения после корректировки scatter-файла. Зная первоначальные размер и смещение раздела, его можно найти в таблице BR.
Затем новые значения этих параметров переводятся из байт в сектора, разделив на 512 (0х200), и вписываются в соответствующие поля таблицы.

В связи с большим объемом материала примеры я решил вынести в отдельный пост.

Сообщение отредактировал vin2809 — 12.02.14, 20:39

Введение.
Разметка памяти, т.е. разбивка на разделы, в устройствах на чипах МТК производится при помощи файла, который называется «scatter file».
Он используется программами-прошивальщиками, т.н. флешерами (от английского «flasher») при прошивке полного образа памяти или отдельных ее частей, называемых разделами.
Структура scatter file содержит описание всех существующих разделов памяти, независимо от того, что они будут содержать в работающем устройстве.

Строение scatter file.
Существует две версии структуры scatter-файла. Рассмотрим первую версию, используемую в большинстве мобильных устройств на чипах MTхх.
Полное описание раздела памяти представляет собой набор строк вида:

[__NODL_]name offset [length]
<
>, где

  • __NODL_ — «No download» признак того, что раздел будет пропущен флешером, и для его работы не требуется файл для прошивки. Такой раздел можно вообще исключить из scatter file;
  • name — название раздела;
  • offset — смещение раздела от начала памяти в 16-ричном виде, байт;
  • length — длина раздела в 16-ричном виде, байт.

Квадратные скобки означают необязательный параметр.
Чаще всего используется сокращенная запись вида:

  • — partition_index — индексный номер раздела, например, SYS1;
  • — partition_name — имя раздела, например, MBR;
  • — file_name — имя файла, содержащего образ раздела, или NONE;
  • — is_download — признак загружаемости раздела (что-то типа __NODL_);
  • — type — тип раздела. Указывает на содержимое раздела. Может принимать следующие значения:

EXT4_IMG — раздел содержит часть файловой системы EXT4;
NORMAL_ROM — раздел содержит сохраненный образ или отдельный файл;
SV5_BL_BIN — раздел содержит «сырой код» (Raw Code), т.е. исполнимый код;

  • — linear_start_addr — начальный адрес размещения раздела в файле прошивки, байт;
  • — physical_start_addr — начальный адрес размещения раздела в памяти устройства (физический адрес), байт;
  • — partition_size — размер раздела, байт;
  • — region — размещение раздела. Может принимать следующие значения:

EMMC_BOOT_1 —
EMMC_USER —

  • — storage — HW_STORAGE_EMMC
  • — boundary_check — признак необходимости отметки границы раздела (во внутренней БД или PMT);
  • — is_reserved — признак необходимости резервного копирования;
  • — operation_type — тип операции. Может принимать следующие значения:

BINREGION — область «сырого кода»;
BOOTLOADERS — загрузчик;
INVISIBLE — невидимый раздел;
PROTECTED — защищенный раздел;
RESERVED — зарезервирован;
UPDATE — обновляемый раздел.

  • — reserve

Пример полного scatter-файла второй версии, приведен в файле «Scatter_v2.txt».

Работа со scatter file.
Любой флешер использует scatter file только для ПОЛНОЙ разметки памяти.
Если Вы прошиваете один или несколько разделов, то флешер размещение разделов берет из внутренней «базы данных» — файла PMT (Partitions Map Table). Он считывает значение смещения для раздела (физический адрес) и копирует,т.е. «прошивает» образ раздела в память, начиная с этого физического адреса.
Т.к. scatter file содержит перечень и физические адреса размещения всех разделов памяти, то изменив его можно произвести переразметку этой памяти. Для этого необходимо изменить значения смещений необходимых разделов.
Например, в разделе USRDATA располагаются данные программ пользователя: логи работы и ошибок, данные о рекордах игр и т.д. Поэтому этот раздел чаще других переполняется, что приводит к появлению сообщений вида «Память переполнена».
В типовом scatter file он имеет смещение 0x34f80000 и размер 0x74f80000-0x34f80000=0х40000000(или 1073741824=1Гб). Увеличим его, например, на 256Мб(268435456). Тогда размер раздела станет 1073741824+268435456=1342177280(или 0х50000000 в hex). Т.е. мы добавили в раздел еще 0х10000000 байт. Тогда смещение следующего раздела передвинется на эту же величину:
было — 0х74f80000
стало — 0х84f80000
Если сделать так со смещениями ВСЕХ последующих разделов, то они ВСЕ передвинутся и на эту величину увеличится ОБЩИЙ размер памяти, занимаемой прошивкой. А это недопустимо. Поэтому нужно уменьшить размер какого-либо последующего раздела. У нас это раздел пользователя (FAT).
Изменить его размер мы не можем, т.к. он расположен до конца существующей памяти. Он просто автоматически укоротится.
Казалось бы и все, но укорачивать разделы можно до определенного предела (до «нуля»). Поэтому, если смещение последнего раздела переходит верхнюю границу памяти, то придется откатывать назад все изменения или уменьшать размер «прибавки» раздела.

Пример scatter-файла
Scatter_v2.rar ( 1 КБ )

Сообщение отредактировал vin2809 — 27.02.14, 15:26

Источник

Переразметка памяти android мтк

Разметка памяти мобильных устройств. Теория и практика

В этой теме будут затронуты следующие вопросы:

  • строение файлов разметки памяти, таких как scatter, MBR, EBR, GPT, EFI, parameter и др.;
  • предложены средства (приложения) для изменения разметки памяти;
  • даны практические рекомендации по осуществлению операций по переразбивке (переразметке) памяти мобильных устройств.

Для начала стоит начать с материала под спойлером «Полезная информация«, а затем, наполнившись знаниями, приступить и к практике, используя приложения, представленные ниже:

Требования:

  • операционная система Windows 7 или выше;
  • установленный пакет .NET 4.0.

Возможности:

  • позволяет изменять размер ЛЮБОГО раздела памяти с автоматическим пересчетом параметров всех разделов;
  • позволяет удалять любой раздел полностью;
  • восстанавливать PMT-файл по имеющемуся scatter-файлу;
  • восстанавливать scatter-файл по имеющемуся PMT-файлу;
  • автоматически формирует файлы разметки памяти (scatter, MBR+EBR);
  • устанавливает верхнюю границу памяти 3 способами ;
  • размеры памяти привязаны к размеру блока, размер которого можно выбрать ;
  • работает с нестандартными scatter-файлами;
  • мультиязычность. Поддерживается два языка: русский и английский.

Свежая версия
Архив содержит папку с ресурсами русского языка, распаковать ВСЮ структуру вместе.
ScatterEditor_v1.06.zip ( 43.32 КБ )

Инструкция
Инструкция пользователя ScatterEditor_v1.06.zip ( 1.36 МБ )

Требования:

  • операционная система Windows 7 или выше;
  • установленный пакет .NET 4.0.

Возможности:

  • поддерживает файлы новой структуры;
  • позволяет изменять размер ЛЮБОГО раздела памяти с автоматическим пересчетом параметров всех разделов;
  • позволяет удалять разделы;
  • автоматически формирует файлы разметки памяти (scatter, MBR+EBR);
  • правильно устанавливает верхнюю границу памяти, которая просматривается через свойства аппарата;
  • мультиязычность. Поддерживается два языка: русский и английский.

Свежая версия
Архив содержит папку с ресурсами русского языка, распаковать ВСЮ структуру вместе.
Scatter2Editor_v207.7z ( 34.77 КБ )

Инструкция в pdf формате
Инструкция пользователя Scatter2Editor_v2.03.zip ( 1011.1 КБ )

Требования

  • операционная система Windows 7 или выше;
  • установленный пакет .NET 4.0.

Возможности

  • позволяет редактировать размер и флаг ЛЮБОГО раздела;
  • позволяет изменять параметры командной строки запуска;
  • мультиязычная версия;

Свежая версия
RK_ParamEd_v1.01.rar ( 20.43 КБ )

Инструкция пользователя
RK_ParamEd_1.01. Users manual.rar ( 990.79 КБ )

  • PartitionsA23 — разметка разделов на процессорах AllWinner — для чипов А23 и А33, A31s (возможно подойдёт и для других чипов)

Приложение для обработки файлов разметки схем DOS (MBR+EBR, partition.bin и т.п.) и GUID (файл GPT, EFI и т.п.).
Требования

  • операционная система Windows 7 или выше;
  • установленный пакет .NET 4.0.

Свежая версия
PartitionsEditor_1.02.rar ( 122.15 КБ )

Инструкция пользователя
Скоро будет.

В теме нет куратора. По вопросам наполнения шапки обращайтесь к модераторам раздела через кнопку под сообщениями, на которые необходимо добавить ссылки.
Если в теме есть пользователь, желающий стать Куратором и соответствующий Требованиям для кандидатов, он может подать заявку в теме Хочу стать Куратором (предварительно изучив шапку темы и все материалы для кураторов).

Сообщение отредактировал derak1129 — 12.10.21, 06:08

Проверить успешность процесса переразмеки, можно только одним способом : посмотреть каким стал размер того раздела, манипуляции с которым Вы проводили в программе ScatterEditor .
Посмотреть размеры разделов телефона можно, например, через программку MTK Droid Tools Для этого подключите тел. к ПК, на котором уже установлены все необходимые драйвера, и запускаем прогу (через эту же прогу получаем временный Root-Shell , если его нет) затем жмем на кнопку «Карта блоков» . Появляется новое окошко, в котором и смотрим размеры разделов телефона.

Сообщение отредактировал SevenMaxs — 15.09.14, 17:14

ps: Могу помочь в создании топиков (в стиле Android update-script, лучшую инфу с форума собрал в одном месте).

Prince_Saint
Спасибо за информацию, но Вы не поняли замысел. Я не буду собирать в ОДНО место известные ссылки по тематике разметки, а ПРЕДЛАГАЮ готовые решения для работы. И все это буду подкреплять легкой теорией.
Беда многих перечисленных Вами ссылок в том, что они описывают решение КОНКРЕТНОЙ задачи, не описывая основ. Это приводит к тому, что при бездумном повторении этих решений, большая часть пользователей получает «кирпич» из своего любимца.
Чтобы не быть голословным начнем с описания файла MBR

Что такое MBR-файл.

Введение.
Для работы операционной системы (ОС) необходимо создать таблицу размещения ее частей. Эта таблица находится в MBR (Master Boot Record — главная загрузочная запись), которая физически располагается в начале памяти.
MBR содержит саму таблицу размещения разделов, сигнатуру файла (т.е. признак Boot Record) и исполнимый код, используемый некоторыми ОС для загрузки.

Структура MBR и EBR файлов.

MBR имеет размер 512 байт, т.е. один физический сектор и имеет следующую структуру:

Каждая запись таблицы разделов имеет длину 16 байт, а содержимое зависит от используемой ОС. Для мобильных устройств формат записи таблицы разделов имеет следующий вид:

Структура записи таблицы разделов
——————————————
Смещение Длина Описание
——————————————
00h-03h 4 Неиспользуется (всегда 0х0)
04h 1 Код типа раздела
05h-07h 3 Неиспользуется (всегда 0х0)
08h 4 Смещение раздела (в секторах по 512 байт)
0Ch 4 Количество секторов раздела (длина раздела)
——————————————

Смещение раздела указывается от первого сектора описываемой этой таблицей области памяти. Т.е. если в поле смещения раздела указано значение 0х400, а сама таблица (MBR) расположена в памяти, начиная с адреса 0х00600000 (это указывается в scatter-файле), то этот раздел физически будет расположен в памяти с адреса

0х00600000
+ 0х00080000 (0х400*0х200=0х00080000)
—————
0х00680000

Код типа раздела описывает его содержимое. Так, если раздел не содержит информации, т.е. пуст, то его код устанавливается в 0х00.
Если разделов больше 4 и в одну таблицу MBR они не помещаются, то заводится дополнительная таблица — расширительная. Она называется EBR1 (Extended Boot Record). Код такого раздела 0х05. Коды часто используемых разделов приведены в таблице.
Раздел, содержащий EBR1 имеет точно такую же структуру, только отсутствует исполнимый код. Если количество разделов не помещается и в дополнительную таблицу, то одна из записей будет содержать описание следующей таблицы, имеющей название EBR2. И так далее по мере надобности.

Работа с MBR и EBR файлами.
В файлы, содержащие таблицы MBR и EBR, вносятся изменения после корректировки scatter-файла. Зная первоначальные размер и смещение раздела, его можно найти в таблице BR.
Затем новые значения этих параметров переводятся из байт в сектора, разделив на 512 (0х200), и вписываются в соответствующие поля таблицы.

В связи с большим объемом материала примеры я решил вынести в отдельный пост.

Сообщение отредактировал vin2809 — 12.02.14, 20:39

Введение.
Разметка памяти, т.е. разбивка на разделы, в устройствах на чипах МТК производится при помощи файла, который называется «scatter file».
Он используется программами-прошивальщиками, т.н. флешерами (от английского «flasher») при прошивке полного образа памяти или отдельных ее частей, называемых разделами.
Структура scatter file содержит описание всех существующих разделов памяти, независимо от того, что они будут содержать в работающем устройстве.

Строение scatter file.
Существует две версии структуры scatter-файла. Рассмотрим первую версию, используемую в большинстве мобильных устройств на чипах MTхх.
Полное описание раздела памяти представляет собой набор строк вида:

[__NODL_]name offset [length]
<
>, где

  • __NODL_ — «No download» признак того, что раздел будет пропущен флешером, и для его работы не требуется файл для прошивки. Такой раздел можно вообще исключить из scatter file;
  • name — название раздела;
  • offset — смещение раздела от начала памяти в 16-ричном виде, байт;
  • length — длина раздела в 16-ричном виде, байт.

Квадратные скобки означают необязательный параметр.
Чаще всего используется сокращенная запись вида:

  • — partition_index — индексный номер раздела, например, SYS1;
  • — partition_name — имя раздела, например, MBR;
  • — file_name — имя файла, содержащего образ раздела, или NONE;
  • — is_download — признак загружаемости раздела (что-то типа __NODL_);
  • — type — тип раздела. Указывает на содержимое раздела. Может принимать следующие значения:

EXT4_IMG — раздел содержит часть файловой системы EXT4;
NORMAL_ROM — раздел содержит сохраненный образ или отдельный файл;
SV5_BL_BIN — раздел содержит «сырой код» (Raw Code), т.е. исполнимый код;

  • — linear_start_addr — начальный адрес размещения раздела в файле прошивки, байт;
  • — physical_start_addr — начальный адрес размещения раздела в памяти устройства (физический адрес), байт;
  • — partition_size — размер раздела, байт;
  • — region — размещение раздела. Может принимать следующие значения:

EMMC_BOOT_1 —
EMMC_USER —

  • — storage — HW_STORAGE_EMMC
  • — boundary_check — признак необходимости отметки границы раздела (во внутренней БД или PMT);
  • — is_reserved — признак необходимости резервного копирования;
  • — operation_type — тип операции. Может принимать следующие значения:

BINREGION — область «сырого кода»;
BOOTLOADERS — загрузчик;
INVISIBLE — невидимый раздел;
PROTECTED — защищенный раздел;
RESERVED — зарезервирован;
UPDATE — обновляемый раздел.

  • — reserve

Пример полного scatter-файла второй версии, приведен в файле «Scatter_v2.txt».

Работа со scatter file.
Любой флешер использует scatter file только для ПОЛНОЙ разметки памяти.
Если Вы прошиваете один или несколько разделов, то флешер размещение разделов берет из внутренней «базы данных» — файла PMT (Partitions Map Table). Он считывает значение смещения для раздела (физический адрес) и копирует,т.е. «прошивает» образ раздела в память, начиная с этого физического адреса.
Т.к. scatter file содержит перечень и физические адреса размещения всех разделов памяти, то изменив его можно произвести переразметку этой памяти. Для этого необходимо изменить значения смещений необходимых разделов.
Например, в разделе USRDATA располагаются данные программ пользователя: логи работы и ошибок, данные о рекордах игр и т.д. Поэтому этот раздел чаще других переполняется, что приводит к появлению сообщений вида «Память переполнена».
В типовом scatter file он имеет смещение 0x34f80000 и размер 0x74f80000-0x34f80000=0х40000000(или 1073741824=1Гб). Увеличим его, например, на 256Мб(268435456). Тогда размер раздела станет 1073741824+268435456=1342177280(или 0х50000000 в hex). Т.е. мы добавили в раздел еще 0х10000000 байт. Тогда смещение следующего раздела передвинется на эту же величину:
было — 0х74f80000
стало — 0х84f80000
Если сделать так со смещениями ВСЕХ последующих разделов, то они ВСЕ передвинутся и на эту величину увеличится ОБЩИЙ размер памяти, занимаемой прошивкой. А это недопустимо. Поэтому нужно уменьшить размер какого-либо последующего раздела. У нас это раздел пользователя (FAT).
Изменить его размер мы не можем, т.к. он расположен до конца существующей памяти. Он просто автоматически укоротится.
Казалось бы и все, но укорачивать разделы можно до определенного предела (до «нуля»). Поэтому, если смещение последнего раздела переходит верхнюю границу памяти, то придется откатывать назад все изменения или уменьшать размер «прибавки» раздела.

Пример scatter-файла
Scatter_v2.rar ( 1 КБ )

Сообщение отредактировал vin2809 — 27.02.14, 15:26

Источник

Читайте также:  Как создать тесты для андроид
Оцените статью