Vaaman Board Stuck at Logo Screen
As seen in the picture above, upon power up, the board seemed to hang or get stuck in some boot-loop.
Upon trying to debug using the serial converter, there was another quirk of the bootup process that was discovered. The board won’t accept power from the PD Cable if there is a serial converter connected to it already. Be mindful while plugging the board to power.
@rohan_devarc also mentioned that this is the case for the JTAG Adapter as well.
Most of the cheap USB-to-UART converters can’t support the default baud rate which is 1500000. This also includes the Raspberry Pico Debug Probe.
My suggestion is to use the Converters which use the higher-end FTDI Chips. I got a successful connection with a FTDI FT232H Chip that I had lying around on a different board. Did a janky soldering job to get it working.
The serial terminal worked perfectly
Attaching the serial console log while the board is attempting to boot
DDR Version 1.30 20230417
In
channel 0
CS = 0
MR0=0x18
MR4=0x1
MR5=0x1
MR8=0x10
MR12=0x72
MR14=0x72
MR18=0x0
MR19=0x0
MR24=0x8
MR25=0x0
channel 1
CS = 0
MR0=0x0
MR4=0x0
MR5=0x0
MR8=0x0
MR12=0x0
MR14=0x0
MR18=0x0
MR19=0x0
MR24=0x0
MR25=0x0
channel 0 training pass!
channel 1 training failed!
change freq to 416MHz 0,1
Channel 0: LPDDR4,416MHz
Bus Width=32 Col=10 Bank=8 Row=16 CS=1 Die Bus-Width=16 Size=2048MB
no stride
channel 0
CS = 0
MR0=0x18
MR4=0x1
MR5=0x1
MR8=0x10
MR12=0x72
MR14=0x72
MR18=0x0
MR19=0x0
MR24=0x8
MR25=0x0
channel 0 training pass!
channel 0, cs 0, advanced training done
change freq to 856MHz 1,0
ch 0 ddrconfig = 0x101, ddrsize = 0x40
pmugrf_os_reg[2] = 0x1000E2C1, stride = 0x17
ddr_set_rate to 328MHZ
ddr_set_rate to 666MHZ
ddr_set_rate to 928MHZ
channel 0, cs 0, advanced training done
ddr_set_rate to 416MHZ, ctl_index 0
ddr_set_rate to 856MHZ, ctl_index 1
support 416 856 328 666 928 MHz, current 856MHz
OUT
Boot1 Release Time: May 26 2022 18:14:35, version: 1.30
CPUId = 0x0
ChipType = 0x10, 326
mmc_set_bus_width: 1
EmmcClk: 375KHZ
mmc_switch index:183, value:0x2
mmc_switch index:185, value:0x2
EmmcClk: 375KHZ
mmc_set_bus_width: 8
EmmcClk: 200000KHZ
SdmmcInit=2 0
BootCapSize=100000
UserCapSize=29820MB
FwPartOffset=2000 , 100000
NeedKHz=200KHz, Clock=12000KHz
NeedKHz=200KHz, Clock=12000KHz
NeedKHz=200KHz, Clock=12000KHz
mmc0:cmd8,20
mmc0:cmd5,20
mmc0:cmd55,20
mmc0:cmd1,20
NeedKHz=200KHz, Clock=12000KHz
NeedKHz=200KHz, Clock=12000KHz
mmc0:cmd8,20
mmc0:cmd5,20
mmc0:cmd55,20
mmc0:cmd1,20
NeedKHz=200KHz, Clock=12000KHz
NeedKHz=200KHz, Clock=12000KHz
mmc0:cmd8,20
mmc0:cmd5,20
mmc0:cmd55,20
mmc0:cmd1,20
NeedKHz=200KHz, Clock=12000KHz
SdmmcInit=0 1
StorageInit ok = 78682
SecureMode = 1
SecureInit read PBA: 0x4
SecureInit read PBA: 0x404
atags_set_pub_key: ret:(0)
SecureInit ret = 0, SecureMode = 1
atags_set_bootdev: ret:(0)
GPT part: 0, name: uboot, start:0x4000, size:0x2000
GPT part: 1, name: trust, start:0x6000, size:0x2000
GPT part: 2, name: misc, start:0x8000, size:0x2000
GPT part: 3, name: boot, start:0xa000, size:0x40000
GPT part: 4, name: recovery, start:0x4a000, size:0x10000
GPT part: 5, name: backup, start:0x5a000, size:0x10000
GPT part: 6, name: userdata, start:0x6a000, size:0x80000
GPT part: 7, name: rootfs, start:0xea000, size:0x3953fdf
find part:uboot OK. first_lba:0x4000.
find part:trust OK. first_lba:0x6000.
LoadTrust Addr:0x6000
No find bl30.bin
Load uboot, ReadLba = 4000
Load OK, addr=0x200000, size=0x13beb0
RunBL31 0x40000 @ 136661 us
NOTICE: BL31: v1.3(release):8f40012ab
NOTICE: BL31: Built : 14:20:53, Feb 16 2023
NOTICE: BL31: Rockchip release version: v1.1
INFO: GICv3 with legacy support detected. ARM GICV3 driver initialized in EL3
INFO: Using opteed sec cpu_context!
INFO: boot cpu mask: 0
INFO: plat_rockchip_pmu_init(1203): pd status 3e
INFO: BL31: Initializing runtime services
INFO: BL31: Initializing BL32
INF [0x0] TEE-CORE:init_primary_helper:337: Initializing (1.1.0-286-g44e25f04e #hisping.lin #10 Fri Jul 28 06:18:14 UTC 2023 aarch64)
INF [0x0] TEE-CORE:init_primary_helper:338: Release version: 1.2
INF [0x0] TEE-CORE:init_teecore:83: teecore inits done
INFO: BL31: Preparing for EL3 exit to normal world
INFO: Entry point address = 0x200000
INFO: SPSR = 0x3c9
U-Boot 2017.09-g260381e8bf1-230928-dirty #vicharak (Nov 28 2023 - 06:24:53 +0000)
Model: Vicharak RK3399 VAAMAN VO.3
MPIDR: 0x80000000
PreSerial: 2, raw, 0xff1a0000
DRAM: 2 GiB
Sysmem: init
Relocation Offset: 7da22000
Relocation fdt: 7bc14f18 - 7bc18cd3
CR: M/C/I
DM: v1
dwmmc@fe320000: 0, sdhci@fe330000: 1
Card did not respond to voltage select!
mmc_init: -95, time 9 card not detected!
Device 0: unknown device
Card did not respond to voltage select!
mmc_init: -95, time 9 card not detected!
switch to partitions #0, OK
mmc1(part 0) is current device
Booting from eMMC
Bootdev(scan): mmc 1
MMC1: HS400, 150Mhz
PartType: EFI
=================begin===================
102393 bytes read in 3 ms (32.5 MiB/s)
DTB(Distro): rk3399-vaaman-linux.dtb
boot mode: None
Error binding driver 'gpio_led': -22
Some drivers failed to bind
I2c0 speed: 400000Hz
PMIC: RK808
vdd_center 900000 uV
vdd_cpu_l 900000 uV
vdd_log 1100000 uV
io-domain: OK
*** Warning - bad CRC, using default environment
Could not find baseparameter partition
Model: Vicharak RK3399 VAAMAN VO.3 LINUX
MPIDR: 0x80000000
request gpio 124 failed
No resource file: logo.bmp
=================begin===================
512 bytes read in 2 ms (250 KiB/s)
rockchip_read_distro_logo: Load logo.bmp from 1:4
=================begin===================
188054 bytes read in 2 ms (89.7 MiB/s)
rockchip_read_distro_logo: Load logo.bmp from 1:4
Rockchip UBOOT DRM driver version: v1.0.1
hdmi@ff940000 disconnected
CLK: (uboot. arml: enter 816000 KHz, init 816000 KHz, kernel 0N/A)
CLK: (uboot. armb: enter 816000 KHz, init 816000 KHz, kernel 0N/A)
aplll 816000 KHz
apllb 816000 KHz
dpll 856000 KHz
cpll 24000 KHz
gpll 800000 KHz
npll 600000 KHz
vpll 24000 KHz
aclk_perihp 133333 KHz
hclk_perihp 66666 KHz
pclk_perihp 33333 KHz
aclk_perilp0 266666 KHz
hclk_perilp0 88888 KHz
pclk_perilp0 44444 KHz
hclk_perilp1 100000 KHz
pclk_perilp1 50000 KHz
request gpio 124 failed
Net: eth0: ethernet@fe300000
Hit key to stop autoboot('CTRL+C'): 3 2 1 0
ANDROID: reboot reason: "(none)"
No valid android hdr
Android image load failed
Android boot failed, error -1.
Unknown command 'boot_fit' - try 'help'
## Booting Rockchip Format Image
Could not find kernel partition, ret=-1
Device 0: unknown device
Card did not respond to voltage select!
mmc_init: -95, time 9 card not detected!
switch to partitions #0, OK
mmc1(part 0) is current device
Scanning mmc 1:4...
Found /extlinux/extlinux.conf
Retrieving file: /extlinux/extlinux.conf
=================begin===================
665 bytes read in 2 ms (324.2 KiB/s)
U-Boot menu
1: Vicharak Linux Kernel 5.10.160-vaaman
Enter choice: 1: Vicharak Linux Kernel 5.10.160-vaaman
Retrieving file: /initrd.img-5.10.160-vaaman
=================begin===================
15122131 bytes read in 71 ms (203.1 MiB/s)
Retrieving file: /Image-5.10.160-vaaman
=================begin===================
38775296 bytes read in 177 ms (208.9 MiB/s)
append: audit=0 earlycon=uart8250,mmio32,0xff1a0000 console=ttyFIQ0 irqchip.gicv3_pseudo_nmi=0 loglevel=4 earlyprintk plymouth.ignore-serial-consoles quiet root=PARTUUID=614e0000-0000-4b53-8000-1d28000054a9 rootwait rw splash coherent_pool=1m
Fdt Ramdisk skip relocation
"Synchronous Abort" handler, esr 0x96000010
* Reason: Exception from a Data abort, from current exception level
* PC = 000000000028dd1c
* LR = 000000000022afb8
* SP = 000000007bc11f40
* ESR_EL2 = 0000000096000010
* Reloc Off = 000000007da22000
x0 : 0000000000000000 x1 : 0000000000000000
x2 : 0000000000000062 x3 : 000000007dd3ea80
x4 : 0000000000000000 x5 : 000000007dd5afc8
x6 : 0000000000000001 x7 : 0000000000000000
x8 : 0000000000000001 x9 : 0000000000000008
x10: 000000007bc69290 x11: 000000007bc2bee8
x12: 0000000000000000 x13: 0000000000000200
x14: 0000000000000002 x15: 0000000000000020
x16: 000000007dc826a8 x17: 00000000824cb2b0
x18: 000000007bc19ce0 x19: 000000007dd5afc8
x20: 0000000000000000 x21: 000000007dd5b108
x22: 000000007bc8e4b8 x23: 0000000000000001
x24: 000000007bc122f8 x25: 000000007dd40e10
x26: 0000000000000000 x27: 0000000000000002
x28: 000000007bc8e370 x29: 000000007bc12120
Call trace:
PC: [< 0028dd1c >]
LR: [< 0022afb8 >]
Stack:
[< 0028dd1c >]
[< 0021a7c0 >]
[< 00211818 >]
[< 00211a54 >]
[< 00211ddc >]
[< 0022f854 >]
[< 00218bf4 >]
[< 00218da4 >]
[< 002184fc >]
[< 00218aac >]
[< 00218da4 >]
[< 002184c0 >]
[< 0022edf0 >]
[< 0022f854 >]
[< 00218bf4 >]
[< 00218888 >]
[< 00218da4 >]
[< 002184c0 >]
[< 0022edf0 >]
[< 0022f854 >]
[< 00218bf4 >]
[< 00218888 >]
[< 00218da4 >]
[< 002184c0 >]
[< 0022edf0 >]
[< 0022f854 >]
[< 00218bf4 >]
[< 00218888 >]
[< 00218888 >]
[< 00218da4 >]
[< 002184c0 >]
[< 0022edf0 >]
[< 0022f854 >]
[< 00218bf4 >]
[< 00218888 >]
[< 00218da4 >]
[< 002184c0 >]
[< 0022edf0 >]
[< 0022f854 >]
[< 00218bf4 >]
[< 00218da4 >]
[< 002184c0 >]
[< 0022edf0 >]
[< 0022f854 >]
[< 00218bf4 >]
[< 00218da4 >]
[< 002184fc >]
[< 00218aac >]
[< 00218888 >]
[< 00218da4 >]
[< 002184c0 >]
[< 0022edf0 >]
[< 0022f854 >]
[< 00218bf4 >]
[< 00218da4 >]
[< 002184c0 >]
[< 0022ed54 >]
[< 0021944c >]
[< 00216ed8 >]
[< 00219aa0 >]
[< 002915e8 >]
[< 00219e4c >]
[< 002019b8 >]
Copy info from "Call trace..." to a file(eg. dump.txt), and run
command in your U-Boot project: ./scripts/stacktrace.sh dump.txt
Resetting CPU ...
### ERROR ### Please RESET the board ###
@djkabutar turned out to be a saviour-angel for the board.
Message from @djkabutar on the discord channel
1. Turn on the board and press ctrl+c, when prompted in u-boot. You should be able to get console of U-boot.
2. Enter `ums 1 mmc 1` in the console
3. Connect USB Type-C cable with you laptop, the port is located just beside HDMI port.
4. After connecting, you should be able to see multiple partitions in your desktop, on windows it will be automatically mounted, if you are on linux you need to mount /dev/sdX4 partition somewhere.
`sudo mount /dev/sdX4 --mkdir mntp`
Make sure to change X with the device letter.
1. After mounting it properly, open the file extlinux.conf from extlinux directory.
2. Just before the last line i.e. `append .....` , add new line with this as content `fdt /rk3399-vaaman-linux.dtb`. Make sure to properly indent this as other content & there should not be any leading spaces after `fdt .....`.
3. After doing this save the file and umount the partition and reboot the board.
I got the eMMC memory to be recognised if I pre-connect the USB-C Cable mentioned above before powering the board.
In my case, the device got recognised as sda4. The --mkdir thingie had some issues for my laptop.
So I had to run the following commands on my user directory
mkdir mntp
sudo mount /dev/sda4 ./mntp
Follow the rest of the instructions mentioned above and save the file. Be sure to change write permissions or run your editor as sudo while editing the extlinux.conf file. Save the file after making the changes.
Use the following command to unmount
sudo umount ./mntp
In case this doesn’t work for anyone facing the same issue in the future, consider reflashing the firmware on the eMMC using the Linux Upgrade Tool.
Link to documentation on how to do the reflashing
Thanks @poorawsanhsirk .
Make sure when you get back on the proper boot at last, make a link of dtb like this
sudo ln -s rk3399-vaaman-linux.dtb /boot/rk-kernel.dtb
This is to avoid the same issue in future.