U-Boot stuck after DRAM output on my custom V3S board...

47 views
Skip to first unread message

Antonio Tornisiello

unread,
Mar 22, 2024, 6:14:08 PMMar 22
to linux-sunxi

Hi, all!

I'm new to the forum and, keeping with the long time tradition, my first message is asking for help and guidance :D

I'm developing my own board based on the Allwinner V3S SOC. For most of the hardware I've followed the schematic for the Lichee Pi Zero. After struggling with the power supply, I finally (believe) that I got the timings right and the voltages stable.

Now I'm trying to understand the U-Boot boot process to see why I'm stuck on getting the board booting.

Long story short: U-Boots stops after it outputs the DRAM amount.

The first thing I did was trying to check the stability of the CPU. For that, I've injected a code right before the "Trying to boot from" message, with an infinite loop, doing arithmetical calculations and outputting to UART. I left this code running overnight and it kept running fine. Alright, so I assume my CPU is stable... so moving forward...

Any U-Boot code wizards out there that could give me a hand on identifying exactly where it is stuck, so I could give me a clue if it's hardware or firmware related?

Bellow is my latest log.
- It has verbose 9 level enable everywhere plus CONFIG_TRACE enabled.
- The [number] before the "DRAM" lines was injected by me to try locating the code line that was outputting it.
- the message "board_init_f finished" I inserted at the last line of the board_init_f function.

Thanks a bunch!

--------------------------------
U-Boot SPL 2024.04-rc4 (Mar 22 2024 - 18:31:19 -0300)
[5]DRAM: 64 MiB
size=18, ptr=18, limit=100000: 4fd00000
Trying to boot from MMC1
common/malloc_simple.c:27-alloc_simple() size=190, ptr=1a8, limit=100000: common/malloc_simple.c:48-malloc_simple() 4fd00018
drivers/mmc/mmc.c:196-mmc_select_mode() selecting mode MMC legacy (freq : 0 MHz)
drivers/mmc/mmc.c:196-mmc_select_mode() selecting mode MMC legacy (freq : 25 MHz)
drivers/mmc/mmc.c:1821-sd_select_mode_and_width() trying mode SD High Speed (50MHz) width 4 (at 50 MHz)
drivers/mmc/mmc.c:196-mmc_select_mode() selecting mode MMC legacy (freq : 25 MHz)
drivers/mmc/mmc.c:1821-sd_select_mode_and_width() trying mode SD High Speed (50MHz) width 1 (at 50 MHz)
drivers/mmc/mmc.c:196-mmc_select_mode() selecting mode SD High Speed (50MHz) (freq : 50 MHz)
ers/core/lists.c:201-      lists_bind_fdt() bind node leds
drivers/core/lists.c:222-      lists_bind_fdt()    - attempt to match compatible string 'gpio-leds'
drivers/core/lists.c:273-      lists_bind_fdt() No match for node 'leds'
drivers/core/lists.c:201-      lists_bind_fdt() bind node binman
drivers/core/lists.c:206-      lists_bind_fdt() Device 'binman' has no compatible string
drivers/core/lists.c:201-      lists_bind_fdt() bind node __symbols__
drivers/core/lists.c:206-      lists_bind_fdt() Device '__symbols__' has no compatible string
drivers/core/root.c:205-    dm_scan_fdt_node()    - ignoring disabled device
drivers/core/lists.c:201-      lists_bind_fdt() bind node osc24M_clk
drivers/core/lists.c:222-      lists_bind_fdt()    - attempt to match compatible string 'fixed-clock'
drivers/core/lists.c:250-      lists_bind_fdt()    - found match at 'fixed_clock': 'fixed-clock' matches 'fixed-clock'
common/malloc_simple.c:27-        alloc_simple() size=18, ptr=174, limit=2000: 602c
common/malloc_simple.c:27-        alloc_simple() size=50, ptr=1c4, limit=2000: 6044
common/malloc_simple.c:27-        alloc_simple() size=28, ptr=1ec, limit=2000: 6094
drivers/core/device.c:185-  device_bind_common() Bound device osc24M_clk to root_driver
drivers/core/lists.c:201-      lists_bind_fdt() bind node osc32k_clk
drivers/core/lists.c:222-      lists_bind_fdt()    - attempt to match compatible string 'fixed-clock'
drivers/core/lists.c:250-      lists_bind_fdt()    - found match at 'fixed_clock': 'fixed-clock' matches 'fixed-clock'
common/malloc_simple.c:27-        alloc_simple() size=50, ptr=23c, limit=2000: 60bc
common/malloc_simple.c:27-        alloc_simple() size=28, ptr=264, limit=2000: 610c
drivers/core/device.c:185-  device_bind_common() Bound device osc32k_clk to root_driver
common/malloc_simple.c:27-        alloc_simple() size=18, ptr=27c, limit=2000: 6134
drivers/core/lists.c:201-      lists_bind_fdt() bind node serial@1c28000
drivers/core/lists.c:222-      lists_bind_fdt()    - attempt to match compatible string 'snps,dw-apb-uart'
drivers/core/lists.c:250-      lists_bind_fdt()    - found match at 'ns16550_serial': 'ns16550' matches 'snps,dw-apb-uart'
common/malloc_simple.c:27-        alloc_simple() size=50, ptr=2cc, limit=2000: 614c
drivers/core/device.c:95-  device_bind_common()    - seq=0
common/malloc_simple.c:27-        alloc_simple() size=20, ptr=2ec, limit=2000: 619c
drivers/core/device.c:185-  device_bind_common() Bound device serial@1c28000 to root_driver
common/malloc_simple.c:27-        alloc_simple() size=18, ptr=304, limit=2000: 61bc
common/malloc_simple.c:27-        alloc_simple() size=10, ptr=314, limit=2000: 61d4
drivers/core/uclass.c:538-uclass_get_device_by_ofnode() Looking for clock@1c20000
drivers/core/uclass.c:389-uclass_find_device_by_ofnode() Looking for clock@1c20000
drivers/core/uclass.c:398-uclass_find_device_by_ofnode()       - checking osc24M_clk
drivers/core/uclass.c:398-uclass_find_device_by_ofnode()       - checking osc32k_clk
drivers/core/uclass.c:408-uclass_find_device_by_ofnode()    - result for clock@1c20000: (none) (ret=-19)
drivers/core/uclass.c:541-uclass_get_device_by_ofnode()    - result for clock@1c20000: (none) (ret=-19)
drivers/clk/clk-uclass.c:91-clk_get_by_index_tail() get: returning err=-19
common/malloc_simple.c:27-        alloc_simple() size=18, ptr=32c, limit=2000: 61e4
drivers/pinctrl/pinctrl-uclass.c:87-pinctrl_select_state_full() ns16550_serial serial@1c28000: pinctrl_select_state_full: uclass_get_device_by_phandle_id: err=-19
common/malloc_simple.c:27-        alloc_simple() size=40, ptr=370, limit=2000: aligned to 6200
drivers/core/uclass.c:538-uclass_get_device_by_ofnode() Looking for clock@1c20000
drivers/core/uclass.c:389-uclass_find_device_by_ofnode() Looking for clock@1c20000
common/malloc_simple.c:27-        alloc_simple() size=18, ptr=388, limit=2000: 6240
drivers/core/uclass.c:408-uclass_find_device_by_ofnode()    - result for clock@1c20000: (none) (ret=-19)
drivers/core/uclass.c:541-uclass_get_device_by_ofnode()    - result for clock@1c20000: (none) (ret=-19)


