This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[FAQ] Buildroot Support for Sitara AM62x/AM62Ax/AM64x Devices

Part Number: AM6442
Other Parts Discussed in Thread: SK-AM62, AM625, SK-AM62B, , SK-AM64B

(also applicable to other AM62x, AM62Ax, AM64x parts with changes)

Introduction

Buildroot (https://buildroot.org/) is a simple, efficient, and easy-to-use tool for generating bootable images for Embedded Linux systems through cross-compilation. Due to this it is a popular alternative to the widely-used Yocto-based build system. Some key differentiators are that it is easy to configure most aspects of the target image including but not limited to adding, configuring, and removing packages all using a menu-based system and that the build system itself behind the scenes is Makefile-based and with this will be immediately familiar to many developers (as opposed to the complex scripting language and layered approach Yocto uses). All this is what makes Buildroot very approachable and suitable especially for embedded systems engineers moving from MCUs into the world of Linux-based MPUs.

Current State of Support for TI's AM6x Devices

TI is aware of the need for Buildroot support for AM6x devices and has started working with the Buildroot community in 2022 on an initial implementation for AM64 devices. This effort somewhat stalled around the end of 2022 but has since been picked up again. On June 15th 2023 an updated patch set ("PATCH v8") has been posted to the community mailing list (https://lists.buildroot.org/pipermail/buildroot/2023-June/668947.html) to continue the previous effort, adding AM64 and AM62 device support including graphics based on some prework that was published as part of this E2E FAQ here over the last few weeks. The most current patch set was posted on June 22nd 2023 ("PATCH v9") and is available at https://lore.kernel.org/buildroot/20230625193648.GA646621@scaer/T/.

The below screenshot demonstrates current upstream Buildroot with experimental AM64x support added showing the "menuconfig" screen which is used for package selection and overall image configuration purposes. The rest of this E2E FAQ discusses how to setup and use Buildroot to build bootable SD card images for AM64x as well as for AM62x devices.

Building Bootable SD Card Images for AM62x and AM64x (Experimental Support Only!)

ExclamationDisclaimer: The officially recommended and TI-supported way of generating bootable Embedded Linux images for use on Sitara AM6x devices is using the Yocto-based Linux SDKs for the different AM6x devices available at https://www.ti.com/tool/PROCESSOR-SDK-AM62X, https://www.ti.com/tool/PROCESSOR-SDK-AM62A, and https://www.ti.com/tool/PROCESSOR-SDK-AM64X. The steps outlined here to get early access and enablement of AM6x on Buildroot are provided as-is and are intended for experimentation only.

Due the experimental nature of the AM6x support discussed here there are several limitations with the created image, including but not limited to the following:

  • While the current solution supports booting on AM62x HS-FS and AM64x HS-FS devices by default, it does not yet support booting on AM62x HS-SE and AM64x HS-SE devices. The certificate/signing process needed to support AM62x/AM64x HS-SE silicon for proper/full authenticated boot flow has not been fully implemented yet. If support for HS-SE is needed, those steps will need to get added, modeled after the current AM62x/AM64x Linux SDK.
  • Some SoC-specific features such as remote core firmware loading / messaging and low-power mode support are not fully implemented and or tested yet

Setting up the Build Environment

As with most aspects of Buildroot setting up the build environment is pretty straightforward, and usually only involves cloning the official Buildroot Git repository to a Linux machine. Due to the official Buildroot repository currently (as of May 2023) only containing incomplete support for AM64x and no support for AM62x, some additional patches will need to get applied manually before images for these devices can be build.

To make re-creating Buildroot support for AM62x and AM64x easier those patches are provided as part of a tarball attached to this E2E FAQ for convenience. Always use the latest/most current patch set available for experimentation and consult the Change Log table column for additional details.

Also while Buildroot itself supports a wide range of host systems the steps outlined in this section were specifically tested using Ubuntu 22.04. Note that Buildroot expects a few basic packages to be present on the host system, many of which should already be preinstalled on a typical Ubuntu 22.04 system however. Usually installing the 'build-essential' and 'libncurses-dev' (for using the menuconfig interface) additional packages should be most/all that's needed. Refer to the official Buildroot documentation for additional details: https://buildroot.org/downloads/manual/manual.html#requirement

# Clone the Buildroot Git repository from the official sources
a0797059@ula0797059:~/git
$ git clone https://git.buildroot.net/buildroot
Cloning into 'buildroot'...
remote: Enumerating objects: 3425, done.
remote: Counting objects: 100% (3425/3425), done.
remote: Compressing objects: 100% (3312/3312), done.
remote: Total 505068 (delta 1706), reused 240 (delta 111), pack-reused 501643
Receiving objects: 100% (505068/505068), 109.47 MiB | 2.84 MiB/s, done.
Resolving deltas: 100% (354798/354798), done.
Updating files: 100% (13204/13204), done.

# Change into the Buildroot folder
a0797059@ula0797059:~/git
$ cd buildroot/

# Optional/Recommended: Establish a new branch with a the same baseline commit
# that was used to create the patch set that needs to be applied. Skipping this
# step may cause issues over time, as 'master' advances further due to ongoing
# upstream development.
a0797059@ula0797059:~/git/buildroot (master)
$ git checkout -b am6x-dev 2023.05-rc2
Switched to a new branch 'am6x-dev'

# Copy the latest patch tarball provided along this E2E FAQ into the Buildroot
# root folder and extract it.
a0797059@ula0797059:~/git/buildroot (am6x-dev)
$ tar -xvf buildroot-am64-sk-am62-sk-1-jun-2023.tar.gz 
0001-boot-ti-k3-r5-loader-allow-for-full-build-source-cus.patch
0002-boot-ti-k3-image-gen-add-new-package.patch
0003-boot-uboot-add-support-for-building-the-TI-K3-DM-int.patch
0004-board-ti-am64x_sk-add-new-board.patch
0005-board-ti-am62x_sk-add-new-board.patch
0006-board-ti-am62x_sk-am64x_sk-switch-to-TI-SDK-v8.6-sou.patch
0007-board-ti-am62x_sk-am64x_sk-switch-to-HS-FS-device-va.patch

# Apply the extracted patches
a0797059@ula0797059:~/git/buildroot (am6x-dev)
$ git am *.patch
Applying: boot/ti-k3-r5-loader: allow for full build source customization
Applying: boot/ti-k3-image-gen: add new package
Applying: boot/uboot: add support for building the TI K3 DM into U-Boot
Applying: board/ti/am64x_sk: add new board
Applying: board/ti/am62x_sk: add new board
Applying: board/ti/am62x_sk|am64x_sk: switch to TI SDK v8.6 sources
Applying: board/ti/am62x_sk|am64x_sk: switch to HS-FS device variants

Supported Boards and Build Configurations

The below table provides an overview of how to setup builds for different boards that are supported. Note that there are several revisions of the TI Starter Kit (SK) boards in circulation that differ in the device variant that is used, amongst other things, requiring the build environment to get setup slightly differently. For simplicity sake, the board revision letter suffix (e.g., 'B') is omitted from most of the discussion in this FAQ.

TI Starter Kit SKU Device Variant TI_SECURE_DEV_PKG
Environmental Variable

HS-FS Support Patch
"board/ti/am62x_sk|am64x_sk:
switch to HS-FS device variants"

Buildroot defconfig
SK-AM62 AM625 GP Not needed Don't apply am62x_sk_defconfig
SK-AM62B AM625 HS-FS Required Required am62x_sk_defconfig
SK-AM64 AM6442 GP Not needed Don't apply am64x_sk_defconfig
SK-AM64B AM6442 HS-FS Required Required am64x_sk_defconfig

Building SD Card Images

After the basic build environment was setup there's nothing special really about using Buildroot and building images at this point, so all the steps outlined in the Buildroot quick start guide (https://buildroot.org/downloads/manual/manual.html#_buildroot_quick_start) apply as-is. Below log capture shows a typical session building an SD card image for the SK-AM64 board via am64x_sk_defconfig.

# NOTE: Skip this step if using patch set v9 or later
#
# Create a clone of the core-secdev-k3 repository which is needed to provide the
# signing scripts and keys for building for HS-FS silicon variants. Note when
# building for GP silicon variants, this step is not needed.
a0797059@ula0797059:~/git/buildroot (am6x-dev)
$ git clone https://git.ti.com/git/security-development-tools/core-secdev-k3.git
Cloning into 'core-secdev-k3'...
remote: Enumerating objects: 63, done.
remote: Counting objects: 100% (63/63), done.
remote: Compressing objects: 100% (60/60), done.
remote: Total 63 (delta 21), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (63/63), 58.88 KiB | 2.80 MiB/s, done.
Resolving deltas: 100% (21/21), done.

# NOTE: Skip this step if using patch set v9 or later
#
# Export the location of the core-secdev-k3 repository for use by the build process
a0797059@ula0797059:~/git/buildroot (am6x-dev)
$ export TI_SECURE_DEV_PKG=$PWD/core-secdev-k3

# Establish the Buildroot baseline configuration for building for the SK-AM64 board
a0797059@ula0797059:~/git/buildroot (am6x-dev)
$ make am64x_sk_defconfig
mkdir -p /home/a0797059/git/buildroot/output/build/buildroot-config/lxdialog
PKG_CONFIG_PATH="" make CC="/usr/bin/gcc" HOSTCC="/usr/bin/gcc" \
    obj=/home/a0797059/git/buildroot/output/build/buildroot-config -C support/kconfig -f Makefile.br conf
/usr/bin/gcc -I/usr/include/ncursesw -DCURSES_LOC="<curses.h>"  -DNCURSES_WIDECHAR=1 -DLOCALE  -I/home/a0797059/git/buildroot/output/build/buildroot-config -DCONFIG_=\"\"  -MM *.c > /home/a0797059/git/buildroot/output/build/buildroot-config/.depend 2>/dev/null || :
/usr/bin/gcc -I/usr/include/ncursesw -DCURSES_LOC="<curses.h>"  -DNCURSES_WIDECHAR=1 -DLOCALE  -I/home/a0797059/git/buildroot/output/build/buildroot-config -DCONFIG_=\"\"   -c conf.c -o /home/a0797059/git/buildroot/output/build/buildroot-config/conf.o
/usr/bin/gcc -I/usr/include/ncursesw -DCURSES_LOC="<curses.h>"  -DNCURSES_WIDECHAR=1 -DLOCALE  -I/home/a0797059/git/buildroot/output/build/buildroot-config -DCONFIG_=\"\"  -I. -c /home/a0797059/git/buildroot/output/build/buildroot-config/zconf.tab.c -o /home/a0797059/git/buildroot/output/build/buildroot-config/zconf.tab.o
/usr/bin/gcc -I/usr/include/ncursesw -DCURSES_LOC="<curses.h>"  -DNCURSES_WIDECHAR=1 -DLOCALE  -I/home/a0797059/git/buildroot/output/build/buildroot-config -DCONFIG_=\"\"   /home/a0797059/git/buildroot/output/build/buildroot-config/conf.o /home/a0797059/git/buildroot/output/build/buildroot-config/zconf.tab.o  -o /home/a0797059/git/buildroot/output/build/buildroot-config/conf
rm /home/a0797059/git/buildroot/output/build/buildroot-config/zconf.tab.c
#
# configuration written to /home/a0797059/git/buildroot/.config
#

# Optional: Inspect and modify the Buildroot configuration (add/configure/remove packages, etc.)
a0797059@ula0797059:~/git/buildroot (am6x-dev)
$ make menuconfig
mkdir -p /home/a0797059/git/buildroot/output/build/buildroot-config/lxdialog
PKG_CONFIG_PATH="" make CC="/usr/bin/gcc" HOSTCC="/usr/bin/gcc" \
    obj=/home/a0797059/git/buildroot/output/build/buildroot-config -C support/kconfig -f Makefile.br mconf
/usr/bin/gcc -I/usr/include/ncursesw -DCURSES_LOC="<curses.h>"  -DNCURSES_WIDECHAR=1 -DLOCALE  -I/home/a0797059/git/buildroot/output/build/buildroot-config -DCONFIG_=\"\"   -c lxdialog/checklist.c -o /home/a0797059/git/buildroot/output/build/buildroot-config/lxdialog/checklist.o
/usr/bin/gcc -I/usr/include/ncursesw -DCURSES_LOC="<curses.h>"  -DNCURSES_WIDECHAR=1 -DLOCALE  -I/home/a0797059/git/buildroot/output/build/buildroot-config -DCONFIG_=\"\"   -c lxdialog/inputbox.c -o /home/a0797059/git/buildroot/output/build/buildroot-config/lxdialog/inputbox.o
/usr/bin/gcc -I/usr/include/ncursesw -DCURSES_LOC="<curses.h>"  -DNCURSES_WIDECHAR=1 -DLOCALE  -I/home/a0797059/git/buildroot/output/build/buildroot-config -DCONFIG_=\"\"   -c lxdialog/menubox.c -o /home/a0797059/git/buildroot/output/build/buildroot-config/lxdialog/menubox.o
/usr/bin/gcc -I/usr/include/ncursesw -DCURSES_LOC="<curses.h>"  -DNCURSES_WIDECHAR=1 -DLOCALE  -I/home/a0797059/git/buildroot/output/build/buildroot-config -DCONFIG_=\"\"   -c lxdialog/textbox.c -o /home/a0797059/git/buildroot/output/build/buildroot-config/lxdialog/textbox.o
/usr/bin/gcc -I/usr/include/ncursesw -DCURSES_LOC="<curses.h>"  -DNCURSES_WIDECHAR=1 -DLOCALE  -I/home/a0797059/git/buildroot/output/build/buildroot-config -DCONFIG_=\"\"   -c lxdialog/util.c -o /home/a0797059/git/buildroot/output/build/buildroot-config/lxdialog/util.o
/usr/bin/gcc -I/usr/include/ncursesw -DCURSES_LOC="<curses.h>"  -DNCURSES_WIDECHAR=1 -DLOCALE  -I/home/a0797059/git/buildroot/output/build/buildroot-config -DCONFIG_=\"\"   -c lxdialog/yesno.c -o /home/a0797059/git/buildroot/output/build/buildroot-config/lxdialog/yesno.o
/usr/bin/gcc -I/usr/include/ncursesw -DCURSES_LOC="<curses.h>"  -DNCURSES_WIDECHAR=1 -DLOCALE  -I/home/a0797059/git/buildroot/output/build/buildroot-config -DCONFIG_=\"\"   -c mconf.c -o /home/a0797059/git/buildroot/output/build/buildroot-config/mconf.o
/usr/bin/gcc -I/usr/include/ncursesw -DCURSES_LOC="<curses.h>"  -DNCURSES_WIDECHAR=1 -DLOCALE  -I/home/a0797059/git/buildroot/output/build/buildroot-config -DCONFIG_=\"\"   /home/a0797059/git/buildroot/output/build/buildroot-config/mconf.o /home/a0797059/git/buildroot/output/build/buildroot-config/zconf.tab.o /home/a0797059/git/buildroot/output/build/buildroot-config/lxdialog/checklist.o /home/a0797059/git/buildroot/output/build/buildroot-config/lxdialog/util.o /home/a0797059/git/buildroot/output/build/buildroot-config/lxdialog/inputbox.o /home/a0797059/git/buildroot/output/build/buildroot-config/lxdialog/textbox.o /home/a0797059/git/buildroot/output/build/buildroot-config/lxdialog/yesno.o /home/a0797059/git/buildroot/output/build/buildroot-config/lxdialog/menubox.o -lncursesw -o /home/a0797059/git/buildroot/output/build/buildroot-config/mconf


*** End of the configuration.
*** Execute 'make' to start the build or try 'make help'.

# Build the target images
a0797059@ula0797059:~/git/buildroot (am6x-dev)
$ make
/usr/bin/make -j1 O=/home/a0797059/git/buildroot/output HOSTCC="/usr/bin/gcc" HOSTCXX="/usr/bin/g++" syncconfig
make[2]: warning: -j1 forced in submake: resetting jobserver mode.
>>> host-skeleton  Extracting
>>> host-skeleton  Patching
>>> host-skeleton  Configuring
>>> host-skeleton  Building
>>> host-skeleton  Installing to host directory
# check-package DoNotInstallToHostdirUsr
>>> host-pkgconf 1.6.3 Downloading
wget --passive-ftp -nd -t 3 -O '/home/a0797059/git/buildroot/output/build/.pkgconf-1.6.3.tar.xz.QidAfl/output' 'https://distfiles.dereferenced.org/pkgconf/pkgconf-1.6.3.tar.xz' 
--2023-05-15 15:11:25--  https://distfiles.dereferenced.org/pkgconf/pkgconf-1.6.3.tar.xz
Length: 291216 (284K) [application/octet-stream]
Saving to: ‘/home/a0797059/git/buildroot/output/build/.pkgconf-1.6.3.tar.xz.QidAfl/output’

/home/a0797059/git/buildroot/output/ 100%[======================================================================>] 284.39K   657KB/s    in 0.4s    

2023-05-15 15:11:27 (657 KB/s) - ‘/home/a0797059/git/buildroot/output/build/.pkgconf-1.6.3.tar.xz.QidAfl/output’ saved [291216/291216]

pkgconf-1.6.3.tar.xz: OK (sha256: 61f0b31b0d5ea0e862b454a80c170f57bad47879c0c42bd8de89200ff62ea210)
>>> host-pkgconf 1.6.3 Extracting
xzcat /home/a0797059/git/buildroot/dl/pkgconf/pkgconf-1.6.3.tar.xz | tar --strip-components=1 -C /home/a0797059/git/buildroot/output/build/host-pkgconf-1.6.3   -xf -
>>> host-pkgconf 1.6.3 Patching

Applying 0001-Only-prefix-with-the-sysroot-a-subset-of-variables.patch using patch: 
patching file libpkgconf/tuple.c

Applying 0002-Revert-main-assume-modversion-insted-of-version-if-o.patch using patch: 
patching file cli/main.c


<...snip...>

>>>   Executing post-image script support/scripts/genimage.sh
INFO: cmd: "mkdir -p "/home/a0797059/git/buildroot/output/build/genimage.tmp"" (stderr):
INFO: cmd: "rm -rf "/home/a0797059/git/buildroot/output/build/genimage.tmp"/*" (stderr):
INFO: cmd: "mkdir -p "/home/a0797059/git/buildroot/output/build/genimage.tmp"" (stderr):
INFO: cmd: "cp -a "/tmp/tmp.xP0pNRWRCX" "/home/a0797059/git/buildroot/output/build/genimage.tmp/root"" (stderr):
INFO: cmd: "mkdir -p "/home/a0797059/git/buildroot/output/images"" (stderr):
INFO: vfat(boot.vfat): cmd: "mkdosfs   '/home/a0797059/git/buildroot/output/images/boot.vfat'" (stderr):
INFO: vfat(boot.vfat): adding file 'tiboot3.bin' as 'tiboot3.bin' ...
INFO: vfat(boot.vfat): cmd: "MTOOLS_SKIP_CHECK=1 mcopy -sp -i '/home/a0797059/git/buildroot/output/images/boot.vfat' '/home/a0797059/git/buildroot/output/images/tiboot3.bin' '::'" (stderr):
INFO: vfat(boot.vfat): adding file 'tispl.bin' as 'tispl.bin' ...
INFO: vfat(boot.vfat): cmd: "MTOOLS_SKIP_CHECK=1 mcopy -sp -i '/home/a0797059/git/buildroot/output/images/boot.vfat' '/home/a0797059/git/buildroot/output/images/tispl.bin' '::'" (stderr):
INFO: vfat(boot.vfat): adding file 'u-boot.img' as 'u-boot.img' ...
INFO: vfat(boot.vfat): cmd: "MTOOLS_SKIP_CHECK=1 mcopy -sp -i '/home/a0797059/git/buildroot/output/images/boot.vfat' '/home/a0797059/git/buildroot/output/images/u-boot.img' '::'" (stderr):
INFO: hdimage(sdcard.img): adding partition 'u-boot' (in MBR) from 'boot.vfat' ...
INFO: hdimage(sdcard.img): adding partition 'rootfs' (in MBR) from 'rootfs.ext4' ...
INFO: hdimage(sdcard.img): adding partition '[MBR]' ...
INFO: hdimage(sdcard.img): writing MBR

# List the generated output image files
a0797059@ula0797059:~/git/buildroot (am6x-dev)
$ ll output/images/
total 351776
drwxr-xr-x 4 a0797059 a0797059      4096 May 15 18:00 ./
drwxrwxr-x 6 a0797059 a0797059      4096 May 15 18:00 ../
-rw-r--r-- 1 a0797059 a0797059     44056 May 15 16:40 bl31.bin
-rw-r--r-- 1 a0797059 a0797059  16777216 May 15 18:00 boot.vfat
-rw-r--r-- 1 a0797059 a0797059  39475712 May 15 18:00 Image
-rwxr-xr-x 1 a0797059 a0797059     38811 May 15 18:00 k3-am642-sk.dtb*
-rw-r--r-- 1 a0797059 a0797059    281256 May 15 16:44 r5-u-boot-spl.bin
-rw-r--r-- 1 a0797059 a0797059 125829120 May 15 18:00 rootfs.ext2
lrwxrwxrwx 1 a0797059 a0797059        11 May 15 18:00 rootfs.ext4 -> rootfs.ext2
-rw-r--r-- 1 a0797059 a0797059 104734720 May 15 18:00 rootfs.tar
-rw-r--r-- 1 a0797059 a0797059 142606848 May 15 18:00 sdcard.img
drwxr-xr-x 3 a0797059 a0797059      4096 May 15 16:44 soc/
-rw-r--r-- 1 a0797059 a0797059    411628 May 15 16:39 tee.bin
-rw-r--r-- 1 a0797059 a0797059        28 May 15 16:39 tee-header_v2.bin
-rw-r--r-- 1 a0797059 a0797059         0 May 15 16:39 tee-pageable_v2.bin
-rw-r--r-- 1 a0797059 a0797059    411600 May 15 16:39 tee-pager_v2.bin
-rw-r--r-- 1 a0797059 a0797059    505617 May 15 16:44 tiboot3.bin
drwxr-xr-x 2 a0797059 a0797059      4096 May 15 16:20 ti-connectivity/
-rw-r--r-- 1 a0797059 a0797059    808916 May 15 16:46 tispl.bin
-rw-r--r-- 1 a0797059 a0797059    914036 May 15 16:46 u-boot.img

To build an SD card image for use with the SK-AM62 board simply use a different defconfig file (am62x_sk_defconfig) to reflect the different target platform as shown below. All other setup and build steps apply the same way.

# Establish the Buildroot baseline configuration for building for the SK-AM62 board
a0797059@ula0797059:~/git/buildroot (am6x-dev)
$ make am62x_sk_defconfig
mkdir -p /home/a0797059/git/buildroot/output/build/buildroot-config/lxdialog
PKG_CONFIG_PATH="" make CC="/usr/bin/gcc" HOSTCC="/usr/bin/gcc" \
    obj=/home/a0797059/git/buildroot/output/build/buildroot-config -C support/kconfig -f Makefile.br conf
/usr/bin/gcc -I/usr/include/ncursesw -DCURSES_LOC="<curses.h>"  -DNCURSES_WIDECHAR=1 -DLOCALE  -I/home/a0797059/git/buildroot/output/build/buildroot-config -DCONFIG_=\"\"  -MM *.c > /home/a0797059/git/buildroot/output/build/buildroot-config/.depend 2>/dev/null || :
/usr/bin/gcc -I/usr/include/ncursesw -DCURSES_LOC="<curses.h>"  -DNCURSES_WIDECHAR=1 -DLOCALE  -I/home/a0797059/git/buildroot/output/build/buildroot-config -DCONFIG_=\"\"   -c conf.c -o /home/a0797059/git/buildroot/output/build/buildroot-config/conf.o
/usr/bin/gcc -I/usr/include/ncursesw -DCURSES_LOC="<curses.h>"  -DNCURSES_WIDECHAR=1 -DLOCALE  -I/home/a0797059/git/buildroot/output/build/buildroot-config -DCONFIG_=\"\"  -I. -c /home/a0797059/git/buildroot/output/build/buildroot-config/zconf.tab.c -o /home/a0797059/git/buildroot/output/build/buildroot-config/zconf.tab.o
/usr/bin/gcc -I/usr/include/ncursesw -DCURSES_LOC="<curses.h>"  -DNCURSES_WIDECHAR=1 -DLOCALE  -I/home/a0797059/git/buildroot/output/build/buildroot-config -DCONFIG_=\"\"   /home/a0797059/git/buildroot/output/build/buildroot-config/conf.o /home/a0797059/git/buildroot/output/build/buildroot-config/zconf.tab.o  -o /home/a0797059/git/buildroot/output/build/buildroot-config/conf
rm /home/a0797059/git/buildroot/output/build/buildroot-config/zconf.tab.c
#
# configuration written to /home/a0797059/git/buildroot/.config
#

Testing Graphics Support on AM62x

While the latest patch set enables the driver needed to support graphics on AM62x through the ti-rogue-km and ti-rogue-um packages, it does not enable any framework or application-specific packages out of the box. If you want to experiment and experience the graphics support you can add the following Buildroot config options either by applying the patch shown below or by manually selecting the appropriate options through make menuconfig:

Author:     Andreas Dannenberg <dannenberg@ti.com>
AuthorDate: Wed May 31 10:50:31 2023 -0500
Commit:     Andreas Dannenberg <dannenberg@ti.com>
CommitDate: Fri Jun 16 16:34:51 2023 -0500

    WIP: configs/am62x_sk_defconfig: enable Weston and Chocolate Doom

    This is a development/test commit to enable and allow experimenting
    with the following features:

    ===Weston===
    $ mkdir /tmp/weston-runtime-dir
    $ export XDG_RUNTIME_DIR=/tmp/weston-runtime-dir
    $ weston --tty=1
    ...or when no keyboard is connected...
    $ weston --tty=1 --continue-without-input

    ===Chocolate Doom===
    $ chocolate-doom
    Note: sound not working yet

    Signed-off-by: Andreas Dannenberg <dannenberg@ti.com>
---
 configs/am62x_sk_defconfig | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/configs/am62x_sk_defconfig b/configs/am62x_sk_defconfig
index c130847e9d..3dfbb0fab6 100644
--- a/configs/am62x_sk_defconfig
+++ b/configs/am62x_sk_defconfig
@@ -1,5 +1,6 @@
 BR2_aarch64=y
 BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y
+BR2_TOOLCHAIN_BUILDROOT_CXX=y
 BR2_CCACHE=y
 BR2_CCACHE_INITIAL_SETUP="--max-size 20G"
 BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
@@ -13,9 +14,16 @@ BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/ti/am62x_sk/ti_sdk_arm64_release_defc
 BR2_LINUX_KERNEL_DTS_SUPPORT=y
 BR2_LINUX_KERNEL_INTREE_DTS_NAME="ti/k3-am625-sk"
 BR2_LINUX_KERNEL_INSTALL_TARGET=y
+BR2_PACKAGE_PULSEAUDIO=y
+BR2_PACKAGE_CHOCOLATE_DOOM=y
+BR2_PACKAGE_DOOM_WAD=y
+BR2_PACKAGE_SDL2_KMSDRM=y
+BR2_PACKAGE_SDL2_OPENGLES=y
+BR2_PACKAGE_WESTON=y
 BR2_PACKAGE_LINUX_FIRMWARE=y
 BR2_PACKAGE_LINUX_FIRMWARE_TI_WL18XX=y
 BR2_PACKAGE_TI_ROGUE_UM=y
+BR2_PACKAGE_ALSA_LIB=y
 BR2_TARGET_ROOTFS_EXT2=y
 BR2_TARGET_ROOTFS_EXT2_4=y
 BR2_TARGET_ROOTFS_EXT2_SIZE="256M"

Programming the SD Card Images

The generated SD card images are ready to be used to boot the SK-AM64 and SK-AM62 boards and can be written to an SD card using the 'dd' command as follows:

# Copy image to SD card. Make sure you use the proper output  device for your
# system, otherwise data loss may occur (use 'lsblk' to double-check)
a0797059@ula0797059:~/git/buildroot (am6x-dev)
$ sudo umount /dev/sdc?
a0797059@ula0797059:~/git/buildroot (am6x-dev)
$ sudo dd if=output/images/sdcard.img of=/dev/sdc bs=1M status=progress && sync
136+1 records in
136+1 records out
142606848 bytes (143 MB, 136 MiB) copied, 6.35363 s, 22.4 MB/s

Testing the SD Card Image on the SK-AM64 Board

ExclamationNote: The experimental image is only compatible with AM64x HS-FS devices. For building an image for use on AM64x GP devices revert/undo the changes made by the "board/ti/am62x_sk|am64x_sk: switch to HS-FS device variants" patch provided as part of this solution.

The resulting boot log should look as follows:

U-Boot SPL 2021.01 (May 29 2023 - 13:14:31 -0500)
EEPROM not available at 80, trying to read at 81
SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
SPL initial stack usage: 13424 bytes
Trying to boot from MMC2
Starting ATF on ARM64 core...

NOTICE:  BL31: v2.8(release):2023.05-rc1-11-g7d17f891b2
NOTICE:  BL31: Built : 13:14:11, May 29 2023
I/TC: 
I/TC: OP-TEE version: 2023.05-rc1-11-g7d17f891b2 (gcc version 11.3.0 (Buildroot 2023.05-rc1-11-g7d17f891b2)) #1 Mon May 29 18:14:10 UTC 2023 aarch64
I/TC: WARNING: This OP-TEE configuration might be insecure!
I/TC: WARNING: Please check https://optee.readthedocs.io/en/latest/architecture/porting_guidelines.html
I/TC: Primary CPU initializing
I/TC: SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
I/TC: HUK Initialized
I/TC: Primary CPU switching to normal world boot

U-Boot SPL 2021.01 (May 29 2023 - 13:14:43 -0500)
SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
Trying to boot from MMC2


U-Boot 2021.01 (May 29 2023 - 13:14:43 -0500)

SoC:   AM64X SR1.0 GP
Model: Texas Instruments AM642 SK
Board: AM64-SKEVM rev E3
DRAM:  2 GiB
NAND:  0 MiB
MMC:   mmc@fa00000: 1
Loading Environment from FAT... *** Warning - bad CRC, using default environment

In:    serial@2800000
Out:   serial@2800000
Err:   serial@2800000
Net:   eth0: ethernet@8000000port@1
Warning: ethernet@8000000port@2 MAC addresses don't match:
Address in ROM is		ac:1f:0f:84:01:dc
Address in environment is	70:ff:76:1d:f2:a1
, eth1: ethernet@8000000port@2
Hit any key to stop autoboot:  0 
switch to partitions #0, OK
mmc1 is current device
SD/MMC found on device 1
Failed to load 'boot.scr'
Failed to load 'uEnv.txt'
19212800 bytes read in 801 ms (22.9 MiB/s)
41647 bytes read in 5 ms (7.9 MiB/s)
## Flattened Device Tree blob at 88000000
   Booting using the fdt blob at 0x88000000
   Loading Device Tree to 000000008fef2000, end 000000008fffffff ... OK

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[    0.000000] Linux version 5.10.168 (a0797059@dasso) (aarch64-buildroot-linux-gnu-gcc.br_real (Buildroot 2023.05-rc1-11-g7d17f891b2) 11.3.0, GNU ld (GNU Binutils) 2.38) #1 SMP PREEMPT Mon May 29 13:15:03 CDT 2023
[    0.000000] Machine model: Texas Instruments AM642 SK
[    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
[    0.000000] printk: bootconsole [ns16550a0] enabled
[    0.000000] efi: UEFI not found.
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a0000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node r5f-memory@a0100000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a1000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node r5f-memory@a1100000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a2000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node r5f-memory@a2100000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a3000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node r5f-memory@a3100000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a4000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node m4f-dma-memory@a4000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a4100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node m4f-memory@a4100000, compatible id shared-dma-pool
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000080000000-0x00000000ffffffff]
[    0.000000]   DMA32    empty
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000080000000-0x000000009e7fffff]
[    0.000000]   node   0: [mem 0x000000009e800000-0x00000000a57fffff]
[    0.000000]   node   0: [mem 0x00000000a5800000-0x00000000ffffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000ffffffff]
[    0.000000] cma: Reserved 512 MiB at 0x00000000dd000000
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv1.1 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: Trusted OS migration not required
[    0.000000] psci: SMC Calling Convention v1.2
[    0.000000] percpu: Embedded 22 pages/cpu s51288 r8192 d30632 u90112
[    0.000000] Detected VIPT I-cache on CPU0
[    0.000000] CPU features: detected: ARM erratum 845719
[    0.000000] CPU features: detected: GIC system register CPU interface
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 516096
[    0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 mtdparts=fc40000.spi.0:1m(ospi.tiboot3),2m(ospi.tispl),4m(ospi.u-boot),256k(ospi.env),256k(ospi.env.backup),57088k@8m(ospi.rootfs),256k(ospi.phypattern);omap2-nand.0:2m(NAND.tiboot3),2m(NAND.tispl),2m(NAND.tiboot3.backup),4m(NAND.u-boot),256k(NAND.u-boot-env),256k(NAND.u-boot-env.backup),-(NAND.file-system) root=PARTUUID=00000000-02 rw rootfstype=ext4 rootwait
[    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
[    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 1398768K/2097152K available (11392K kernel code, 1162K rwdata, 4260K rodata, 1856K init, 431K bss, 174096K reserved, 524288K cma-reserved)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[    0.000000] rcu: Preemptible hierarchical RCU implementation.
[    0.000000] rcu: 	RCU event tracing is enabled.
[    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=2.
[    0.000000] 	Trampoline variant of Tasks RCU enabled.
[    0.000000] 	Tracing variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] GICv3: GIC: Using split EOI/Deactivate mode
[    0.000000] GICv3: 256 SPIs implemented
[    0.000000] GICv3: 0 Extended SPIs implemented
[    0.000000] GICv3: Distributor has no Range Selector support
[    0.000000] GICv3: 16 PPIs implemented
[    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001840000
[    0.000000] ITS [mem 0x01820000-0x0182ffff]
[    0.000000] GIC: enabling workaround for ITS: Socionext Synquacer pre-ITS
[    0.000000] ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
[    0.000000] ITS@0x0000000001820000: allocated 524288 Devices @80800000 (flat, esz 8, psz 64K, shr 0)
[    0.000000] ITS: using cache flushing for cmd queue
[    0.000000] GICv3: using LPI property table @0x0000000080030000
[    0.000000] GIC: using cache flushing for LPI property table
[    0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000080040000
[    0.000000] arch_timer: cp15 timer(s) running at 200.00MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
[    0.000005] sched_clock: 56 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
[    0.008545] Console: colour dummy device 80x25
[    0.013139] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=800000)
[    0.023814] pid_max: default: 32768 minimum: 301
[    0.028637] LSM: Security Framework initializing
[    0.033425] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
[    0.041000] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
[    0.050992] rcu: Hierarchical SRCU implementation.
[    0.056259] Platform MSI: msi-controller@1820000 domain created
[    0.062632] PCI/MSI: /bus@f4000/interrupt-controller@1800000/msi-controller@1820000 domain created
[    0.071902] EFI services will not be available.
[    0.076804] smp: Bringing up secondary CPUs ...
I/TC: Secondary CPU 1 initializing
I/TC: Secondary CPU 1 switching to normal world boot
[    0.090409] Detected VIPT I-cache on CPU1
[    0.090454] GICv3: CPU1: found redistributor 1 region 0:0x0000000001860000
[    0.090471] GICv3: CPU1: using allocated LPI pending table @0x0000000080050000
[    0.090539] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
[    0.090671] smp: Brought up 1 node, 2 CPUs
[    0.120051] SMP: Total of 2 processors activated.
[    0.124865] CPU features: detected: 32-bit EL0 Support
[    0.130139] CPU features: detected: CRC32 instructions
[    0.143556] CPU: All CPU(s) started at EL2
[    0.147761] alternatives: patching kernel code
[    0.153555] devtmpfs: initialized
[    0.163975] KASLR disabled due to lack of seed
[    0.168773] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.178746] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
[    0.204748] pinctrl core: initialized pinctrl subsystem
[    0.210818] DMI not present or invalid.
[    0.215511] NET: Registered protocol family 16
[    0.221967] DMA: preallocated 256 KiB GFP_KERNEL pool for atomic allocations
[    0.229344] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[    0.237454] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    0.246290] thermal_sys: Registered thermal governor 'step_wise'
[    0.246300] thermal_sys: Registered thermal governor 'power_allocator'
[    0.252911] cpuidle: using governor menu
[    0.263792] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[    0.270804] ASID allocator initialised with 65536 entries
[    0.302253] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
[    0.309142] HugeTLB registered 32.0 MiB page size, pre-allocated 0 pages
[    0.315992] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[    0.322838] HugeTLB registered 64.0 KiB page size, pre-allocated 0 pages
[    0.331112] cryptd: max_cpu_qlen set to 1000
[    0.339163] k3-chipinfo 43000014.chipid: Family:AM64X rev:SR1.0 JTAGID[0x0bb3802f] Detected
[    0.348525] vcc_3v3_sys: supplied by vusb_main5v0
[    0.354835] iommu: Default domain type: Translated 
[    0.360272] SCSI subsystem initialized
[    0.364739] mc: Linux media interface: v0.10
[    0.369137] videodev: Linux video capture interface: v2.00
[    0.374831] pps_core: LinuxPPS API ver. 1 registered
[    0.379904] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.389265] PTP clock support registered
[    0.393317] EDAC MC: Ver: 3.0.0
[    0.397551] omap-mailbox 29020000.mailbox: omap mailbox rev 0x66fc9100
[    0.404477] omap-mailbox 29040000.mailbox: omap mailbox rev 0x66fc9100
[    0.411311] omap-mailbox 29060000.mailbox: omap mailbox rev 0x66fc9100
[    0.418828] FPGA manager framework
[    0.422442] Advanced Linux Sound Architecture Driver Initialized.
[    0.429758] clocksource: Switched to clocksource arch_sys_counter
[    0.436316] VFS: Disk quotas dquot_6.6.0
[    0.440413] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    0.453863] NET: Registered protocol family 2
[    0.458626] IP idents hash table entries: 32768 (order: 6, 262144 bytes, linear)
[    0.467629] tcp_listen_portaddr_hash hash table entries: 1024 (order: 2, 16384 bytes, linear)
[    0.476432] TCP established hash table entries: 16384 (order: 5, 131072 bytes, linear)
[    0.484665] TCP bind hash table entries: 16384 (order: 6, 262144 bytes, linear)
[    0.492436] TCP: Hash tables configured (established 16384 bind 16384)
[    0.499378] UDP hash table entries: 1024 (order: 3, 32768 bytes, linear)
[    0.506281] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes, linear)
[    0.513800] NET: Registered protocol family 1
[    0.518882] RPC: Registered named UNIX socket transport module.
[    0.524976] RPC: Registered udp transport module.
[    0.529819] RPC: Registered tcp transport module.
[    0.534627] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.541216] NET: Registered protocol family 44
[    0.545782] PCI: CLS 0 bytes, default 64
[    0.550552] hw perfevents: enabled with armv8_cortex_a53 PMU driver, 7 counters available
[    0.563671] Initialise system trusted keyrings
[    0.568521] workingset: timestamp_bits=46 max_order=19 bucket_order=0
[    0.579674] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.586405] NFS: Registering the id_resolver key type
[    0.591663] Key type id_resolver registered
[    0.595951] Key type id_legacy registered
[    0.600143] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    0.606997] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
[    0.614794] 9p: Installing v9fs 9p2000 file system support
[    0.664173] Key type asymmetric registered
[    0.668380] Asymmetric key parser 'x509' registered
[    0.673425] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 243)
[    0.680996] io scheduler mq-deadline registered
[    0.685625] io scheduler kyber registered
[    0.692108] pinctrl-single 4084000.pinctrl: 33 pins, size 132
[    0.698582] pinctrl-single f4000.pinctrl: 180 pins, size 720
[    0.705538] pinctrl-single a40000.timesync-router: 512 pins, size 2048
[    0.721800] Serial: 8250/16550 driver, 10 ports, IRQ sharing enabled
[    0.744828] brd: module loaded
[    0.756469] loop: module loaded
[    0.760747] megasas: 07.714.04.00-rc1
[    0.768904] tun: Universal TUN/TAP device driver, 1.6
[    0.774850] igbvf: Intel(R) Gigabit Virtual Function Network Driver
[    0.781284] igbvf: Copyright (c) 2009 - 2012 Intel Corporation.
[    0.787409] sky2: driver version 1.30
[    0.792483] VFIO - User Level meta-driver version: 0.3
[    0.799035] i2c /dev entries driver
[    0.804149] sdhci: Secure Digital Host Controller Interface driver
[    0.810498] sdhci: Copyright(c) Pierre Ossman
[    0.815700] sdhci-pltfm: SDHCI platform and OF driver helper
[    0.822982] ledtrig-cpu: registered to indicate activity on CPUs
[    0.829669] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
[    0.838117] optee: probing for conduit method.
I/TC: Reserved shared memory is enabled
I/TC: Dynamic shared memory is enabled
I/TC: Normal World virtualization support is disabled
I/TC: Asynchronous notifications are disabled
[    0.842736] optee: revision 3.20 (7d17f891)
[    0.859365] optee: dynamic shared memory is enabled
[    0.868915] optee: initialized driver
[    0.875358] NET: Registered protocol family 17
[    0.880114] 9pnet: Installing 9P2000 support
[    0.884569] Key type dns_resolver registered
[    0.889363] Loading compiled-in X.509 certificates
[    0.912483] ti-sci 44043000.dmsc: lpm region is required for suspend but not provided.
[    0.920688] ti-sci 44043000.dmsc: ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
[    0.974235] omap-gpmc 3b000000.memory-controller: GPMC revision 6.0
[    0.980698] gpmc_mem_init: disabling cs 0 mapped at 0x0-0x1000000
[    0.990246] omap_i2c 20000000.i2c: bus 0 rev0.12 at 100 kHz
[    0.997638] pca953x 1-0070: supply vcc not found, using dummy regulator
[    1.004618] pca953x 1-0070: using no AI
[    1.030737] omap_i2c 20010000.i2c: bus 1 rev0.12 at 400 kHz
[    1.037907] omap_i2c 20020000.i2c: bus 2 rev0.12 at 100 kHz
[    1.044081] ti-sci-intr bus@f4000:bus@4000000:interrupt-controller1: Interrupt Router 5 domain created
[    1.053818] ti-sci-intr bus@f4000:interrupt-controller0: Interrupt Router 3 domain created
[    1.062634] ti-sci-inta 48000000.interrupt-controller: Interrupt Aggregator domain 28 created
[    1.084356] ti-udma 485c0100.dma-controller: Number of rings: 68
[    1.092026] ti-udma 485c0100.dma-controller: Channels: 24 (bchan: 12, tchan: 6, rchan: 6)
[    1.102317] ti-udma 485c0000.dma-controller: Number of rings: 288
[    1.116901] ti-udma 485c0000.dma-controller: Channels: 44 (tchan: 29, rchan: 15)
[    1.127984] printk: console [ttyS2] disabled
[    1.132448] 2800000.serial: ttyS2 at MMIO 0x2800000 (irq = 16, base_baud = 3000000) is a 8250
[    1.141213] printk: console [ttyS2] enabled
[    1.141213] printk: console [ttyS2] enabled
[    1.149654] printk: bootconsole [ns16550a0] disabled
[    1.149654] printk: bootconsole [ns16550a0] disabled
[    1.161010] omap8250 2840000.serial: PM domain pd:155 will not be powered off
[    1.168558] 2840000.serial: ttyS6 at MMIO 0x2840000 (irq = 17, base_baud = 3000000) is a 8250
[    1.177268] serial serial0: tty port ttyS6 registered
[    1.185966] spi-nor spi0.0: s28hs512t (65536 Kbytes)
[    1.190998] 7 cmdlinepart partitions found on MTD device fc40000.spi.0
[    1.197525] Creating 7 MTD partitions on "fc40000.spi.0":
[    1.202922] 0x000000000000-0x000000100000 : "ospi.tiboot3"
[    1.209821] 0x000000100000-0x000000300000 : "ospi.tispl"
[    1.216348] 0x000000300000-0x000000700000 : "ospi.u-boot"
[    1.222963] 0x000000700000-0x000000740000 : "ospi.env"
[    1.229306] 0x000000740000-0x000000780000 : "ospi.env.backup"
[    1.236342] 0x000000800000-0x000003fc0000 : "ospi.rootfs"
[    1.243005] 0x000003fc0000-0x000004000000 : "ospi.phypattern"
[    1.262306] davinci_mdio 8000f00.mdio: Configuring MDIO in manual mode
[    1.305760] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
[    1.316051] davinci_mdio 8000f00.mdio: phy[0]: device 8000f00.mdio:00, driver TI DP83867
[    1.324166] davinci_mdio 8000f00.mdio: phy[1]: device 8000f00.mdio:01, driver TI DP83867
[    1.332371] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA00903, cpsw version 0x6BA80903 Ports: 3 quirks:00000006
[    1.345250] am65-cpsw-nuss 8000000.ethernet: initialized cpsw ale version 1.4
[    1.352379] am65-cpsw-nuss 8000000.ethernet: ALE Table size 512
[    1.359064] pps pps0: new PPS source ptp0
[    1.363486] am65-cpsw-nuss 8000000.ethernet: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:1
[    1.374288] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 16
[    1.385178] am65-cpts 39000000.cpts: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:0
[    1.394343] k3-j72xx-soc-thermal b00000.temperature-sensor: invalid resource
[    1.401457] k3-j72xx-soc-thermal: probe of b00000.temperature-sensor failed with error -22
[    1.414390] gpio-478 (btuart_rts_sel): hogged as output/high
[    1.427647] vdd_mmc1: supplied by vcc_3v3_sys
[    1.433267] wlan_en: supplied by com8_ls_en
[    1.442175] mmc0: CQHCI version 5.10
[    1.442889] debugfs: Directory 'pd:114' with parent 'pm_genpd' already present!
[    1.450233] mmc1: CQHCI version 5.10
[    1.465499] ALSA device list:
[    1.468507]   No soundcards found.
[    1.498283] mmc0: SDHCI controller on fa10000.mmc [fa10000.mmc] using ADMA 64-bit
[    1.498319] mmc1: SDHCI controller on fa00000.mmc [fa00000.mmc] using ADMA 64-bit
[    1.515104] Waiting for root device PARTUUID=00000000-02...
[    1.524023] sdhci-am654 fa10000.mmc: card claims to support voltages below defined range
[    1.543638] mmc0: new SDIO card at address 0001
[    1.572051] mmc1: new ultra high speed SDR104 SDHC card at address aaaa
[    1.579504] mmcblk1: mmc1:aaaa SC16G 14.8 GiB 
[    1.589818]  mmcblk1: p1 p2
[    1.611166] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null)
[    1.619359] VFS: Mounted root (ext4 filesystem) on device 179:2.
[    1.628879] devtmpfs: mounted
[    1.633266] Freeing unused kernel memory: 1856K
[    1.637937] Run /sbin/init as init process
[    1.703193] EXT4-fs (mmcblk1p2): re-mounted. Opts: (null)
Starting syslogd: OK
Starting klogd: OK
Running sysctl: OK
Seeding 256 bits without crediting
Saving 256 bits of non-creditable seed for next boot
Starting network: OK

