[PATCH 6/7] rockchip: Add DFU to SPL for RK3328
FUKAUMI Naoki
naoki at radxa.com
Tue Feb 11 06:33:39 CET 2025
Boot the RK3328 from the USB OTG port using rkflashtool[1] or
rkusbboot[2] and dfu-util.
1a. Download the TPL and SPL using rkflashtool
$ openssl rc4 -provider legacy -K 7c4e0304550509072d2c7b38170d1711 \
< mkimage-in-simple-bin.mkimage-rockchip-tpl | rkflashtool l
$ openssl rc4 -provider legacy -K 7c4e0304550509072d2c7b38170d1711 \
< mkimage-in-simple-bin.mkimage-u-boot-spl | rkflashtool L
1b. Download the TPL and SPL using rkusbboot
$ rkusbboot \
mkimage-in-simple-bin.mkimage-rockchip-tpl \
mkimage-in-simple-bin.mkimage-u-boot-spl
2. Download the U-Boot
$ dfu-util -a 0 -D u-boot.itb
[1] https://github.com/linux-rockchip/rkflashtool
[2] https://github.com/RadxaNaoki/rkusbboot
Signed-off-by: FUKAUMI Naoki <naoki at radxa.com>
---
arch/arm/dts/rk3328-u-boot.dtsi | 5 +++++
arch/arm/mach-rockchip/rk3328/rk3328.c | 1 +
configs/generic-rk3328_defconfig | 8 ++++++++
include/configs/rk3328_common.h | 7 +++++++
4 files changed, 21 insertions(+)
diff --git a/arch/arm/dts/rk3328-u-boot.dtsi b/arch/arm/dts/rk3328-u-boot.dtsi
index b0e50a973a8..30d0d3df751 100644
--- a/arch/arm/dts/rk3328-u-boot.dtsi
+++ b/arch/arm/dts/rk3328-u-boot.dtsi
@@ -142,6 +142,11 @@
bootph-pre-ram;
};
+&usb20_otg {
+ bootph-pre-sram;
+ bootph-pre-ram;
+};
+
&vop {
bootph-some-ram;
};
diff --git a/arch/arm/mach-rockchip/rk3328/rk3328.c b/arch/arm/mach-rockchip/rk3328/rk3328.c
index 12ad17d9e8b..f31f7197999 100644
--- a/arch/arm/mach-rockchip/rk3328/rk3328.c
+++ b/arch/arm/mach-rockchip/rk3328/rk3328.c
@@ -36,6 +36,7 @@ const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = {
[BROM_BOOTSOURCE_EMMC] = "/mmc at ff520000",
[BROM_BOOTSOURCE_SPINOR] = "/spi at ff190000/flash at 0",
[BROM_BOOTSOURCE_SD] = "/mmc at ff500000",
+ [BROM_BOOTSOURCE_USB] = "/usb at ff580000",
};
static struct mm_region rk3328_mem_map[] = {
diff --git a/configs/generic-rk3328_defconfig b/configs/generic-rk3328_defconfig
index 8d34a293fd4..bf3d70a5e6e 100644
--- a/configs/generic-rk3328_defconfig
+++ b/configs/generic-rk3328_defconfig
@@ -26,12 +26,14 @@ CONFIG_DEFAULT_FDT_FILE="rockchip/rk3328-generic.dtb"
CONFIG_SPL_MAX_SIZE=0x40000
CONFIG_SPL_PAD_TO=0x7f8000
# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
+CONFIG_SPL_ENV_SUPPORT=y
CONFIG_SPL_SPI_LOAD=y
CONFIG_SYS_SPI_U_BOOT_OFFS=0x60000
CONFIG_SPL_ATF=y
CONFIG_SPL_ATF_NO_PLATFORM_PARAM=y
CONFIG_CMD_MEMINFO=y
CONFIG_CMD_MEMINFO_MAP=y
+CONFIG_CMD_DFU=y
CONFIG_CMD_GPIO=y
CONFIG_CMD_GPT=y
CONFIG_CMD_MISC=y
@@ -54,6 +56,9 @@ CONFIG_SPL_SYSCON=y
# CONFIG_ADC is not set
CONFIG_CLK=y
CONFIG_SPL_CLK=y
+CONFIG_DFU_RAM=y
+CONFIG_SYS_DFU_DATA_BUF_SIZE=0x100000
+CONFIG_SYS_DFU_MAX_FILE_SIZE=0x200000
# CONFIG_USB_FUNCTION_FASTBOOT is not set
CONFIG_ROCKCHIP_GPIO=y
# CONFIG_ROCKCHIP_IODOMAIN is not set
@@ -83,8 +88,11 @@ CONFIG_SYSRESET=y
CONFIG_SYSRESET_PSCI=y
CONFIG_USB=y
CONFIG_DM_USB_GADGET=y
+CONFIG_SPL_DM_USB_GADGET=y
CONFIG_USB_GADGET=y
+CONFIG_SPL_USB_GADGET=y
CONFIG_USB_GADGET_DWC2_OTG=y
CONFIG_USB_GADGET_DOWNLOAD=y
CONFIG_USB_FUNCTION_ROCKUSB=y
+CONFIG_SPL_DFU=y
CONFIG_ERRNO_STR=y
diff --git a/include/configs/rk3328_common.h b/include/configs/rk3328_common.h
index bd2bfe29103..b32dd4a6dbb 100644
--- a/include/configs/rk3328_common.h
+++ b/include/configs/rk3328_common.h
@@ -25,11 +25,18 @@
"kernel_comp_addr_r=0x08000000\0" \
"kernel_comp_size=0x2000000\0"
+#if defined(CONFIG_SPL_DFU) && defined(CONFIG_XPL_BUILD)
+#define CFG_EXTRA_ENV_SETTINGS \
+ "dfu_alt_info_ram=u-boot.itb ram " \
+ __stringify(CONFIG_SPL_LOAD_FIT_ADDRESS) " " \
+ __stringify(CONFIG_SYS_DFU_MAX_FILE_SIZE) "\0"
+#else
#define CFG_EXTRA_ENV_SETTINGS \
"fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \
"partitions=" PARTS_DEFAULT \
ENV_MEM_LAYOUT_SETTINGS \
ROCKCHIP_DEVICE_SETTINGS \
"boot_targets=" BOOT_TARGETS "\0"
+#endif
#endif /* __CONFIG_RK3328_COMMON_H */
--
2.43.0
More information about the U-Boot
mailing list