Rockchip · AI & Linux Hub

Android и BSP

Формат файла parameter Rockchip 1.4: поля, GPT и традиционные разделы

Формат файла parameter Rockchip 1.4: поля, GPT и традиционные разделы

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

Справочный материал для ArmSoM по единственному китайскому источнику Rockchip Parameter File Format 1.4 (2018.1, 5 страниц), сохранённому полностью в технической части. Английский источник не предоставлен; английская, русская и немецкая статьи переведены с китайского, все четыре используют два исходных рисунка. Аппаратная проверка не проводилась; совместимость с другими SoC или платами ArmSoM не заявляется. Проверьте SDK, цепочку загрузки, накопитель и разметку платы. Прошивка и переразметка могут удалить данные: сначала сделайте копию.

Внутренние расхождения: раздел 3.6 указывает ATAG 0x60000800, оба рисунка — 0x00200800. Заголовок 3.7 содержит MACHINE 3226, рисунки и список RK3326 — 3326. Сохранены оба варианта без заявления о проверке. updata.img — написание источника; сверяйте имя пакета SDK. MB/KB сохранены, расчёты используют 512 Bytes/sector. Адреса рисунка GPT отличаются от традиционного примера, смешивать их нельзя. androidboot.selinux=permissive на рисунке — исторический пример, не рекомендация безопасности для производства.

1. Обзор

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

Источник перечисляет RK3066, RK3168, RK3188, RK3288, RK312X, RK3036, RK3399, RK3368, RK322X, RK3328, RK3326 и другие SoC.

2. Примеры файлов parameter

Исходные рисунки показывают GPT и традиционную разметку cmdline. Файлы различаются между проектами и платформами; поля объясняются на примере RK3326. Код рисунков также переписан ниже; переносы CMDLINE объединены в логические строки.

Рисунок 1: разметка GPT

FIRMWARE_VER:8.1
MACHINE_MODEL:RK3326
MACHINE_ID:007
MANUFACTURER:rk3326
MAGIC:0x5041524B
ATAG:0x00200800
MACHINE:3326
CHECK_MASK:0x80
TYPE:GPT
CMDLINE:mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00002000@0x00006000(trust),0x00002000@0x00008000(misc),0x00008000@0x0000a000(resource),0x00010000@0x00012000(kernel),0x00010000@0x00022000(boot),0x00020000@0x00032000(recovery),0x00038000@0x00052000(backup),0x00002000@0x0008a000(security),0x00100000@0x0008c000(cache),0x00400000@0x0018c000(system),0x00008000@0x0058c000(metadata),0x00080000@0x00594000(vendor),0x00080000@0x00614000(oem),0x00000400@0x00694000(frp),-@0x00694400(userdata:grow)

Рисунок 2: традиционная разметка cmdline

FIRMWARE_VER:8.1
MACHINE_MODEL:RK3326
MACHINE_ID:007
MANUFACTURER:rk3326
MAGIC:0x5041524B
ATAG:0x00200800
MACHINE:3326
CHECK_MASK:0x80
CMDLINE:console=ttyFIQ0 androidboot.baseband=N/A androidboot.selinux=permissive androidboot.veritymode=/dev/block/rknand_metadata androidboot.hardware=rk30board androidboot.console=ttyFIQ0 init=/init initrd=0x62000000,0x00800000 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)

3. Описание полей

3.1. FIRMWARE_VER:8.1

Версия прошивки; используется при упаковке образа, названного в источнике updata.img. Инструмент обновления определяет по ней версию прошивки.

3.2. MACHINE_MODEL:RK3326

Модель устройства при упаковке updata.img; проект может изменить её для отображения в инструменте обновления. При обновлении через recovery она может применяться для проверки соответствия прошивки.

3.3. MACHINE_ID:007

Идентификатор разработки продукта из букв и цифр, используемый при упаковке updata.img. Разные проекты используют разные ID для определения модели; recovery также может проверять соответствие прошивки.

3.4. MANUFACTURER: rk3326

Информация производителя при упаковке updata.img; её можно менять для отображения инструментом обновления.

3.5. MAGIC: 0x5041524B

Магическое число MAGIC изменять нельзя. Некоторые новые AP используют DTS и больше не используют это поле, но для совместимости удалять или менять его нельзя.

3.6. ATAG: 0x60000800

ATAG изменять нельзя. Некоторые новые APs используют DTS и больше не используют поле, однако для совместимости оно должно оставаться неизменным.

3.7. MACHINE: 3226

Используется для идентификации ядром; значение должно соответствовать ядру и не должно произвольно меняться. Коды источника приведены ниже.

RK29xx: MACHINE:2929
RK292x: MACHINE:2928
RK3066: MACHINE:3066
RK3326: MACHINE:3326

3.8. CHECK_MASK: 0x80

Зарезервированное поле; не изменять.

3.9. TYPE: GPT

Указывает, что определения разделов CMDLINE используются для создания GPT. Согласно источнику, в этом режиме сам файл parameter не записывается в NVM, например NAND или EMMC.

3.10. CMDLINE

console=ttyFIQ0 androidboot.console=ttyFIQ0 задаёт последовательную консоль.

В initrd=0x62000000,0x00800000 первое значение — адрес загрузки boot.img в SDRAM, второе — размер ramdisk. Источник сообщает, что на тот момент размер 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 Rockchip используют идентификатор rk29xxnand.

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

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

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

  5. В GPT адреса parameter являются фактическими логическими адресами LBA. uboot по адресу 0x4000 записывается на EMMC и NAND по тому же адресу 0x4000. Последний раздел должен иметь параметр grow: инструмент выделяет ему всё оставшееся место.

Имя Адрес 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
  1. Традиционный cmdline резервирует первые 0–4MB EMMC для loader, поэтому к адресам parameter добавляется 4MB (0x2000 sectors). uboot с определением 0x2000 записывается в EMMC по 0x4000, как в примере GPT. Для совместимости со старыми изделиями NAND использует адрес напрямую: 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. По источнику, действительные данные размещены раздельно и не перекрываются. Это не гарантирует безопасность произвольной разметки.

4. Частые проблемы и решения

На странице 5 присутствует только заголовок без вопросов и ответов. Отсутствующий текст не выдуман.

Rockchip · ArmSoM

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