From: E Shattow <e@freeshell.de>
To: u-boot@lists.u-boot-project.org
Subject: [DNM v1 0/7] Guide to build reduced SpacemiT K3 vendor BSP (continued)
Date: Wed, 28 Oct 2026 17:33:27 -0700 [thread overview]
Message-ID: <20261029003327.1890979-1-e@freeshell.de> (raw)
In-Reply-To: <20261029001555.1890775-1-e@freeshell.de>
Do Not Merge
Informational purpose only, to aid mainline development of SpacemiT K3
support.
...continued from https://lore.kernel.org/u-boot/20261029001555.1890775-1-e@freeshell.de/
What is known to be working from mainline?
- mkimage to post-process SPL into spl/u-boot-spl-mkimage.bin
- FIT U-Boot main app u-boot.itb
- dependency on OpenSBI
What do we need from the vendor BSP?
- SPL
(Optional) Additional hardware used?
- K3 Pico-ITX BootROM UART SPL loader mode selected by pull-up via
FPC-36P reverse cable and adapter to header pins (2.54mm pitch
DuPont connector).
The assumption in this guide is root user in a fresh Debian 13
Trixie build environment on amd64 architecture build host.
dpkg --add-architecture riscv64
apt install -y bison ca-certificates flex gcc-riscv64-linux-gnu git \
libgnutls28-dev libpython3-dev libssl-dev python3-setuptools swig \
curl
export CROSS_COMPILE=riscv64-linux-gnu-
git clone https://github.com/riscv-software-src/opensbi.git \
opensbi.git
git -C opensbi.git checkout d28bc6f89837 # origin/master
# v6 "platform: generic: spacemit: add K3 platform support"
# https://patchwork.ozlabs.org/project/opensbi/list/?series=530305
curl https://patchwork.ozlabs.org/series/530305/mbox/ \
| git -C opensbi.git am
make -C opensbi.git O=../opensbi clean
make -C opensbi.git O=../opensbi PLATFORM=generic
git clone https://git.u-boot-project.org/u-boot/u-boot.git u-boot.git
git -C u-boot.git remote add -f spacemit-com \
https://github.com/spacemit-com/uboot-2022.10.git
git -C u-boot.git checkout 03e45557e1f3 # origin/main
# v1 "Spacemit K3 enable Linux boot"
# https://patchwork.ozlabs.org/project/uboot/list/?series=530384
curl https://patchwork.ozlabs.org/series/530384/mbox/ \
| git -C u-boot.git am
make -C u-boot.git O=../u-boot spacemit_k3_defconfig
fw_dynbin=$(realpath opensbi/platform/generic/firmware/fw_dynamic.bin)
make -C u-boot.git O=../u-boot OPENSBI=$fw_dynbin
git -C u-boot.git checkout k3-br-v1.0.10 # spacemit-com/k3-br-v1.0.y
# v1 "Guide to build reduced SpacemiT K3 vendor BSP"
# https://patchwork.ozlabs.org/project/uboot/list/?series=530447
curl https://patchwork.ozlabs.org/series/530447/mbox/ \
| git -C u-boot.git am
mki=$(realpath u-boot/tools/mkimage)
make -C u-boot.git O=../bsp-spi \
spacemit_k3_uart_spi_defconfig
make -C u-boot.git O=../bsp-spi MKIMAGE=$mki \
spl/u-boot-spl-mkimage.bin
make -C u-boot.git O=../bsp-nospi \
spacemit_k3_uart_nospi_defconfig
make -C u-boot.git O=../bsp-nospi MKIMAGE=$mki \
spl/u-boot-spl-mkimage.bin
tar -czf reduced-spacemit-k3-vendor-bsp.tar.gz \
--transform 's~^~reduced-spacemit-k3-vendor-bsp/~' \
bsp-nospi/spl/u-boot-spl-mkimage.bin \
bsp-spi/spl/u-boot-spl-mkimage.bin \
u-boot/u-boot.itb
### K3 Pico-ITX BootROM UART SPL loader
Connect USB selection bias-pulldown pin 10 high to VCC1V8 pin 1 or
pin 2 for UART selection and pin 11 high to VCC1V8 selects BootROM
USB/UART download mode; pin 11 low is normal operation from selected
NOR/UFS/MMC/NAND secondary boot after SD card. If you do not have a
flat flex cable then it is possible with a sharp probe and steady
hands to do so, the easiest method apparently being to connect the
physically large VCC1V8 leg of the EEPROM part to probe FPC-36P pin 10
and depress the Firmware DownLoad button held for a moment while
pressing the reset or powering up the board. The reason for wanting to
activate BootROM UART mode is to avoid the use of Fastboot USB, and to
isolate any peripheral configuration that may have been acted upon by
BootROM which may be different between the available BootROM SPL
loader modes.
Visual reference:
https://web.archive.org/web/20261025124009/https://freeshell.de/e/riscv64/K3PicoITX-explainer_boot_resistors-20261017draft.webp
Connect for fastboot transfers the K3 Pico-ITX USB-C OTG port (not the
corner USB-C power input/display port) using USB-C to USB-A cable and
then to any USB-A port on the fastboot and serial terminal host.
Connect a serial UART cable, note the board TXD is adjacent to the PCB
board edge and opposite of that is GND with board RXD in the middle;
swap adapter TXD and adapter RXD as appropriate.
The vanilla vendor BSP assumes use of fastboot USB in FSBL.bin SPL for
main.itb loading. If the vanilla vendor BSP main.itb runs with pin 10
low (the board default) then it again attempts to load an SPL and this
can be escaped to a hush prompt by fastboot host 'fastboot continue'.
The UART variants of vendor BSP are patched to assume that u-boot.itb
is loaded over serial UART in YMODEM protocol. If activated the
BootROM UART loader assumes loading an SPL over serial UART in XMODEM
protocol. Using the 'tio' serial terminal software the keybind
sequences are (Control-t,x,0) for XMODEM and (Control-t,y) for YMODEM.
If you initiate a transfer and question-mark characters '?' appear
then the transfer has not synchronized correctly, so abort sending and
then re-try sending the transfer until you will see '.' progress marks
appear. The reduction in build config options for "bsp-spi" deletes
support for USB from SPL. The "bsp-nospi" has nearly all options
removed leaving only YMODEM loading, DRAM initialization, and
dependency of EEPROM TLV access for DRAM id.
Example boot 'mini.efi' netinst Debian debian-installer:
Power on or reset board with FDL button pressed (or pin 11 high)
sys: 0x10001200
bm:2
usb_init : enter 3296,3072
usb_core_init : enter
DWC3_GRXTHRCFG:0x4400000
ROM: usb download handler
rst
done H
setup= 0x1000680 0x400000,
rst
done H
setup= 0x1a0500 0x0,
setup= 0x1000680 0x120000,
setup= 0x2000680 0x90000,
setup= 0x2000680 0x200000,
setup= 0x3000680 0xff0000,
setup= 0x3020680 0xff0409,
setup= 0x3010680 0xff0409,
setup= 0x10900 0x0,
usb_rx_bytes : start len[4096]
setup= 0x3020680 0xff0409,
setup= 0x3040680 0xff0409,
host$ fastboot stage bsp-nospi/spl/u-boot-spl-mkimage.bin
fastboot_handle_command: max-download-size
usb_tx_bytes : start len[14]
usb_rx_bytes : start len[4096]
fastboot_handle_command: 0003cd00
Starting download of 249088 bytes
usb_tx_bytes : start len[12]
usb_rx_bytes : start len[249088]
usb_tx_bytes : start len[4]
usb_rx_bytes : start len[4096]
host$ fastboot continue
fastboot_handle_command: continue
usb_tx_bytes : start len[4]
j...
U-Boot SPL 2022.10-00007-g69c3d4b55f6 (Oct 28 2026 - 21:57:06 +0000)
LPDDR5 total size: 32 GB, data rate: 6400 MT/s
DDR training consume 5612ms
Get cluster clk error
CCC
host$ curl -LO \
https://d-i.debian.org/daily-images/riscv64/daily/netboot/mini.efi
host$ python3 -m http.server 8000
(Control-t,y)
[16:28:01.384] Send file with YMODEM
[16:28:01.384] Enter file name:
u-boot/u-boot.itb
[16:28:01.384] Enter file name: u-boot/u-boot.itb
[16:28:01.384] Send file with YMODEM
[16:28:12.766] Sending file 'u-boot/u-boot.itb'
[16:28:12.766] Press any key to abort transfer
...|
[16:29:57.267] Done
Loaded 1115321 bytes
load failed: uboot=-1 esos=-1
<debug_uart>
clk_register: failed to get external_clk device (parent of espi_s...
U-Boot 2027.01-rc1-00037-g96c9b2e9d606 (Oct 28 2026 - 21:54:22 +0...
DRAM: 16 GiB
clk_register: failed to get external_clk device (parent of espi_s...
Core: 452 devices, 21 uclasses, devicetree: separate
*** Warning - spi_flash_probe_bus_cs() failed, using default envi...
In: serial@d4017000
Out: serial@d4017000
Err: serial@d4017000
Net:
Warning: ethernet@cac80000 (eth0) using random MAC address - 06:3...
eth0: ethernet@cac80000
Hit any key to stop autoboot: 2 1 0
(Control-c)
=>
dhcp
=> dhcp
ethernet@cac80000 Waiting for PHY auto negotiation to complete......
DHCP client bound to address 192.168.2.81 (29 ms)
error: no file name
=>
wget http://host:8000/mini.efi
##################################################
88906240 bytes transferred in 760 ms (111.6 MiB/s)
Bytes transferred = 88906240 (54c9a00 hex)
bootefi $loadaddr
prev parent reply other threads:[~2026-10-29 0:33 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-29 0:15 [DNM v1 0/7] Guide to build reduced SpacemiT K3 vendor BSP E Shattow
2026-10-29 0:15 ` [DNM PATCH v1 1/7] reduced SpacemiT K3 vendor BSP: use MKIMAGE build env E Shattow
2026-10-29 0:15 ` [DNM PATCH v1 2/7] reduced SpacemiT K3 vendor BSP: add guards around config optioned k3.c code E Shattow
2026-10-29 0:15 ` [DNM PATCH v1 3/7] reduced SpacemiT K3 vendor BSP: add fallback fastboot buf addr and size def E Shattow
2026-10-29 0:15 ` [DNM PATCH v1 4/7] reduced SpacemiT K3 vendor BSP: force UART boot when YMODEM_SUPPORT enabled E Shattow
2026-10-29 0:15 ` [DNM PATCH v1 5/7] reduced SpacemiT K3 vendor BSP: add UART SPI defconfig E Shattow
2026-10-29 0:15 ` [DNM PATCH v1 6/7] reduced SpacemiT K3 vendor BSP: add UART (no SPI) defconfig E Shattow
2026-10-29 0:15 ` [DNM PATCH v1 7/7] reduced SpacemiT K3 vendor BSP: set uart compatible for mainline OpenSBI E Shattow
2026-10-29 0:33 ` E Shattow [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261029003327.1890979-1-e@freeshell.de \
--to=e@freeshell.de \
--cc=u-boot@lists.u-boot-project.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.