Rockchip · AI & Linux Hub

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

Полное руководство Rockchip по двум накопителям: NOR + EMMC/NVMe, PCIe EP, упаковка и OTA

Полное руководство Rockchip по двум накопителям: NOR + EMMC/NVMe, PCIe EP, упаковка и OTA — RK-KF-YF-461 V1.5.1; kernel 4.19+, BOOTROM, U-Boot, Vendor Storage.

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

Статья полностью сохраняет техническое содержание RK-KF-YF-461 V1.5.1: китайские стр. 4–18, английские 5–19. Главы соответствуют; примеры и код следуют китайскому оригиналу, EN/RU/DE переведены полностью. Китайская версия использует пять китайских рисунков, остальные — пять соответствующих английских. Область источника: микросхемы с несколькими накопителями с независимыми I/O, ядро 4.19 и выше; это не подтверждение каждой платы ArmSoM. Проверьте SoC, независимость I/O, топологию NOR/EMMC/NVMe/SATA, питание, SDK/BSP, Loader/U-Boot, ядро, ветку Android, единицы разметки и драйверы. Патчи RK3588s EVB1 и RK3568 EVB1 — примеры плат производителя, не готовые патчи ArmSoM и не измерения. Прошивка, OTA, запись регистров и аппаратные проверки не выполнялись.

Важные проблемы оригинала: в §7.1 vnvm и uboot начинаются с одного 0x00000c00 сектора и перекрываются; байтовое смещение uboot в §7.2 также не совпадает. Значения mtdparts SPI NAND §6.2 похожи на секторные и требуют сверки с другими байтовыми примерами и указанными единицами. Все сохранены без догадок; не использовать напрямую для производственной разметки или OTA. Скрипт удаляет временные файлы; страница лишь показывает его. Сначала сохраните данные и идентичность устройства.

ArmSoM Docs · Rockchip Linux kernel · EDITORIAL-NOTES

1. Введение

Поддержка нескольких накопителей: SoC RK обычно имеют несколько контроллеров с независимыми I/O. Например, RK3568 поддерживает NOR flash и eMMC, RK3588 — NOR flash и PCIe SSD. Компоненты классифицируются по возможности обнаружения кодом масочного ROM:

  • Bootable: eMMC, SPI flash, параллельная NAND.
  • Non-bootable: NVMe SSD и SATA. Система только с ними не загружается масочным ROM.

Для основного non-bootable накопителя нужен bootable-компонент, например NOR + NVMe SSD/SATA для большой ёмкости. Другой пример — защита прошивки NOR + eMMC: небольшая система восстановления в NOR сохраняется при невосстановимом отказе eMMC.

2. Принцип работы

2.1 Общая схема загрузки двух накопителей RK

2.1 Общая схема загрузки двух накопителей RK: английский оригинал, стр. 5

2.1 Общая схема загрузки двух накопителей RK: английский оригинал, стр. 5

Процесс загрузки и сведения о прошивке двух накопителей RK:

Этап загрузки Местонахождение прошивки Основной накопитель, инициализируемый на этапе Нужная настройка
Bootrom Масочный ROM микросхемы Загрузочный накопитель, например NOR \
SPL Загрузочный накопитель, например NOR Загрузочный накопитель, например NOR \
u-boot Загрузочный накопитель, например NOR Основной накопитель, например NVMe Специальная настройка U-Boot
kernel Основной накопитель, например NVMe Основной накопитель, например NVMe Стандартная настройка ядра

U-Boot по умолчанию инициализирует тип памяти предыдущего этапа. Для переключения на основной накопитель, например NVMe, нужна специальная настройка U-Boot; см. «Конфигурация».

2.2 Схема загрузки двух накопителей RK PCIe EP

Некоторые SoC RK поддерживают PCIe EP и могут работать как стандартные endpoint-карты для обычного ПК. Контроллеру PCIe нужна ранняя инициализация, обеспечиваемая дополнительным pcie_idb.img. Процесс:

2.2 Схема загрузки двух накопителей RK PCIe EP: английский оригинал, стр. 6

2.2 Схема загрузки двух накопителей RK PCIe EP: английский оригинал, стр. 6

Процесс загрузки и сведения о прошивке двух накопителей RK:

Этап загрузки Местонахождение прошивки Основной накопитель, инициализируемый на этапе Нужная настройка
Bootrom Масочный ROM микросхемы Загрузочный накопитель, например NOR \
PCIe.bin Загрузочный накопитель, например NOR NULL \
SPL Загрузочный накопитель, например NOR Загрузочный накопитель, например NOR \
u-boot Загрузочный накопитель, например NOR Основной накопитель, например NVMe Специальная настройка U-Boot
kernel Основной накопитель, например NVMe Основной накопитель, например NVMe Стандартная настройка ядра

U-Boot по умолчанию инициализирует тип памяти предыдущего этапа. Для переключения на основной накопитель, например NVMe, нужна специальная настройка U-Boot; см. «Конфигурация».

3. Конфигурация

Как описано в разделе принципов, SDK переключает инициализацию целевого накопителя в U-Boot. Настройте драйвер, переключение основного накопителя и Embedded Kernel DTB.

3.1 Настройка U-Boot

3.1.1 Настройка драйвера основного накопителя

См. CH05 «Модули драйверов» в Rockchip_Developer_Guide_UBoot_Nextdev_CN.pdf:

  • eMMC: Storage; обычно совместим по умолчанию.
  • PCIe NVMe: PCIe.

3.1.2 Настройка переключения основного накопителя

Добавить в defconfig:

CONFIG_ROCKCHIP_BOOTDEV="nvme 0"  # 可择 "nvme"-NVMe "mmc"-eMMC "scsi"-SATA
CONFIG_ROCKCHIP_EMMC_IOMUX=y   # Nor + eMMC ⽅案 spl.bin 中完成 eMMC iomux

3.1.3 Embedded Kernel DTB для NVMe/SATA

U-Boot RK имеет два этапа:

  • Ранний использует стандартный DTB U-Boot с небольшим объёмом сведений; см. настройку драйвера накопителя.
  • Поздний предлагает using kernel dtb — DTB из следующего образа с инициализацией драйверов; либо using embedded dtb — DTB из каталога U-Boot упаковывается в образ U-Boot и используется для драйверов. Здесь нужен embedded.

Defconfig embedded DTB:

CONFIG_EMBED_KERNEL_DTB_ALWAYS=y
CONFIG_EMBED_KERNEL_DTB_PATH="dts/rk3588-evb1-lp4-v10.dtb"  # dtb 存放⽬录
CONFIG_SPL_FIT_IMAGE_KB=2560               # 通常使⽤ embedded dtb 后 u-boot 固件会变⼤

Добавление DTB: соберите нужный kernel DTB и поместите в u-boot/dts/. Для ясности сохраните имя ядра. При обновлении замените файл.

3.2 Настройка ядра

Используйте стандартную настройку ядра.

3.3 Настройка Android

В Android измените носитель на соответствующее PCIe-устройство для монтирования разделов:

@sys2_206:~/4_Android12_29_sdk/device/rockchip/rk3588$ git diff
--- a/BoardConfig.mk
+++ b/BoardConfig.mk
@@ -25,7 +25,7 @@ PRODUCT_KERNEL_CONFIG ?= rockchip_defconfig pcie_wifi.config

#BOARD_AVB_ENABLE := true
# used for fstab_generator, sdmmc controller address
-PRODUCT_BOOT_DEVICE := fe2e0000.mmc
+PRODUCT_BOOT_DEVICE := fe180000.pcie
PRODUCT_SDMMC_DEVICE := fe2c0000.mmc

SF_PRIMARY_DISPLAY_ORIENTATION := 0

4. Разметка и упаковка прошивки

4.1 Прошивка общей схемы двух накопителей RK

SDK по умолчанию упаковывает только один накопитель. Измените скрипты по примеру либо используйте новую схему упаковки для двух накопителей.

Каталог инструментов:

.
├── afptool
├── gen-package-file.sh
├── Image             # main storage 固件
│ ├── boot.img
│ ├── MiniLoaderAll.bin
│ ├── parameter.txt
│ └── userdata.img
├── Image-nor            # boot storage 固件
│ ├── MiniLoaderAll.bin
│ ├── parameter.txt
│ └── uboot.img
├── mkupdate.sh
└── rkImageMaker

Создайте Image-nor и поместите туда собранную NOR-прошивку. Пример parameter.txt:

CMDLINE:mtdparts=rk29xxnand:0x00000080@0x00000000(gpt),0x00000800@0x00000080(idb),0x00000800@0x00001000(vnvm),0x00002000@0x00001800(uboot)

Измените mkupdate.sh для упаковки двух накопителей:

#!/bin/bash
# Author: kenjc@rock-chips.com
# 2021-08-13
# Use: ./mkupdate.sh PLATFORM IMAGE_PATH to pack update.img

declare -A vendor_id_map
vendor_id_map["rk3588"]="-RK3588"
vendor_id_map["rk356x"]="-RK3568"
vendor_id_map["rk3326"]="-RK3326"
vendor_id_map["px30"]="-RKPX30"
vendor_id_map["rk3368"]="-RK330A"
vendor_id_map["rk322x"]="-RK322A"
vendor_id_map["rk3399pro"]="-RK330C"
vendor_id_map["rk3328"]="-RK322H"
vendor_id_map["rk3288"]="-RK32"
vendor_id_map["rk3126c"]="-RK312A"
vendor_id_map["rk3399"]="-RK330C"

readonly PLATFORM=$1
readonly IMAGE_PATH=$2
readonly IMAGE_PATH_NOR=$3
readonly PACKAGE_FILE=package-file-tmp

echo "packing update.img with $IMAGE_PATH ${vendor_id_map[$PLATFORM]}"

pause() {
 echo "Press any key to quit:"
 read -n1 -s key
 exit 1
}

if [ ! -f "$IMAGE_PATH/parameter.txt" ]; then
  echo "Error:No found parameter!"
# pause
fi

echo "regenernate $PACKAGE_FILE..."
if [ -f "$PACKAGE_FILE" ]; then
  rm -rf $PACKAGE_FILE
fi
./gen-package-file.sh $IMAGE_PATH > $PACKAGE_FILE

echo "start to make emmc update.img..."
./afptool -pack ./ $IMAGE_PATH/update.img $PACKAGE_FILE || pause
./rkImageMaker ${vendor_id_map[$PLATFORM]} $IMAGE_PATH/MiniLoaderAll.bin $IMAGE_PATH/update.img emmc_update.img -os_type:androidos -storage:emmc || pause
echo "Making emmc_update.img OK."

echo "regenernate $PACKAGE_FILE..."
if [ -f "$PACKAGE_FILE" ]; then
  rm -rf $PACKAGE_FILE
fi

./gen-package-file.sh $IMAGE_PATH_NOR > $PACKAGE_FILE

echo "start to make spinor update.img..."

./afptool -pack ./ $IMAGE_PATH_NOR/update.img $PACKAGE_FILE || pause
./rkImageMaker ${vendor_id_map[$PLATFORM]} $IMAGE_PATH_NOR/MiniLoaderAll.bin $IMAGE_PATH_NOR/update.img spinor_update.img -os_type:androidos -storage:spinor || pause
echo "Making spi_update.img OK."

./rkImageMaker -merge ./update.img ./emmc_update.img ./spinor_update.img
rm ./spinor_update.img ./emmc_update.img

exit 0

Выполнить скрипт — RK3568:

./mkupdate.sh rk356x Image/ Image-nor/

RK3588:

./mkupdate.sh rk3588 Image/ Image-nor/

4.2 Упаковка прошивки двух накопителей RK PCIe EP

Принцип упаковки тот же, что в общей схеме двух накопителей RK. Каталог:

.
├── afptool
├── gen-package-file.sh
├── Image          # main storage 固件
│ ├── boot.img
│ ├── MiniLoaderAll.bin
│ ├── parameter.txt
│ └── userdata.img
├── Image-flash        # boot storage 固件
│ ├── MiniLoaderAll.bin
│ ├── normal_idb.img     # idblock.img,包含 ddr.bin 和 spl.bin
│ ├── parameter.txt
│ ├── pcie_idb.img      # PCIe_idblock.img,源码⼯程 bootloader-ep 默认输出双备份镜像,包含 pcie.bin
│ └── uboot.img
├── mkupdate.sh
└── rkImageMaker

Создайте pcie_idb.img следующими командами в rkbin:

#⽣成 loader
./tools/boot_merger RKBOOT/RK3588MINIALL_PCIE_EP.ini
$ls rk3588_pcie_loader_v1.00.bin
rk3588_pcie_loader_v1.00.bin

#制作 idb,要求使⽤ spinand type 做对⻬
./tools/programmer_image_tool -i rk3588_pcie_loader_v1.00.bin -b 128 -p 2 -t spinand -o ./

#制作双备份的 pcie_idb.img
cat idblock.img > pcie_idb.img
cat idblock.img >> pcie_idb.img
rm idblock.img

Создайте normal_idb.img из rkbin следующими командами. В китайском тексте опечатка nornal_idb.img; имя команды сохранено:

#⽣成 loader
./tools/boot_merger RKBOOT/RK3588MINIALL.ini
$ls rk3588_spl_loader_v1.14.113.bin
rk3588_spl_loader_v1.14.113.bin

#制作 idb,要求使⽤ spinand type 做对⻬
./tools/programmer_image_tool -i rk3588_spl_loader_v1.14.113.bin -b 128 -p 2 -t spinand -o ./

#制作双备份的 normal_idb.img
cat idblock.img > normal_idb.img
cat idblock.img >> normal_idb.img
rm idblock.img

Создайте Image-flash и настройте parameter. Пример SPI NOR:

CMDLINE:mtdparts=rk29xxnand:0x00000080@0x00000000(gpt),0x00000400@0x00000080(pcie_idb),0x00000b80@0x00000480(normal_idb),0x00000800@0x00001000(vnvm),0x00002000@0x00001800(uboot)

Пример SPI NAND со страницей 2KB:

CMDLINE:mtdparts=rk29xxnand:0x00000080@0x00000000(gpt),0x00000400@0x00000100(pcie_idb),0x00000400@0x00000500(normal_idb),0x00000800@0x00001000(vnvm),0x00002000@0x00001800(uboot)

Пример SPI NAND со страницей 4KB (совместим и с 2KB):

CMDLINE:mtdparts=rk29xxnand:0x00000080@0x00000000(gpt),0x00000400@0x00000200(pcie_idb),0x00000400@0x00000600(normal_idb),0x00000800@0x00001000(vnvm),0x00002000@0x00001800(uboot)

Измените mkupdate.sh и запустите по соответствующему разделу общей схемы упаковки RK.

5. Запись прошивки

Инструменты RK поддерживают запись нескольких накопителей. В Windows используйте RKDevTool_Release_v2.93 и выше; см. §1.12 выбора нескольких устройств в руководстве из комплекта.

Одновременная запись:

5. Запись прошивки: английский оригинал, стр. 13

5. Запись прошивки: английский оригинал, стр. 13

Только SPI NOR: войти в maskrom и выбрать лишь прошивку SPINOR.

Только NVMe: войти в Loader и выбрать лишь прошивку PCIe.

6. Обновление OTA

6.1 OTA общей схемы двух накопителей RK

Пример NOR + eMMC. NOR содержит MiniLoader, parameter.txt и uboot.img; все описаны как поддерживающие OTA. Пример обновляет uboot. Обновлять MiniLoader или parameter.txt не рекомендуется из-за высокого риска.

U-Boot находится в NOR, boot/rootfs — в eMMC. Добавьте раздел U-Boot и конфигурацию NOR в ядро. По parameter.txt общей схемы задайте mtdparts recovery DTS:

mtdparts=sfc_nor:0x00100000@0x00010000(idb),0x00100000@0x00200000(vnvm),0x00400000@0x00300000(uboot)

Добавьте настройку NOR:

&sfc {
   status = "okay";
   pinctrl-names = "default";
   pinctrl-0 = <&fspim1_pins>;       // 选择实际 io
   flash@0 {
       compatible = "jedec,spi-nor";
       reg = <0>;
       spi-max-frequency = <75000000>;
       spi-rx-bus-width = <4>;
       spi-tx-bus-width = <1>;
   };
};

После добавления проверьте /dev/mtdblock в корневой ФС. При отсутствии изучите конфигурацию и стартовые ошибки SPI NOR: неверный iomux, неподдерживаемая модель и т. п.

EMMC: разметка хранится в parameter.txt EMMC. Добавление разделов создаёт соответствующие mmcblock в корневой ФС. После появления узлов обоих накопителей получите recovery-патч по ссылке оригинала и следуйте инструкции OTA. Собственный обновлятор может самостоятельно выбирать запись узлов:

Ссылка recovery-патча оригинала (доступ не проверен) — nwm3

6.2 OTA двух накопителей RK PCIe EP

Принцип совпадает с общим OTA RK; меняются только сведения о разделах. По parameter.txt раздела PCIe EP добавьте mtdparts recovery DTS. SPI NOR:

mtdparts=sfc_nor:0x00080000@0x00010000(pcie_idb),0x00170000@0x00090000(normal_idb),0x00100000@0x00200000(vnvm),0x00400000@0x00300000(uboot)

Пример SPI NAND со страницей 2KB:

mtdparts=spi-nand0:0x00000080@0x00000000(gpt),0x00000400@0x00000100(pcie_idb),0x00000400@0x00000500(normal_idb),0x00000800@0x00001000(vnvm),0x00002000@0x00001800(uboot)

Пример SPI NAND со страницей 4KB (совместим и с 2KB):

mtdparts=spi-nand0:0x00000080@0x00000000(gpt),0x00000400@0x00000200(pcie_idb),0x00000400@0x00000600(normal_idb),0x00000800@0x00001000(vnvm),0x00002000@0x00001800(uboot)

7. Поддержка Vendor Storage SPI NOR

В схеме SPI NOR + SSD (SATA либо NVMe) храните SN, MAC и подобные данные в SPI NOR. Определите vnvm для Vendor Storage; начало и размер должны быть кратны 64KB.

7.1 Изменение таблицы разделов

Добавьте vnvm в parameter.txt SPI NOR. Единица — сектор (512 bytes). Пример источника:

CMDLINE: mtdparts=rk29xxnand:0x00000200@0x00000c00(vnvm),0x00003000@0x00000c00(uboot)

7.2 Добавление разделов SPI NOR в ядро

Добавьте таблицу SPI NOR в CMDLINE DTS ядра; начало и размер каждого раздела должны совпадать с parameter.txt, но задаются в байтах. Пример:

CMDLINE: mtdparts=sfc_nor:0x00040000@0x00180000(vnvm),0x00600000@0x00200000(uboot)

8. Частые вопросы

8.1 Сокращение разметки NOR-прошивки

По умолчанию обновление Loader NOR автоматически размещает IDB, включая смещение и копии. Рекомендуется сохранить схему. Если нужно изменить разметку, используйте пример RK3568 NOR + eMMC. Разметка AndroidTool:

8.1 Сокращение разметки NOR-прошивки: английский оригинал, стр. 16

8.1 Сокращение разметки NOR-прошивки: английский оригинал, стр. 16

Изменение конфигурации AndroidTool:

8.1 Сокращение разметки NOR-прошивки: английский оригинал, стр. 17

8.1 Сокращение разметки NOR-прошивки: английский оригинал, стр. 17

Снимки инструмента взяты из английского PDF, но интерфейс и комментарии конфигурации в нём остаются китайскими. Ниже приведена редактируемая расшифровка конфигурации; пустые значения сохранены и не являются рекомендуемыми настройками:

MSC_VIDPID=
ADB_VIDPID=
MTP_VIDPID=
UVC_VIDPID=

#指定是否支持全速usb设备,当SUPPORTLOWUSB=TRUE时,增加全速usb设备支持,默认只支持高速usb设备
SUPPORTLOWUSB=true
#设置烧写固件时单次传输的数据带宽,取值在[0-6]之间,6代表1M,5代表512K,0代表16K
FORCE_DATA_BAND=
MSC_TIMEOUT=30
ROCKUSB_TIMEOUT=30
#指定启动时加载的镜像配置文件,默认为config.cfg
DEFAULT_IMAGE_CONFIG=config.cfg
#下载Image镜像后是否进行设备重启
RESET_AFTER_DOWNLOAD=TRUE
#当设置FW_NOT_CHECK=TRUE时,固件加载时不进行完整性校验
FW_NOT_CHECK=TRUE
#当设置RB_CHECK_OFF=FALSE时,固件升级时才进行回读校验
RB_CHECK_OFF=
#LBA_PARITY=TRUE时,设备端开启写后校验
LBA_PARITY=
#NorFlash单个IDBlock
NOR_SINGLE_IDB=
#当设置CLOSE_CHECK_IDB=TRUE时,不检查IDBLOCK是否会被覆盖
CLOSE_CHECK_IDB=TRUE
#自动保存配置
AUTO=true

Пояснение:

1. Замените Loader на LoaderToDDR для отключения автоматического размещения IDB. Loader только запускает обновление.

2. SPI NOR: обновлять таблицу автоматически через parameter / parameter.txt либо явно через gpt / gpt.img.

3. EMMC соответствует однонакопительной схеме и по-прежнему требует parameter.txt для создания таблицы.

4. После отключения автоматического размещения IDB отключите проверку IDB в инструменте обновления.

9. Приложение

9.1 Справочный патч RK3588s EVB1 NOR + NVMe

From 89825ff12bc92ba9dd9e063e9835ecb03b732b92 Mon Sep 17 00:00:00 2001
From: Jon Lin <jon.lin@rock-chips.com>
Date: Fri, 19 Nov 2021 20:57:52 +0800
Subject: [PATCH] TEST: uboot: rk3588s-tablet&evb1: nvme

Change-Id: I332fcceb8984712a4cd3eec053f813590f4e9bbe
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
---
arch/arm/dts/rk3588-u-boot.dtsi | 34 +++++++++++++++++++++++++++++++++
configs/rk3588_defconfig   | 12 ++++++++++++
2 files changed, 46 insertions(+)

diff --git a/arch/arm/dts/rk3588-u-boot.dtsi b/arch/arm/dts/rk3588-u-boot.dtsi
index 3fe8054aac..25ebf26873 100644
--- a/arch/arm/dts/rk3588-u-boot.dtsi
+++ b/arch/arm/dts/rk3588-u-boot.dtsi
@@ -22,6 +22,33 @@
   compatible = "rockchip,rk3588-secure-otp";
   reg = <0x0 0xfe3a0000 0x0 0x4000>;
  };
+
+ vcc12v_dcin: vcc12v-dcin {
+   u-boot,dm-pre-reloc;
+   compatible = "regulator-fixed";
+   regulator-name = "vcc12v_dcin";
+   regulator-always-on;
+   regulator-boot-on;
+   regulator-min-microvolt = <12000000>;
+   regulator-max-microvolt = <12000000>;
+ };
+
+ vcc3v3_pcie20: vcc3v3-pcie20 {
+   u-boot,dm-pre-reloc;
+   compatible = "regulator-fixed";
+   regulator-name = "vcc3v3_pcie20";
+   regulator-min-microvolt = <3300000>;
+   regulator-max-microvolt = <3300000>;
+   enable-active-high;
+   gpio = <&gpio4 RK_PB1 GPIO_ACTIVE_HIGH>;
+   startup-delay-us = <5000>;
+   vin-supply = <&vcc12v_dcin>;
+ };
+};
+
+&combphy2_psu {
+ u-boot,dm-pre-reloc;
+ status = "okay";
};
&firmware {
@@ -201,6 +228,13 @@
  u-boot,dm-spl;
};

+&pcie2x1l1 {
+ u-boot,dm-pre-reloc;
+ reset-gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_HIGH>;
+ vpcie3v3-supply = <&vcc3v3_pcie20>;
+ status = "okay";
+};
+
&pinctrl {
  u-boot,dm-spl;
  /delete-node/ sdmmc;
diff --git a/configs/rk3588_defconfig b/configs/rk3588_defconfig
index f65da00444..f9fbaa145b 100644
--- a/configs/rk3588_defconfig
+++ b/configs/rk3588_defconfig
@@ -226,3 +226,15 @@ CONFIG_RK_AVB_LIBAVB_USER=y
CONFIG_OPTEE_CLIENT=y
CONFIG_OPTEE_V2=y
CONFIG_OPTEE_ALWAYS_USE_SECURITY_PARTITION=y
+CONFIG_CMD_PCI=y
+CONFIG_NVME=y
+CONFIG_PCI=y
+CONFIG_DM_PCI=y
+CONFIG_DM_PCI_COMPAT=y
+CONFIG_PCIE_DW_ROCKCHIP=y
+CONFIG_PHY_ROCKCHIP_NANENG_COMBOPHY=y
+CONFIG_PHY_ROCKCHIP_SNPS_PCIE3=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_ROCKCHIP_BOOTDEV="nvme 0"
+CONFIG_EMBED_KERNEL_DTB_ALWAYS=y
+CONFIG_SPL_FIT_IMAGE_KB=2560
--
2.17.1

9.2 Справочный патч RK3568 EVB1 NOR + eMMC

diff --git a/configs/rk3568_defconfig b/configs/rk3568_defconfig
index d157307403..82801f3dcb 100644
--- a/configs/rk3568_defconfig
+++ b/configs/rk3568_defconfig
@@ -222,3 +222,5 @@ CONFIG_RK_AVB_LIBAVB_USER=y
CONFIG_OPTEE_CLIENT=y
CONFIG_OPTEE_V2=y
CONFIG_OPTEE_ALWAYS_USE_SECURITY_PARTITION=y
+CONFIG_ROCKCHIP_EMMC_IOMUX=y
+CONFIG_ROCKCHIP_BOOTDEV="mmc 0"

Примечание:

Для этого справочного патча Embedded Kernel DTB включать не требуется.

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