Hi Tom, Simon, The test for my patch ends with an error that is reported on various locations on the internet. My knowledge is limited here. Could you have a look?
Thanks, Johan ==== rockchip: include: asm: fix entering download mode rk3066 https://source.denx.de/u-boot/custodians/u-boot-rockchip/-/pipelines/18283 Error log: https://source.denx.de/u-boot/custodians/u-boot-rockchip/-/jobs/720456 Error message: Cleaning up project directory and file based variables 00:03 ERROR: Job failed: exit code 100 === Reported examples elsewhere: Runner stops at random place with "Cleaning up project directory and file based variables" even if there is no error https://gitlab.com/gitlab-org/gitlab/-/issues/373265 Gitlab CI/CD fails while "Cleaning up project directory and file based variables" with "ERROR: Job failed: exit code 1" https://stackoverflow.com/questions/69411379/gitlab-ci-cd-fails-while-cleaning-up-project-directory-and-file-based-variables On 10/24/23 11:16, Kever Yang wrote: > Hi Johan, > > I don't have a detail build error message, but this patch do cause the > 32bit ARM platforms build fail in[1]; > > Hi Tom, > > Could you help the take a look, what's the error happen in this case? > > > Thanks, > - Kever > > [1] https://source.denx.de/u-boot/custodians/u-boot-rockchip/-/jobs/719987 > > On 2023/9/19 23:28, Johan Jonker wrote: >> Keep track of the re-entries with help of the lr register. >> This binary can be re-used and called from various BROM functions. >> Only when it's called from the part that handles SPI, NAND or EMMC >> hardware it needs to early return to BROM ones. >> In download mode when it handles data on USB OTG and UART0 >> this section must be skipped. >> >> Unlike newer Rockchip SoC models the rk3066 BROM code does not have built-in >> support to enter download mode on return to BROM. This binary must check >> the boot mode register for the BOOT_BROM_DOWNLOAD flag and reset if it's set. >> It then returns to BROM to the end of the function that reads boot blocks. >> >From there the BROM code goes into a download mode and waits for data >> on USB OTG and UART0. >> >> Signed-off-by: Johan Jonker <jbx6...@gmail.com> >> --- >> >> Note: >> Normal boot flow is OK. >> In download mode this binary hangs after return to BROM for unknown >> reasons. >> Replace CODE471_OPTION with 30_LPDDR2_300MHz_DD.bin for now. >> >> Could Rockchip disclose what further conditions must be met >> in rk3066 download mode? >> >> Changed V2: >> Move file to rk3066 specific location >> Replace retry_counter by LR check >> Add DNL mode return address >> Restyle >> Reword >> --- >> arch/arm/include/asm/arch-rk3066/boot0.h | 77 +++++++++++++++++++++++- >> arch/arm/mach-rockchip/Kconfig | 17 +++++- >> arch/arm/mach-rockchip/rk3066/Kconfig | 6 ++ >> 3 files changed, 98 insertions(+), 2 deletions(-) >> >> diff --git a/arch/arm/include/asm/arch-rk3066/boot0.h >> b/arch/arm/include/asm/arch-rk3066/boot0.h >> index 28c0fb9a4c6b..1af4b9c1d7ba 100644 >> --- a/arch/arm/include/asm/arch-rk3066/boot0.h >> +++ b/arch/arm/include/asm/arch-rk3066/boot0.h >> @@ -3,6 +3,81 @@ >> #ifndef __ASM_ARCH_BOOT0_H__ >> #define __ASM_ARCH_BOOT0_H__ >> >> -#include <asm/arch-rockchip/boot0.h> >> +#include <asm/arch-rockchip/boot_mode.h> >> >> +/* >> + * Execution starts on the instruction following this 4-byte header >> + * (containing the magic 'RK30'). This magic constant will be written into >> + * the final image by the rkimage tool, but we need to reserve space for it >> here. >> + */ >> +#ifdef CONFIG_SPL_BUILD >> + b 1f /* if overwritten, entry-address is at the next word */ >> +1: >> +#endif >> + >> +#if CONFIG_IS_ENABLED(ROCKCHIP_EARLYRETURN_TO_BROM) >> +/* >> + * Keep track of the re-entries with help of the lr register. >> + * This binary can be re-used and called from various BROM functions. >> + * Only when it's called from the part that handles SPI, NAND or EMMC >> + * hardware it needs to early return to BROM ones. >> + * In download mode when it handles data on USB OTG and UART0 >> + * this section must be skipped. >> + */ >> + ldr r3, =CONFIG_ROCKCHIP_BOOT_LR_REG >> + cmp lr, r3 /* if (LR != CONFIG_ROCKCHIP_BOOT_LR_REG) >> */ >> + bne reset /* goto reset; >> */ >> +/* >> + * Unlike newer Rockchip SoC models the rk3066 BROM code does not have >> built-in >> + * support to enter download mode on return to BROM. This binary must check >> + * the boot mode register for the BOOT_BROM_DOWNLOAD flag and reset if it's >> set. >> + * It then returns to BROM to the end of the function that reads boot >> blocks. >> + * From there the BROM code goes into a download mode and waits for data >> + * on USB OTG and UART0. >> + */ >> + ldr r2, =BOOT_BROM_DOWNLOAD >> + ldr r3, =CONFIG_ROCKCHIP_BOOT_MODE_REG >> + ldr r0, [r3] /* if (readl(CONFIG_ROCKCHIP_BOOT_MODE_REG) != >> */ >> + cmp r0, r2 /* BOOT_BROM_DOWNLOAD) { >> */ >> + bne early_return /* goto early_return; >> */ >> + /* } else { */ >> + mov r0, #0 >> + str r0, [r3] /* writel(0, CONFIG_ROCKCHIP_BOOT_MODE_REG); >> */ >> + >> + ldr r3, =CONFIG_ROCKCHIP_BOOT_RETURN_REG >> + bx r3 /* return to >> CONFIG_ROCKCHIP_BOOT_RETURN_REG;*/ >> + >> +early_return: >> + bx lr /* return to LR in BROM >> */ >> + >> +SAVE_SP_ADDR: >> + .word 0 >> + >> + .globl save_boot_params >> +save_boot_params: >> + push {r1-r12, lr} >> + ldr r0, =SAVE_SP_ADDR >> + str sp, [r0] >> + b save_boot_params_ret >> + >> + .globl back_to_bootrom >> +back_to_bootrom: >> + ldr r0, =SAVE_SP_ADDR >> + ldr sp, [r0] >> + mov r0, #0 >> + pop {r1-r12, pc} >> +#endif >> + >> +#if (defined(CONFIG_SPL_BUILD)) >> +/* U-Boot proper of armv7 does not need this */ >> + b reset >> +#endif >> + >> +/* >> + * For armv7, the addr '_start' will be used as vector start address >> + * and is written to the VBAR register, which needs to aligned to 0x20. >> + */ >> + .align(5), 0x0 >> +_start: >> + ARM_VECTORS >> #endif >> diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig >> index 07b5595dac8c..84a2f0d5ff48 100644 >> --- a/arch/arm/mach-rockchip/Kconfig >> +++ b/arch/arm/mach-rockchip/Kconfig >> @@ -402,7 +402,7 @@ config SPL_ROCKCHIP_BACK_TO_BROM >> config TPL_ROCKCHIP_BACK_TO_BROM >> bool "TPL returns to bootrom" >> default y >> - select ROCKCHIP_BROM_HELPER >> + select ROCKCHIP_BROM_HELPER if !ROCKCHIP_RK3066 >> select TPL_BOOTROM_SUPPORT >> depends on TPL >> help >> @@ -448,6 +448,21 @@ config ROCKCHIP_BOOT_MODE_REG >> The Soc will enter to different boot mode(defined in >> asm/arch-rockchip/boot_mode.h) >> according to the value from this register. >> >> +config ROCKCHIP_BOOT_LR_REG >> + hex "Rockchip boot early return LR address" >> + depends on TPL_ROCKCHIP_EARLYRETURN_TO_BROM || >> SPL_ROCKCHIP_EARLYRETURN_TO_BROM >> + help >> + With ROCKCHIP_EARLYRETURN_TO_BROM enabled this LR address is >> + used to keep track of the re-entries. >> + >> +config ROCKCHIP_BOOT_RETURN_REG >> + hex "Rockchip download mode return address" >> + depends on TPL_ROCKCHIP_EARLYRETURN_TO_BROM || >> SPL_ROCKCHIP_EARLYRETURN_TO_BROM >> + help >> + Rockchip SoC models without built-in support to enter >> + download mode after early return to BROM code use a SoC >> + specific return address in BROM. >> + >> config ROCKCHIP_RK8XX_DISABLE_BOOT_ON_POWERON >> bool "Disable device boot on power plug-in" >> depends on PMIC_RK8XX >> diff --git a/arch/arm/mach-rockchip/rk3066/Kconfig >> b/arch/arm/mach-rockchip/rk3066/Kconfig >> index 95d7fc8a2917..3721f7469a9e 100644 >> --- a/arch/arm/mach-rockchip/rk3066/Kconfig >> +++ b/arch/arm/mach-rockchip/rk3066/Kconfig >> @@ -10,6 +10,12 @@ config TARGET_MK808 >> config ROCKCHIP_BOOT_MODE_REG >> default 0x20004040 >> >> +config ROCKCHIP_BOOT_LR_REG >> + default 0x00001058 >> + >> +config ROCKCHIP_BOOT_RETURN_REG >> + default 0x00001100 >> + >> config SYS_SOC >> default "rk3066" >> >> -- >> 2.39.2 >>