Структура и работа SD-карт, записанных утилитой PhoenixCard


    Структура       Прошивка     Эксперименты     RAW-образ  

Структура SD-карты, записанной в режиме Product утилитой PhoenixCard

Как известно, утилита-прошивальщик Phoenix Card позволяет записать два варианта SD-карты c образом Android для устройст на базе Allwinner:

  • "загрузочную карту" в режиме StartUp
  • "прошивочную карту" в режиме Product

    Структура используемого IMAGEWTY-образа, а также подробности создания загрузочной карты была описана (см. IMAGEWTY-образ Android ) применительно к одноплатному ПК Orange Pi Zero 2, на котором Android может загружаться и работать только со вставленной загрузочной SD-картой, поскольку встроенная eMMMC-память на этом устройстве отсутствует.

    Однако в работающих также на SоС Allwinner H616 многочисленных ТВ-боксах (приставках) основным вариантом использования прошивки является её запись во внутреннюю eMMC-память либо через USB-кабель с помощью Phoenix Suite либо через SD-карту с помощью утилиты Phoenix Card.

    В то же время режим Product этой утилиты хотя и описан на пользовательском уровне в различных инструкциях (например, PhoenixCard. Руководство пользователя ), но из-за существенно закрытого статуса этой утилиты (и много чего ещё у компании Allwinner) практически невозможно найти где-либо (мне, например, не удалось) информацию о том, что и как происходит при записи карты в режиме Product. Несмотря на то, что эта технология придумана не вчера, а применяется в устройствах на Allwinner уже много (не менее 10) лет.

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

    Итак, имеется файл imagewty-образа прошивки для ТВ-бокса на основе SoС Allwinner H616 (конкретная модель не имеет значения), пусть это будет файл с условным именем imagewty.img. Файлы такого формата для конкретных устройств обычно предоставляются их продавцыми, а также пользователями, умеющими выполнить процедуру их распаковки-запаковки (и чего-нибудь исправления-улучшения).
    Примечание. "IMAGEWTY" - это обозначение формата подобных образов прошивок, структура которого описана здесь: IMAGEWTY-образ Android .

    После записи этого файла на SD-карту с помощью утилиты Phoenix Card в режиме Product на карте появится информация с такой структурой (адресация в блоках по 512 байт):

  • 1. В самом начале карты расположена модифицированная таблица разделов GPT размером 8192 байта, которая соответствует содержимому файла sunxi_gpt.fex из образа imagewty.img.

  • 2. Со смещением 16 блоков (8 Kb) лежит вторичный загрузчик eGON0 (в более ранних версих обозначался как SPL - Secondary Program Loader) размером 65536 байт, представляющий собой содержимое файла boot0_sdcard.fex. Подчеркнем, что используется именно этот вариант boot0, хотя в архиве образа имеется второй файл с именем boot0_nand.fex. Однако имеющийся в составе imagewty-образа файл boot0_nand.fex вообще не используется в ТВ-боксах на Allwinner Н616 из-за применения в них микросборок eMMC (nand-памяти с контроллером). В качестве eGON используется файл boot0_sdcard.fex как при записи загрузочной карты в режиме StartUp, так и при программировании встроенной eMMC-памяти с помощью записанной прошивочной карты, записанной в режиме Product.

  • 3. Со смещением 32800 (16793600 байт) лежит пакет sunxi-package, размер которого в пределах 2 Mb. В этом пакете упакованы вторичный загрузчик U-Boot, бинарное дерево устройств dtb и dtbo, а также monitor. Более подробно - смотрите здесь: Структура файла boot_package

    Примечание. Перечисленные в пунктах 2 и 3 двоичные объекты расположены в неразмеченной области карты, т.е. со смещениями, меньшими адреса самого первого раздела (bootloader). Поэтому их нельзя записать командами fastboot.

  • 4. Первый раздел bootloader по адресу, указанному в модифицированном GPT (блок 73728), в котором записана графика, содержащаяся в файле boot-resource.fex - диск FAT16 с картинками (bootlogo.bmp и шрифты)

  • 5. Внимание !. Дальше находится самое интересное. Начиная с блока 139264, который обозначен в таблице GPT как начало раздела ENV, на карте записан целиком исходный файл образа imagewty.img со всеми потрохами и без каких-либо изменений. То есть вся размеченная область карты, начиная со второго раздела (всего их 17), заменена на imagewty-образ.

    Вот и все секреты. Finita la commedia !