Welcome to Buildroot
buildroot login: root
# ls -al /
total 26
drwxr-xr-x   19 root     root          1024 May 29  2023 .
drwxr-xr-x   19 root     root          1024 May 29  2023 ..
drwxr-xr-x    2 root     root          2048 May 29  2023 bin
drwxr-xr-x    2 root     root          1024 May 29  2023 boot
drwxr-xr-x    8 root     root          4000 Jan  1 00:00 dev
drwxr-xr-x    5 root     root          1024 May 29  2023 etc
drwxr-xr-x    5 root     root          1024 May 29  2023 lib
lrwxrwxrwx    1 root     root             3 May 29  2023 lib64 -> lib
lrwxrwxrwx    1 root     root            11 May 29  2023 linuxrc -> bin/busybox
drwx------    2 root     root         12288 May 29  2023 lost+found
drwxr-xr-x    2 root     root          1024 Apr 20  2023 media
drwxr-xr-x    2 root     root          1024 Apr 20  2023 mnt
drwxr-xr-x    2 root     root          1024 Apr 20  2023 opt
dr-xr-xr-x  144 root     root             0 Jan  1 00:00 proc
drwx------    2 root     root          1024 Jan  1 00:00 root
drwxr-xr-x    4 root     root           160 Jan  1 00:00 run
drwxr-xr-x    2 root     root          1024 May 29  2023 sbin
dr-xr-xr-x   12 root     root             0 Jan  1 00:00 sys
drwxrwxrwt    2 root     root            60 Jan  1 00:00 tmp
drwxr-xr-x    6 root     root          1024 May 29  2023 usr
drwxr-xr-x    4 root     root          1024 May 29  2023 var
# ip link set eth0 up
[   70.218350] am65-cpsw-nuss 8000000.ethernet eth0: PHY [8000f00.mdio:00] driver [TI DP83867] (irq=POLL)
[   70.227686] am65-cpsw-nuss 8000000.ethernet eth0: configuring for phy/rgmii-rxid link mode
# [   74.338749] am65-cpsw-nuss 8000000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx

# ip addr add dev eth0 192.168.1.20/24
# ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1): 56 data bytes
64 bytes from 192.168.1.1: seq=0 ttl=64 time=2.110 ms
64 bytes from 192.168.1.1: seq=1 ttl=64 time=0.706 ms
64 bytes from 192.168.1.1: seq=2 ttl=64 time=0.620 ms
64 bytes from 192.168.1.1: seq=3 ttl=64 time=0.825 ms
^C
--- 192.168.1.1 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 0.620/1.065/2.110 ms
# poweroff
# Stopping network: OK
Seeding 256 bits without crediting
Saving 256 bits of non-creditable seed for next boot
Stopping klogd: OK
Stopping syslogd: OK
umount: devtmpfs busy - remounted read-only
[  112.344246] EXT4-fs (mmcblk1p2): re-mounted. Opts: (null)
The system is going down NOW!
Sent SIGTERM to all processes
Sent SIGKILL to all processes
[  114.357462] reboot: Power down
ERROR:   System Off: operation not handled.

Testing the SD Card Image on the SK-AM62 Board

ExclamationNote: The experimental image is only compatible with AM62x HS-FS devices. For building an image for use on AM62x GP devices revert/undo the changes made by the "board/ti/am62x_sk|am64x_sk: switch to HS-FS device variants" patch provided as part of this solution.

