stroma Posted May 14 Share Posted May 14 Hi team, This is not exactly Armbian related, however I hope to find some help here, also it can be useful for someone else in custom board development (my case). For testing I have Olimex RK3328-SOM-EVB and RK3318 TV box boards. They both behave the same way. As summary I'm trying to boot Linux using the Bootrom and USB OTG only, in other words without any external boot NVM attached. To archive this I build U-Boot SPL (u-boot-spl.bin), which support SDP protocol via USB OTG. For SDP file transfer I'm using imx_usb tool. The binaries used in the process are: rk3328_uboot_v1.19.250.bin - consists of u-boot-tpl.bin and u-boot-spl.bin created with boot_merger tool. u-boot.itb - FIT image (ATF, u-boot.bin and dtb), mainline U-Boot v2023.10 kernel.itb - FIT image (Image.gz and dtb), mainline kernel v6.1 I also prepared a proper sdcard image, from above binaries and wrote it to an SD card. My test setup consists of two booting paths, note the binaries in both are the same: With boot path 1, u-boot-tpl, u-boot-spl loaded via USB OTG: RK3328 in Mask ROM mode, SD card removed rkdeveloptool db rk3328_uboot_v1.19.250.bin insert SD card imx_usb - u-boot.itb boot kernel from U-boot prompt: setenv bootargs root=/dev/mmcblk1p2 console=ttyS2,1500000 earlycon ro rootwait; mmc dev 1; load mmc 1 0x800800 kernel.itb; bootm 0x800800 With boot path 2, u-boot-tpl, u-boot-spl loaded from SD card: insert SD card, power on (or reset) the board imx_usb - u-boot.itb boot kernel from U-boot prompt: setenv bootargs root=/dev/mmcblk1p2 console=ttyS2,1500000 earlycon ro rootwait; mmc dev 1; load mmc 1 0x800800 kernel.itb; bootm 0x800800 The overall description of two boot paths is as follow: boot path 1: rk3328_uboot_v1.19.250.bin (bootrom via OTG)-+ +- -> uboot.itb (imx_usb) -> kernel.itb (from SD card) boot path 2: rk3328_uboot_v1.19.250.bin (bootrom via SD) -+ The issues I have: When the SoC is booted through boot path 1 the kernel hangs soon after starting ... [ 0.016620] smp: Bringing up secondary CPUs ... If boot path 2 is used - The kernel boots and everything works as expected. The Bootrom in RK3318/28 first tries eMMC, SPI NOR, SPI NAND and SD card, if those boot devices failed then USB OTG is used for booting. Since the only difference between two boot paths is the way the TPL/SPL is loaded from the Bootrom - USB OTG or SD card, the only logical explanation I can think of is that there is some "leftover" in SoC state after OTG boot, which causes the kernel to hang. Does anyone have any idea how I can narrow down and eventually find the cause for this issue? 0 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.