Mobile Devices

Войдите в свой аккаунт

Что такое scatter-файл?

  • Старый 13.04.2015, 03:33

    Что такое scatter-файл?


    Разметка памяти, то есть разбивка на разделы, на устройствах с чипсетом MediaTek происходит при помощи файла, который называется "scatter-файл". Данный файл используется программой по прошивке устройств на MeidiaTek, а именно SP Flash Tool, при прошивке полного образа памяти устройства или же его отдельных частей, так называемых разделов. Структура scatter-файла содержит описание всех существующих разделов памяти устройства. Существует две версии scatter-файла.

    Scatter-файл первой версии



    Данная версия scatter-файла используется на большинстве устройств на MediaTek. Полное описание раздела памяти представляет из себя следующее:
    Код:
    [__NODL_]name offset [length]
    {
    }
    Здесь:

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


    Описание раздела такого вида, предполагает что каждый раздел имеет длину до начала следующего и что между двумя разделами не существует третьего, скрытого раздела. Ниже приведёт пример scatter-файла первой версии для MediaTek MT6589:
    Код:
    PRELOADER 0x0
    {
    }
    MBR 0x600000
    {
    }
    EBR1 0x680000
    {
    }
    __NODL_PMT 0x700000
    {
    }
    __NODL_PRO_INFO 0xb00000
    {
    }
    __NODL_NVRAM 0xe00000
    {
    }
    __NODL_PROTECT_F 0x1300000
    {
    }
    __NODL_PROTECT_S 0x1d00000
    {
    }
    __NODL_SECCFG 0x2700000
    {
    }
    UBOOT 0x2720000
    {
    }
    BOOTIMG 0x2780000
    {
    }
    RECOVERY 0x2d80000
    {
    }
    SEC_RO 0x3380000
    {
    }
    __NODL_MISC 0x3980000
    {
    }
    LOGO 0x3a00000
    {
    }
    EBR2 0x3d00000
    {
    }
    __NODL_EXPDB 0x3d80000
    {
    }
    ANDROID 0x4780000
    {
    }
    CACHE 0x2d180000
    {
    }
    USRDATA 0x34f80000
    {
    }
    __NODL_FAT 0x74f80000
    {
    }
    __NODL_BMTPOOL 0xffff00a8
    {
    }

    Scatter-файл второй версии



    В данном варианте scatter-файла, полное описание каждого отдельного раздела памяти представляет собой следующий набор строк:
    Код:
    partition_index: SYS1
      partition_name: MBR
      file_name: MBR
      is_download: true
      type: NORMAL_ROM
      linear_start_addr: 0x0
      physical_start_addr: 0x0
      partition_size: 0x80000
      region: EMMC_USER
      storage: HW_STORAGE_EMMC
      boundary_check: true
      is_reserved: false
      operation_type: UPDATE
      reserve: 0x00
    Здесь:
    • partition_index - индексный номер раздела, в нашем примере SYS1;
    • partition_name - имя раздела, в нашем примере MBR;
    • file_name - имя файла который содержим образ данного раздела или "NONE" (значит нет раздела);
    • is_download - параметр определящий будет ли загружен раздел, по типу "__NODL_" из первого варианта scatter-файла;
    • type - тип раздела, параметр который указывает содержимое данного раздела, может принимать следующие значения:

      • EXT4_IMG - раздел содержащий часть файловой системы EXT4;
      • NORMAL_ROM - раздел содержащий сохранённый образ или отдельный файл;
      • SV5_BL_BIN - раздела содержащий, так называемый, "сырой код" (Raw code), то есть исполняемый код;

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

      • EMMC_BOOT -
      • EMMC_USER -

    • storage -
    • boundary_check - означает необходимость отметки границ раздела;
    • is_reserved - нужно ли резервное копирование раздела;
    • operation_type - тип операции, может иметь следующие значения:

      • BINREGION - обасть "сырого кода" (raw code);
      • BOOTLOADERS - загрузчик;
      • INVISIBLE - невидимый раздел;
      • PROTECTED - защищённый раздел;
      • RESERVED - зарезервированный раздел;
      • UPDATE - обновляемый раздел:

    • reserve -



    Работа со scatter-файлом:



    SP Flash Tool использует scatter-файл, только для полной разметки памяти, если вы прошиваете один или несколько разделов, то программа по прошивке берёт расположение разделов из внутренней базы, а именно файла PMT (Partitions Map Table). Происходит считывание значения смещения раздела, то есть физический адрес, и прошивается образ раздела в память, начиная с физического адреса.

    Поскольку scatter-файл содержит список всех физических адресов разделов, то изменив его можно произвести переразметку памяти. Делается это путем смены значений смещения необходимых разделов. Нарпимер, такой раздел как USRDATA содержит в себе данные программ пользователя, поэтому чаще всего переполняется и ползователь может увидеть сообщения типа "Память переполнена" и так далее. В обычном scatter-файле, данный раздел имеет смещение "0x34f80000" и размер "0x74f80000-0x34f80000=0х40000000" (или 1073741824= 1Гб). Если увеличить данный раздел на 256 Мб (268435456), то "1073741824+268435456=1342177280 (или 0х50000000 в hex), то есть мы добавили в раздел еще 0х10000000. При этом смещение данного раздела переместится на эту же величину: было 0х74f80000, а стало 0х84f80000. Если поступить таким образом со смещением всех разделов, то они все переместятся на данную величину, что увеличит общий размер памяти занимаемый прошивкой, а этого делать нельзя. Поэтому необходимо уменьшить размер какого-то из последующих разделов, в нашем случае это FAT (раздел пользователя)

  • Старый 06.06.2015, 11:56
    Scatter-файл второй версии, ктр идет с рекавери модом, содержит все физические адреса 0х0, как это понимать?
    то, что нужный адрес будет взят из PMT?
    и еще, если скаттеры одинаковы (кроме адресов кеша и юзердаты), прошивки будут взаимозаменяемы, или это ни о чем не говорит, и прошивка может не работать?
    спасибо )
  • Старый 04.12.2016, 19:55
    дА ИНФО ПОЛЕЗНОЕ! но многие не знакомы даже с системой счисления! а по сути кто спрашивает как прошить это те кто вообще не знаком с этой областью а те кто знает он знает поэтому все от части ! для простого пользователя все должно запускаться одним файлом сетап инстал никто не будет морочить себе голову такой подробностью! если так легко все в системе перепрошить то это кряк а не система каждый её может шить как хочет ВОПРОС СМЫСЛ?
  • Чтобы скачивать фаилы и оставлять сообщения на форуме зарегистрируйтесь



Powered by vBulletin® Version 3.8.8 Beta 1
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot