[PATCH 2/3] k3-am62-pocketbeagle2: add initial board support

Marko Mäkelä marko.makela at iki.fi
Sun Mar 29 19:13:57 CEST 2026


Hi Robert,

Sat, Mar 28, 2026 at 11:39:00AM -0500, Robert Nelson wrote:
>Side note, here's my ci builder for u-boot.. :
>https://github.com/beagleboard/u-boot-pocketbeagle2

Thank you. I see that the build_u-boot.sh is fetching trusted-firmware-a 
from a different source than I am (see below).

>For debug, if you have access to them, grab the Raspberry PI debug 
>cable: 
>https://www.digikey.com/en/products/detail/raspberry-pi/SC0889/17877576 
>and they are available globally..

Yesterday, a friend gave me an adapter cable that allows me to use an 
existing 3.3V compatible USB UART adapter.

When using the pristine PocketBeagle 2 MicroSD card image, I will get 
some messages from U-boot, followed by the console output from the Linux 
kernel and finally from the Debian user space.

With any of my self-built images, the SPL is unable to start the 64-bit 
U-boot:

U-Boot SPL 2026.01 (Mar 29 2026 - 15:56:33 +0000)
SYSFW ABI: 4.0 (firmware rev 0x000c '12.0.2--v12.00.02 (Clever Cat)')
Changed A53 CPU frequency to 1400000000Hz (T grade) in DT
SPL initial stack usage: 13416 bytes
Trying to boot from MMC2
Authentication passed
Authentication passed
Authentication passed
Authentication passed
Authentication passed
Starting ATF on ARM64 core...

I had a working build script for the phyBOARD Lyra, which I have 
slightly modified for this experiment. I have a build container that was 
set up some months ago, as follows:

FROM debian:latest

RUN apt update&&apt install -y build-essential bc flex bison libssl-dev kmod \
binutils-multiarch gcc-aarch64-linux-gnu gcc-arm-linux-gnueabihf \
python3 python3-setuptools python3-dev python3-cryptography \
python3-pyelftools python3-yaml yamllint python3-jsonschema swig gnutls-dev

I set up source directories like this:

[ -d u-boot ] ||
     git clone --depth=1 -b master https://source.denx.de/u-boot/u-boot.git \
         u-boot
[ -d trusted-firmware-a ] ||
     git clone --depth=1 -b master \
         https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/ \
         trusted-firmware-a
[ -d optee_os ] ||
     git clone --depth=1 -b master https://github.com/OP-TEE/optee_os.git \
         optee_os
[ -d ti-linux-firmware ] ||
     git clone --depth=1 -b ti-linux-firmware \
         https://git.ti.com/git/processor-firmware/ti-linux-firmware.git \
         ti-linux-firmware

Initially, I used some older checkouts of the other components.  
Updating them to the latest did not make any difference: the SPL was 
able to start up also with the older snapshots.

Here are the git revisions that I used of the above directories:

u-boot: your ef03e35488377a32cdd4f76d1a03ef7f60c798ef
trusted-firmware-a: 8dae0862c502e08568a61a1050091fa9357f1240 (Mar 23)
optee_os: 1c0c7c06563e9be0ebc55b47cdb71422b02906a6 (Mar 23)
ti-linux-firmware: 12.00.00.07 (Mar 20)

For podman run, I am bind-mounting the source directory tree using the 
:O (overlay) option. So, even though I appear to run "in-source" build, 
the original source directories outside the container will remain 
unchanged. The files tiboot3.bin, tispl.bin, and u-boot.img are 
generated by running the following commands inside the container:

make -j$(nproc) -C trusted-firmware-a CROSS_COMPILE=aarch64-linux-gnu- \
ARCH=aarch64 PLAT=k3 SPD=opteed TARGET_BOARD=lite

make -j$(nproc) -C optee_os CROSS_COMPILE=arm-linux-gnueabihf- \
CROSS_COMPILE64=aarch64-linux-gnu- CFG_ARM64_core=y CFG_WITH_SOFTWARE_PRNG=y \
PLATFORM=k3-am62x

cd u-boot
make am62_pocketbeagle2_r5_defconfig &&
make -j$(nproc) CROSS_COMPILE=arm-linux-gnueabihf- \
BINMAN_INDIRS=$(pwd)/../ti-linux-firmware &&

make am62_pocketbeagle2_a53_defconfig &&
make -j$(nproc) CROSS_COMPILE=aarch64-linux-gnu- \
BINMAN_INDIRS=$(pwd)/../ti-linux-firmware \
BL31=$(pwd)/../trusted-firmware-a/build/k3/lite/release/bl31.bin \
TEE=$(pwd)/../optee_os/out/arm-plat-k3/core/tee-raw.bin

Based on reviewing your build script, I revised the above by adding 
TFA_EXTRA_ARGS=K3_USART_0x6 to trusted-firmware-a and 
CFG_CONSOLE_UART=0x6 to optee_os, but they made no difference.  
Furthermore, I replaced tee-raw.bin with tee-pager_v2.bin: no change.

What am I doing wrong here?

With best regards,

	Marko


More information about the U-Boot mailing list