Rockchip · AI & Linux Hub

Хранение и сеть

Разделы Rockchip: полное описание Parameter, GPT, CMDLINE и адресов прошивки

Разделы Rockchip: полное описание Parameter, GPT, CMDLINE и адресов прошивки — V1.5.1

· ArmSoM Editorial · Rockchip source documentation · 6 мин чтения

Китайский и английский оригиналы — V1.5.1. Сохранены технический текст и все таблицы. Справочник ArmSoM: сверяйте SoC, SDK/BSP, U-Boot, ядро, накопитель и текущую разметку; универсальная применимость ко всем платам не гарантируется. Пример источника — RK3326. Прошивка, разметка и аппаратные испытания не выполнялись. Отдельных технических рисунков нет.

Сохранены расхождения: ATAG в примере — 0x00200800, в заголовке 2.6 — 0x60000800; заголовок 2.7 — MACHINE:3226, пример и таблица — 3326. Написание updata.img сохранено без молчаливой замены на update.img. Прошивка и переразметка могут стереть данные; сначала проверьте всё и создайте резервную копию.

Техническое предисловие: Rockchip Android использует parameter для версии прошивки, разделов накопителя и других настроек. Это критический файл; перед изменением необходимо понимать каждое поле, иначе система может перестать работать правильно. Размер файла не должен превышать 64KB.

ArmSoM Docs · Rockchip tools

1. Обзор файла parameter

Файл parameter прежде всего определяет таблицу разделов. Поддерживаются GPT и традиционные разделы CMDLINE. Содержимое различается между проектами и платформами. Здесь приведён пример RK3326. Определение parameter для GPT RK3326:

FIRMWARE_VER:9.0
MACHINE_MODEL:RK3326
MACHINE_ID:007
MANUFACTURER: RK3326
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 3326
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE:mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00002000@0x00006000(trust),0x00002000@0x00008000(misc),0x00002000@0x0000a000(dtb),0x00002000@0x0000c000(dtbo),0x00000800@0x0000e000(vbmeta),0x00010000@0x0000e800(boot),0x00030000@0x0001e800(recovery),0x00028000@0x0004e800(backup),0x00002000@0x00076800(security),0x00070000@0x00078800(cache),0x002d0000@0x000e8800(system),0x00008000@0x003b8800(metadata),0x00070000@0x003c0800(vendor),0x00020000@0x00430800(oem),0x00000400@0x00450800(frp),-@0x00450c00(userdata:grow)
uuid:system=af01642c-9b84-11e8-9b2a-234eb5e198a0

Определение parameter для традиционной разметки CMDLINE RK3326:

FIRMWARE_VER:9.0
MACHINE_MODEL:RK3326
MACHINE_ID:007
MANUFACTURER: RK3326
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 3326
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
CMDLINE:console=ttyFIQ0 androidboot.console=ttyFIQ0 initrd=0x62000000,0x00800000 mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00002000@0x00006000(trust),0x00002000@0x00008000(misc),0x00002000@0x0000a000(dtb),0x00002000@0x0000c000(dtbo),0x00000800@0x0000e000(vbmeta),0x00010000@0x0000e800(boot),0x00030000@0x0001e800(recovery),0x00028000@0x0004e800(backup),0x00002000@0x00076800(security),0x00070000@0x00078800(cache),0x002d0000@0x000e8800(system),0x00008000@0x003b8800(metadata),0x00070000@0x003c0800(vendor),0x00020000@0x00430800(oem),0x00000400@0x00450800(frp),-@0x00450c00(userdata)

Основные отличия parameter для GPT от традиционной разметки: задайте TYPE: GPT.

Добавьте grow к последнему разделу, например userdata:grow. Укажите UUID system или rootfs, например uuid:system=af01642c-9b84-11e8-9b2a-234eb5e198a0. Сам файл parameter не записывается в NVM (EMMC, NAND и т. п.); используются только определения разделов mtdparts и UUID. Остальные сведения нужны для совместимости с инструментами обновления.

2. Содержимое файла

2.1 FIRMWARE_VER:9.0

Параметр FIRMWARE_VER
Тип Десятичное, формат X.X
Значение 0 - 255
Описание Используется при упаковке updata.img; инструмент обновления определяет по нему версию прошивки.

2.2 MACHINE_MODEL:RK3326

Параметр MACHINE_MODEL
Тип Строка
Длина 255 (максимум)
Описание Модель устройства для упаковки updata.img. Можно изменять для проекта; отображается инструментом обновления. В recovery позволяет проверять соответствие прошивки устройству.

2.3 MACHINE_ID:007

Параметр MACHINE_ID
Тип Строка
Длина 255 (максимум)
Описание ID разработки изделия, сочетание букв и цифр для упаковки updata.img. Разные проекты используют разные ID для определения модели. При обновлении recovery позволяет проверять совместимость прошивки.

2.4 MANUFACTURER:rk3326

Параметр MANUFACTURER
Тип Строка
Длина 255 (максимум)
Описание Сведения о производителе для упаковки updata.img; изменяемые, отображаются инструментом обновления.

2.5 MAGIC:0x5041524B

Параметр MAGIC
Тип Шестнадцатеричное число
Значение 0x5041524B (фиксировано)
Описание Сигнатура MAGIC; не изменять. Некоторые новые AP используют DTS и не применяют поле, но для совместимости его нельзя удалять или менять.

2.6 ATAG:0x60000800

Параметр ATAG
Тип Шестнадцатеричное число
Значение 32-битный адрес DDR
Описание Адрес ATAG в DDR. Некоторые новые AP используют DTS и не применяют поле; для совместимости не удаляйте и не изменяйте его.

2.7 MACHINE:3226

Параметр MACHINE
Тип Строка
Длина 255 (максимум)
Описание Для идентификации ядром; не изменять, значение должно соответствовать ядру.

Значения для нескольких платформ:

Микросхема MACHINE
RK29xx 2929
RK292X 2928
RK3066 3066
RK3126C 3126c
RK3326 3326
RK3399 3399
RK3308 3308

2.8 CHECK_MASK:0x80

Параметр CHECK_MASK
Тип Шестнадцатеричное число
Значение 0x80 (фиксировано)
Описание Зарезервировано; не изменять.

2.9 TYPE:GPT

Идентификатор таблицы GPT. Инструмент прошивки создаёт GPT из разделов CMDLINE. Файл parameter не записывается в NVM (NAND, EMMC и т. п.).

2.10 CMDLINE:

console=ttyFIQ0 androidboot.console=ttyFIQ0 задаёт последовательную консоль. В initrd=0x62000000,0x00800000 первое значение — адрес загрузки RAMDISK в DDR, второе — размер; источник указывает, что размер RAMDISK сейчас не ограничен. Параметры androidboot.xxx используются при запуске Android; на некоторых платформах они задаются в DTS ядра. Обычно следует сохранять значения SDK без изменений. Определение разделов MTD:

mtdparts=rk29xxnand:0x00002000@0x00002000(uboot),0x00002000@0x00004000(trust),0x00002000@0x00006000(misc),0x00008000@0x00008000(resource),0x00010000@0x00010000(kernel),0x00010000@0x00020000(boot),0x00020000@0x00030000(recovery),0x00038000@0x00050000(backup),0x00002000@0x00088000(security),0x00100000@0x0008a000(cache),0x00400000@0x0018a000(system),0x00008000@0x0058a000(metadata),0x00080000@0x00592000(vendor),0x00080000@0x00612000(oem),0x00000400@0x00692000(frp),-@0x00692400(userdata)

Пояснения к определению разделов:

  1. Для совместимости все AP используют идентификатор rk29xxnand.

  2. В записи 0x00002000@0x00008000(boot) число до @ — размер, после @ — начальная позиция, имя указано в скобках. Единица всех значений — сектор 512Bytes. Раздел boot начинается с сектора 0x8000 и занимает 0x2000 секторов (4MB).

  3. Для производительности начало раздела выравнивается по 32KB (64 сектора), а размер должен быть кратен 32KB.

  4. Обновление образом sparse стирает данные. Для совместимости рекомендуется выравнивать соответствующий раздел по 4MB и задавать размер кратным 4MB.

  5. Для GPT адреса parameter — реальные логические адреса блоков (LBA). Например, uboot с адресом 0x4000 записывается по логическому адресу 0x4000 и в EMMC, и в NAND.

Название Адрес в parameter Логический адрес EMMC Логический адрес NAND Размер
GPT – 0 0 32KB
LOADER – 0x40 0x40 4MB-32KB
Зарезервировано – 0x2000 0x2000 4MB
UBOOT 0x4000 0x4000 0x4000 4MB
TRUST 0x6000 0x6000 0x6000 4MB

Для последнего раздела укажите grow; инструмент выделит ему всё оставшееся пространство.

  1. При традиционной разметке cmdline в EMMC диапазон 0–4MB зарезервирован под loader; ко всем адресам разделов parameter добавляется 4MB. Например, uboot с 0x2000 записывается в EMMC по 0x4000, как при GPT. В NAND для совместимости со старыми изделиями адреса реальные логические: uboot с 0x2000 записывается по 0x2000, в отличие от GPT.
Название Адрес в parameter Логический адрес EMMC Логический адрес NAND Размер
Зарезервировано – 0 0 32KB
LOADER – 0x40 0x40 4MB-32KB
parameter – 0x2000 0x0 4MB
UBOOT 0x2000 0x4000 0x2000 4MB
TRUST 0x4000 0x6000 0x4000 4MB

Примечание: в системах NAND FLASH образ loader может записываться по 0x40 в той же области 4MB, что и parameter. Полезные данные находятся в разных позициях и не перекрываются.

3. Правила определения разделов

  1. Все разделы, в которые пишут bootrom, pre-loader, uboot или trust, размещайте до recovery.

  2. Новые разделы заказчика, в которые пишут pre-loader, uboot или trust, также должны предшествовать recovery.

  3. Ранняя прошивка Rockchip использует misc, vbmeta и security; все они должны находиться до recovery.

Другие статьи по теме → · Учебные маршруты →