U-Boot 2024.04-rc4 (Mar 22 2024 - 18:31:19 -0300) Allwinner Technology

common/malloc_simple.c:27-        alloc_simple() size=18, ptr=3a0, limit=2000: 6258
CPU:   Allwinner V3s (SUN8I 1681)
Model: Lichee Pi Zero
[14]DRAM:  64 MiB
board_init_f finished
--------------------------------


Daniel Roitman

unread,
Mar 26, 2024, 4:14:07 AMMar 26
to linux-sunxi
Hi António, 
I'm also new to this processor. I made my first board based on V3s last year. I had a lot of problems that almost made me give up, there is a lot of information in Chinese that is difficult to find and the datasheet is not completely reliable.
But without much ado in your case everything seems to be fine with the bootloader. But it cannot find or advance the bootscript.
I advise you to look at this post to build a file system correctly for your system:


or even try creating a memory card with a sipeed image for initial testing:


Good luck wishes
Daniel Pozzatti

Jakob L

unread,
Apr 2, 2024, 5:34:33 PMApr 2
to linux-sunxi
Hi António,

good to see you here! I am also fairly new - but i have spent some time with this CPU and might be able to help you a bit.
I would recommend you do use an image that is known good. For example boot the Lichepi minmin image. You will find it on the licheepizero.us website.

If this does boot we know we have to search in your u-boot configs and devicetree. Did you use licheepi configs and dts?
Using it should be risk free - it has fixed voltage regulators.

Good luck!
Jakob
Reply all
Reply to author
Forward
0 new messages