The resulting boot log should look as follows:

U-Boot SPL 2021.01 (May 29 2023 - 13:37:28 -0500)
SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
SPL initial stack usage: 13424 bytes
Trying to boot from MMC2
Loading Environment from MMC... *** Warning - No MMC card found, using default environment

Starting ATF on ARM64 core...

NOTICE:  BL31: v2.8(release):2023.05-rc1-11-g7d17f891b2
NOTICE:  BL31: Built : 13:37:08, May 29 2023
I/TC: 
I/TC: OP-TEE version: 2023.05-rc1-11-g7d17f891b2 (gcc version 11.3.0 (Buildroot 2023.05-rc1-11-g7d17f891b2)) #1 Mon May 29 18:37:06 UTC 2023 aarch64
I/TC: WARNING: This OP-TEE configuration might be insecure!
I/TC: WARNING: Please check https://optee.readthedocs.io/en/latest/architecture/porting_guidelines.html
I/TC: Primary CPU initializing
I/TC: SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
I/TC: HUK Initialized
I/TC: Primary CPU switching to normal world boot

U-Boot SPL 2021.01 (May 29 2023 - 13:37:39 -0500)
SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
Trying to boot from MMC2


U-Boot 2021.01 (May 29 2023 - 13:37:39 -0500)

SoC:   AM62X SR1.0 GP
Model: Texas Instruments AM625 SK
EEPROM not available at 0x50, trying to read at 0x51
Board: AM62-SKEVM rev E2
DRAM:  2 GiB
MMC:   mmc@fa10000: 0, mmc@fa00000: 1, mmc@fa20000: 2
Loading Environment from MMC... OK
In:    serial@2800000
Out:   serial@2800000
Err:   serial@2800000
Net:   eth0: ethernet@8000000port@1
Hit any key to stop autoboot:  0 
switch to partitions #0, OK
mmc1 is current device
SD/MMC found on device 1
Failed to load 'boot.scr'
Failed to load 'uEnv.txt'
19212800 bytes read in 247 ms (74.2 MiB/s)
42219 bytes read in 5 ms (8.1 MiB/s)
Failed to load '/boot/k3-am625-base-board-jailhouse.dtbo'
## Flattened Device Tree blob at 88000000
   Booting using the fdt blob at 0x88000000
   Loading Device Tree to 000000008fef2000, end 000000008fffffff ... OK

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[    0.000000] Linux version 5.10.168 (a0797059@dasso) (aarch64-buildroot-linux-gnu-gcc.br_real (Buildroot 2023.05-rc1-11-g7d17f891b2) 11.3.0, GNU ld (GNU Binutils) 2.38) #1 SMP PREEMPT Mon May 29 13:37:55 CDT 2023
[    0.000000] Machine model: Texas Instruments AM625 SK
[    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
[    0.000000] printk: bootconsole [ns16550a0] enabled
[    0.000000] efi: UEFI not found.
[    0.000000] Reserved memory: created DMA memory pool at 0x000000009c800000, size 3 MiB
[    0.000000] OF: reserved mem: initialized node ipc-memories@9c800000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x000000009cb00000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node m4f-dma-memory@9cb00000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x000000009cc00000, size 14 MiB
[    0.000000] OF: reserved mem: initialized node m4f-memory@9cc00000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x000000009da00000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node r5f-dma-memory@9da00000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x000000009db00000, size 12 MiB
[    0.000000] OF: reserved mem: initialized node r5f-memory@9db00000, compatible id shared-dma-pool
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000080000000-0x00000000ffffffff]
[    0.000000]   DMA32    empty
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000080000000-0x000000009c7fffff]
[    0.000000]   node   0: [mem 0x000000009c800000-0x000000009e6fffff]
[    0.000000]   node   0: [mem 0x000000009e700000-0x000000009e77ffff]
[    0.000000]   node   0: [mem 0x000000009e780000-0x000000009fffffff]
[    0.000000]   node   0: [mem 0x00000000a0000000-0x00000000ffffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000ffffffff]
[    0.000000] cma: Reserved 512 MiB at 0x00000000dd000000
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv1.1 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: Trusted OS migration not required
[    0.000000] psci: SMC Calling Convention v1.2
[    0.000000] percpu: Embedded 22 pages/cpu s51288 r8192 d30632 u90112
[    0.000000] Detected VIPT I-cache on CPU0
[    0.000000] CPU features: detected: ARM erratum 845719
[    0.000000] CPU features: detected: GIC system register CPU interface
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 516096
[    0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 root=PARTUUID=00000000-02 rw rootfstype=ext4 rootwait
[    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
[    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 1455816K/2097152K available (11392K kernel code, 1162K rwdata, 4260K rodata, 1856K init, 431K bss, 117048K reserved, 524288K cma-reserved)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] rcu: Preemptible hierarchical RCU implementation.
[    0.000000] rcu: 	RCU event tracing is enabled.
[    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=4.
[    0.000000] 	Trampoline variant of Tasks RCU enabled.
[    0.000000] 	Tracing variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] GICv3: GIC: Using split EOI/Deactivate mode
[    0.000000] GICv3: 256 SPIs implemented
[    0.000000] GICv3: 0 Extended SPIs implemented
[    0.000000] GICv3: Distributor has no Range Selector support
[    0.000000] GICv3: 16 PPIs implemented
[    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001880000
[    0.000000] ITS [mem 0x01820000-0x0182ffff]
[    0.000000] GIC: enabling workaround for ITS: Socionext Synquacer pre-ITS
[    0.000000] ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
[    0.000000] ITS@0x0000000001820000: allocated 524288 Devices @80800000 (flat, esz 8, psz 64K, shr 0)
[    0.000000] ITS: using cache flushing for cmd queue
[    0.000000] GICv3: using LPI property table @0x0000000080040000
[    0.000000] GIC: using cache flushing for LPI property table
[    0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000080050000
[    0.000000] arch_timer: cp15 timer(s) running at 200.00MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
[    0.000004] sched_clock: 56 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
[    0.008493] Console: colour dummy device 80x25
[    0.013085] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=800000)
[    0.023767] pid_max: default: 32768 minimum: 301
[    0.028576] LSM: Security Framework initializing
[    0.033362] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
[    0.040940] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
[    0.050729] rcu: Hierarchical SRCU implementation.
[    0.055908] Platform MSI: msi-controller@1820000 domain created
[    0.062192] PCI/MSI: /bus@f0000/interrupt-controller@1800000/msi-controller@1820000 domain created
[    0.071428] EFI services will not be available.
[    0.076332] smp: Bringing up secondary CPUs ...
I/TC: Secondary CPU 1 initializing
I/TC: Secondary CPU 1 switching to normal world boot
I/TC: Secondary CPU 2 initializing
I/TC: Secondary CPU 2 switching to normal world boot
I/TC: Secondary CPU 3 initializing
I/TC: Secondary CPU 3 switching to normal world boot
[    0.089605] Detected VIPT I-cache on CPU1
[    0.089642] GICv3: CPU1: found redistributor 1 region 0:0x00000000018a0000
[    0.089658] GICv3: CPU1: using allocated LPI pending table @0x0000000080060000
[    0.089717] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
[    0.098366] Detected VIPT I-cache on CPU2
[    0.098391] GICv3: CPU2: found redistributor 2 region 0:0x00000000018c0000
[    0.098403] GICv3: CPU2: using allocated LPI pending table @0x0000000080070000
[    0.098440] CPU2: Booted secondary processor 0x0000000002 [0x410fd034]
[    0.107061] Detected VIPT I-cache on CPU3
[    0.107083] GICv3: CPU3: found redistributor 3 region 0:0x00000000018e0000
[    0.107094] GICv3: CPU3: using allocated LPI pending table @0x0000000080080000
[    0.107126] CPU3: Booted secondary processor 0x0000000003 [0x410fd034]
[    0.107198] smp: Brought up 1 node, 4 CPUs
[    0.186903] SMP: Total of 4 processors activated.
[    0.191715] CPU features: detected: 32-bit EL0 Support
[    0.196979] CPU features: detected: CRC32 instructions
[    0.209497] CPU: All CPU(s) started at EL2
[    0.213703] alternatives: patching kernel code
[    0.219402] devtmpfs: initialized
[    0.228651] KASLR disabled due to lack of seed
[    0.233389] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.243365] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
[    0.264695] pinctrl core: initialized pinctrl subsystem
[    0.270715] DMI not present or invalid.
[    0.275283] NET: Registered protocol family 16
[    0.281459] DMA: preallocated 256 KiB GFP_KERNEL pool for atomic allocations
[    0.288807] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[    0.296882] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    0.305580] thermal_sys: Registered thermal governor 'step_wise'
[    0.305586] thermal_sys: Registered thermal governor 'power_allocator'
[    0.312123] cpuidle: using governor menu
[    0.322957] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[    0.329995] ASID allocator initialised with 65536 entries
[    0.358115] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
[    0.364991] HugeTLB registered 32.0 MiB page size, pre-allocated 0 pages
[    0.371843] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[    0.378694] HugeTLB registered 64.0 KiB page size, pre-allocated 0 pages
[    0.386546] cryptd: max_cpu_qlen set to 1000
[    0.393758] k3-chipinfo 43000014.chipid: Family:AM62X rev:SR1.0 JTAGID[0x0bb7e02f] Detected
[    0.402826] vcc_5v0: supplied by vmain_pd
[    0.407298] vcc_3v3_sys: supplied by vmain_pd
[    0.412178] vcc_1v8: supplied by vcc_3v3_sys
[    0.417510] iommu: Default domain type: Translated 
[    0.422836] SCSI subsystem initialized
[    0.427080] mc: Linux media interface: v0.10
[    0.431466] videodev: Linux video capture interface: v2.00
[    0.437138] pps_core: LinuxPPS API ver. 1 registered
[    0.442212] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.451563] PTP clock support registered
[    0.455600] EDAC MC: Ver: 3.0.0
[    0.459451] omap-mailbox 29000000.mailbox: omap mailbox rev 0x66fc9100
[    0.466590] FPGA manager framework
[    0.470166] Advanced Linux Sound Architecture Driver Initialized.
[    0.477230] clocksource: Switched to clocksource arch_sys_counter
[    0.483685] VFS: Disk quotas dquot_6.6.0
[    0.487745] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    0.499983] NET: Registered protocol family 2
[    0.504730] IP idents hash table entries: 32768 (order: 6, 262144 bytes, linear)
[    0.513470] tcp_listen_portaddr_hash hash table entries: 1024 (order: 2, 16384 bytes, linear)
[    0.522248] TCP established hash table entries: 16384 (order: 5, 131072 bytes, linear)
[    0.530450] TCP bind hash table entries: 16384 (order: 6, 262144 bytes, linear)
[    0.538176] TCP: Hash tables configured (established 16384 bind 16384)
[    0.545061] UDP hash table entries: 1024 (order: 3, 32768 bytes, linear)
[    0.551959] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes, linear)
[    0.559440] NET: Registered protocol family 1
[    0.564350] RPC: Registered named UNIX socket transport module.
[    0.570421] RPC: Registered udp transport module.
[    0.575257] RPC: Registered tcp transport module.
[    0.580069] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.586660] NET: Registered protocol family 44
[    0.591219] PCI: CLS 0 bytes, default 64
[    0.595986] hw perfevents: enabled with armv8_cortex_a53 PMU driver, 7 counters available
[    0.608074] Initialise system trusted keyrings
[    0.612829] workingset: timestamp_bits=46 max_order=19 bucket_order=0
[    0.622963] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.629527] NFS: Registering the id_resolver key type
[    0.634735] Key type id_resolver registered
[    0.639013] Key type id_legacy registered
[    0.643165] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    0.650025] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
[    0.657773] 9p: Installing v9fs 9p2000 file system support
[    0.698365] Key type asymmetric registered
[    0.702561] Asymmetric key parser 'x509' registered
[    0.707584] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 243)
[    0.715149] io scheduler mq-deadline registered
[    0.719779] io scheduler kyber registered
[    0.725933] pinctrl-single 4084000.pinctrl: 34 pins, size 136
[    0.732242] pinctrl-single f4000.pinctrl: 171 pins, size 684
[    0.745157] Serial: 8250/16550 driver, 10 ports, IRQ sharing enabled
[    0.764559] brd: module loaded
[    0.774716] loop: module loaded
[    0.778828] megasas: 07.714.04.00-rc1
[    0.786115] tun: Universal TUN/TAP device driver, 1.6
[    0.791822] igbvf: Intel(R) Gigabit Virtual Function Network Driver
[    0.798245] igbvf: Copyright (c) 2009 - 2012 Intel Corporation.
[    0.804354] sky2: driver version 1.30
[    0.809028] VFIO - User Level meta-driver version: 0.3
[    0.815260] i2c /dev entries driver
[    0.820455] sdhci: Secure Digital Host Controller Interface driver
[    0.826796] sdhci: Copyright(c) Pierre Ossman
[    0.831565] sdhci-pltfm: SDHCI platform and OF driver helper
[    0.838387] ledtrig-cpu: registered to indicate activity on CPUs
[    0.844868] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
[    0.852897] optee: probing for conduit method.
I/TC: Reserved shared memory is enabled
I/TC: Dynamic shared memory is enabled
I/TC: Normal World virtualization support is disabled
I/TC: Asynchronous notifications are disabled
[    0.857485] optee: revision 3.20 (7d17f891)
[    0.874046] optee: dynamic shared memory is enabled
[    0.883548] optee: initialized driver
[    0.889267] NET: Registered protocol family 17
[    0.893975] 9pnet: Installing 9P2000 support
[    0.898423] Key type dns_resolver registered
[    0.903138] Loading compiled-in X.509 certificates
[    0.918897] ti-sci 44043000.system-controller: lpm region is required for suspend but not provided.
[    0.928225] ti-sci 44043000.system-controller: ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
[    0.992289] davinci-mcasp 2b10000.mcasp: IRQ common not found
[    1.000554] omap-gpmc 3b000000.memory-controller: GPMC revision 6.0
[    1.007012] gpmc_mem_init: disabling cs 0 mapped at 0x0-0x1000000
[    1.015971] omap_i2c 20000000.i2c: bus 0 rev0.12 at 400 kHz
[    1.023618] omap_i2c 20010000.i2c: bus 1 rev0.12 at 100 kHz
[    1.029898] ti-sci-intr 4210000.interrupt-controller: Interrupt Router 5 domain created
[    1.038246] ti-sci-intr bus@f0000:interrupt-controller@a00000: Interrupt Router 3 domain created
[    1.047498] ti-sci-inta 48000000.interrupt-controller: Interrupt Aggregator domain 28 created
[    1.056940] ti-udma 485c0100.dma-controller: Number of rings: 82
[    1.064897] ti-udma 485c0100.dma-controller: Channels: 48 (bchan: 18, tchan: 12, rchan: 18)
[    1.075820] ti-udma 485c0000.dma-controller: Number of rings: 150
[    1.085628] ti-udma 485c0000.dma-controller: Channels: 35 (tchan: 20, rchan: 15)
[    1.095649] printk: console [ttyS2] disabled
[    1.100097] 2800000.serial: ttyS2 at MMIO 0x2800000 (irq = 27, base_baud = 3000000) is a 8250
[    1.108863] printk: console [ttyS2] enabled
[    1.108863] printk: console [ttyS2] enabled
[    1.117305] printk: bootconsole [ns16550a0] disabled
[    1.117305] printk: bootconsole [ns16550a0] disabled
[    1.131907] spi-nor spi0.0: s28hs512t (65536 Kbytes)
[    1.136935] 7 fixed-partitions partitions found on MTD device fc40000.spi.0
[    1.143888] Creating 7 MTD partitions on "fc40000.spi.0":
[    1.149288] 0x000000000000-0x000000080000 : "ospi.tiboot3"
[    1.155965] 0x000000080000-0x000000280000 : "ospi.tispl"
[    1.162317] 0x000000280000-0x000000680000 : "ospi.u-boot"
[    1.168682] 0x000000680000-0x0000006c0000 : "ospi.env"
[    1.174806] 0x0000006c0000-0x000000700000 : "ospi.env.backup"
[    1.181529] 0x000000800000-0x000003fc0000 : "ospi.rootfs"
[    1.187916] 0x000003fc0000-0x000004000000 : "ospi.phypattern"
[    1.200478] davinci_mdio 8000f00.mdio: Configuring MDIO in manual mode
[    1.245235] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
[    1.254975] davinci_mdio 8000f00.mdio: phy[0]: device 8000f00.mdio:00, driver TI DP83867
[    1.263082] davinci_mdio 8000f00.mdio: phy[1]: device 8000f00.mdio:01, driver TI DP83867
[    1.271258] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA01103, cpsw version 0x6BA81103 Ports: 3 quirks:00000006
[    1.284094] am65-cpsw-nuss 8000000.ethernet: initialized cpsw ale version 1.5
[    1.291220] am65-cpsw-nuss 8000000.ethernet: ALE Table size 512
[    1.297868] am65-cpsw-nuss 8000000.ethernet: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:0
[    1.308207] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 19
[    1.318296] rtc-ti-k3 2b1f0000.rtc: registered as rtc0
[    1.323486] rtc-ti-k3 2b1f0000.rtc: setting system clock to 1970-01-01T00:00:07 UTC (7)
[    1.435966] mmc0: CQHCI version 5.10
[    1.437398] davinci-mcasp 2b10000.mcasp: IRQ common not found
[    1.457045] pca953x 1-0022: supply vcc not found, using dummy regulator
[    1.463797] pca953x 1-0022: using AI
[    1.475883] mmc0: SDHCI controller on fa10000.mmc [fa10000.mmc] using ADMA 64-bit
[    1.492553] sii902x 1-003b: supply iovcc not found, using dummy regulator
[    1.499466] sii902x 1-003b: supply cvcc12 not found, using dummy regulator
[    1.509153] i2c i2c-1: Added multiplexed i2c bus 2
[    1.516003] [drm] Initialized tidss 1.0.0 20180215 for 30200000.dss on minor 0
[    1.523744] tidss 30200000.dss: [drm] Cannot find any crtc or sizes
[    1.532822] vdd_mmc1: supplied by vcc_3v3_sys
[    1.539018] wlan_lten: supplied by vcc_3v3_sys
[    1.545113] debugfs: Directory 'pd:53' with parent 'pm_genpd' already present!
[    1.545507] wlan_en: supplied by wlan_lten
[    1.545833] mmc1: CQHCI version 5.10
[    1.552395] debugfs: Directory 'pd:52' with parent 'pm_genpd' already present!
[    1.556662] mmc2: CQHCI version 5.10
[    1.560175] debugfs: Directory 'pd:51' with parent 'pm_genpd' already present!
[    1.578503] mmc0: Command Queue Engine enabled
[    1.578515] debugfs: Directory 'pd:182' with parent 'pm_genpd' already present!
[    1.582967] mmc0: new HS200 MMC card at address 0001
[    1.589775] mmc1: SDHCI controller on fa00000.mmc [fa00000.mmc] using ADMA 64-bit
[    1.603768] mmcblk0: mmc0:0001 S0J56X 14.8 GiB 
[    1.608075] mmc2: SDHCI controller on fa20000.mmc [fa20000.mmc] using ADMA 64-bit
[    1.608679] mmcblk0boot0: mmc0:0001 S0J56X partition 1 31.5 MiB
[    1.622157] mmcblk0boot1: mmc0:0001 S0J56X partition 2 31.5 MiB
[    1.628370] mmcblk0rpmb: mmc0:0001 S0J56X partition 3 4.00 MiB, chardev (237:0)
[    1.636135] sdhci-am654 fa20000.mmc: card claims to support voltages below defined range
[    1.643267] ALSA device list:
[    1.647184]   No soundcards found.
[    1.651068] Waiting for root device PARTUUID=00000000-02...
[    1.656328] mmc2: new high speed SDIO card at address 0001
[    1.683832] mmc1: new ultra high speed SDR104 SDHC card at address aaaa
[    1.691128] mmcblk1: mmc1:aaaa SC16G 14.8 GiB 
[    1.701015]  mmcblk1: p1 p2
[    1.764159] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null)
[    1.772341] VFS: Mounted root (ext4 filesystem) on device 179:98.
[    1.782166] devtmpfs: mounted
[    1.786425] Freeing unused kernel memory: 1856K
[    1.791043] Run /sbin/init as init process
[    1.852963] EXT4-fs (mmcblk1p2): re-mounted. Opts: (null)
Starting syslogd: OK
Starting klogd: OK
Running sysctl: OK
Seeding 256 bits without crediting
Saving 256 bits of non-creditable seed for next boot
Starting network: OK

