Китайский и английский оригиналы — 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.
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)
Пояснения к определению разделов:
-
Для совместимости все AP используют идентификатор rk29xxnand.
-
В записи 0x00002000@0x00008000(boot) число до @ — размер, после @ — начальная позиция, имя указано в скобках. Единица всех значений — сектор 512Bytes. Раздел boot начинается с сектора 0x8000 и занимает 0x2000 секторов (4MB).
-
Для производительности начало раздела выравнивается по 32KB (64 сектора), а размер должен быть кратен 32KB.
-
Обновление образом sparse стирает данные. Для совместимости рекомендуется выравнивать соответствующий раздел по 4MB и задавать размер кратным 4MB.
-
Для 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; инструмент выделит ему всё оставшееся пространство.
- При традиционной разметке 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. Правила определения разделов
-
Все разделы, в которые пишут bootrom, pre-loader, uboot или trust, размещайте до recovery.
-
Новые разделы заказчика, в которые пишут pre-loader, uboot или trust, также должны предшествовать recovery.
-
Ранняя прошивка Rockchip использует misc, vbmeta и security; все они должны находиться до recovery.