Welcome to Buildroot
buildroot login: root
# ls -al /
total 26
drwxr-xr-x   19 root     root          1024 May 29  2023 .
drwxr-xr-x   19 root     root          1024 May 29  2023 ..
drwxr-xr-x    2 root     root          2048 May 29  2023 bin
drwxr-xr-x    2 root     root          1024 May 29  2023 boot
drwxr-xr-x    9 root     root          4120 Jan  1 00:00 dev
drwxr-xr-x    5 root     root          1024 May 29  2023 etc
drwxr-xr-x    5 root     root          1024 May 29  2023 lib
lrwxrwxrwx    1 root     root             3 May 29  2023 lib64 -> lib
lrwxrwxrwx    1 root     root            11 May 29  2023 linuxrc -> bin/busybox
drwx------    2 root     root         12288 May 29  2023 lost+found
drwxr-xr-x    2 root     root          1024 Apr 20  2023 media
drwxr-xr-x    2 root     root          1024 Apr 20  2023 mnt
drwxr-xr-x    2 root     root          1024 Apr 20  2023 opt
dr-xr-xr-x  172 root     root             0 Jan  1 00:00 proc
drwx------    2 root     root          1024 Jan  1 00:00 root
drwxr-xr-x    4 root     root           160 Jan  1 00:00 run
drwxr-xr-x    2 root     root          1024 May 29  2023 sbin
dr-xr-xr-x   12 root     root             0 Jan  1 00:00 sys
drwxrwxrwt    2 root     root            60 Jan  1 00:00 tmp
drwxr-xr-x    6 root     root          1024 May 29  2023 usr
drwxr-xr-x    4 root     root          1024 May 29  2023 var
# ip link set eth0 up
[   21.144150] am65-cpsw-nuss 8000000.ethernet eth0: PHY [8000f00.mdio:00] driver [TI DP83867] (irq=POLL)
[   21.153472] am65-cpsw-nuss 8000000.ethernet eth0: configuring for phy/rgmii-rxid link mode
# [   24.213979] am65-cpsw-nuss 8000000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx

# ip addr add dev eth0 192.168.1.20/24
# ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1): 56 data bytes
64 bytes from 192.168.1.1: seq=0 ttl=64 time=2.140 ms
64 bytes from 192.168.1.1: seq=1 ttl=64 time=0.627 ms
64 bytes from 192.168.1.1: seq=2 ttl=64 time=0.598 ms
64 bytes from 192.168.1.1: seq=3 ttl=64 time=0.672 ms
64 bytes from 192.168.1.1: seq=4 ttl=64 time=0.556 ms
^C
--- 192.168.1.1 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 0.556/0.918/2.140 ms
# poweroff
# Stopping network: OK
Seeding 256 bits without crediting
Saving 256 bits of non-creditable seed for next boot
Stopping klogd: OK
Stopping syslogd: OK
umount: devtmpfs busy - remounted read-only
[   49.709094] EXT4-fs (mmcblk1p2): re-mounted. Opts: (null)
The system is going down NOW!
Sent SIGTERM to all processes
Sent SIGKILL to all processes
[   51.732249] reboot: Power down
ERROR:   System Off: operation not handled.

Patch Tarballs

Archive Name / Link Change Log
buildroot-am64-sk-15-may-2023.tar.gz
  • Initial patch set
  • Supports SK-AM64 (with GP device variant) only
  • Uses upstream U-Boot/Kernel/ATF/OPTEE
buildroot-am64-sk-am62-sk-29-may-2023.tar.gz
  • Support added for SK-AM62 (GP device variant)
  • Uses U-Boot/Kernel/ATF/OPTEE and various device firmwares from TI's Processor SDK Linux v8.6 (through an optional patch) to achieve a similar level of basic platform feature-completeness and quality as the official SDK
  • Various fixes and cleanups
buildroot-am64-sk-am62-sk-1-jun-2023.tar.gz
  • Supports SK-AM62B with AM62 HS-FS and SK-AM64B with AM64 HS-FS device variants by default. Note that this requires the TI_SECURE_DEV_PKG environmental variable to be defined at build time pointing to a valid core-secdev-k3 folder location, otherwise the build will fail.
buildroot-am64-sk-am62-sk-patch-v8-15-jun-2023.tar.gz
buildroot-am64-sk-am62-sk-patch-v9-22-jun-2023.tar.gz
  • Added ti-core-secdev-k3 package to  automatically sign boot artifacts for HS-FS device variants. With this, the setup steps to download/clone the core-secdev-k3 tool from TI and exposing it through the TI_SECURE_DEV_PKG environmental variable are no longer needed