Building a current EdgeAI image for the BeagleBone AI-64 — progress + one remaining blocker
Following up on the “EdgeAI flasher images not working on AI-64” topic. I went the build-it-yourself route and got a current tisdk-edgeai-image to build, boot, and bring up a display on the BeagleBone AI-64. The accelerated TIOVX path still fails at runtime, and I think I’ve pinned down exactly why — would appreciate input from anyone who’s gone further.
Setup
-
oe-layersetup with processor-sdk-analytics-11.02.00-config.txt
-
MACHINE = "beaglebone-ai64", ARAGO_BRAND = "edgeai"
-
Building tisdk-default-image (works) and tisdk-edgeai-image
-
All fixes kept in a separate machine/brand-scoped meta layer so the TI layers stay untouched
Build fixes that got tisdk-edgeai-image to compile
1. ti-vision-apps was pinned to a stale manifest for the edgeai brand. The recipe has a brand override:
SRC_URI:edgeai = "...REL.PSDK.ANALYTICS.NONSAFETY.11.01.00.03...;manifest=vision_apps_yocto_nonsafety.xml"
With ARAGO_BRAND = "edgeai" that override wins, so vision_apps was built from the 11.01 release, while ti-tidl (its arm-tidl is at SRCREV 4366d488…) is at 11.02. Result: ti-tidl failed to link with
libvx_tidl_rt.so: undefined reference to `tivxCreateObjectArrayFromList'
libvx_tidl_rt.so: undefined reference to `tivxTIDLNodeV2'
i.e. the 11.01 libtivision_apps.so doesn’t export the newer TIOVX/TIDL symbols. There is no 11.02 NONSAFETY analytics tag (only REL.PSDK.ANALYTICS.11.02.00.01..10), which is presumably why the override was never bumped. I overrode SRC_URI:edgeai to the 11.02 manifest the recipe’s own default uses:
SRC_URI:edgeai = "...REL.PSDK.ANALYTICS.11.02.00.10...;manifest=vision_apps_yocto.xml"
2. The full 11.02 manifest pulls in the SRV GPU 3D demo, which needs two third-party headers. After the manifest fix, ti-vision-apps failed in kernels/srv/gpu/3dsrv/graphics:
fatal error: stb_image.h: No such file or directory
fatal error: nlohmann/json.hpp: No such file or directory
Both recipes already exist in the layer set, so adding
DEPENDS:append:edgeai = " nlohmann-json stb"
to ti-vision-apps resolved it, and the full image then built cleanly (all tasks succeeded).
Runtime status
-
Image boots from microSD, kernel 6.12.43 (from linux-bb.org).
-
edgeai-init.service autostarts the OOB demo (edgeai-gui-app -platform linuxfb).
-
Display: at the monitor’s native 4K I got TIDSS Plane1 underflow / CRTC0 SYNC LOST. There is no extlinux.conf and no devicetree line in the SD’s GRUB config; the SD boots via GRUB/EFI (EFI/BOOT/grub.cfg), and the name_overlays= line in uEnv.txt is not honored on this boot path. Forcing the mode in the GRUB linux line fixed it:
video=DP-1:1920x1080@60
The blocker: TIOVX can’t initialize its shared memory
The OOB GUI starts, then bails:
MEM: ERROR: Failed to initialize DMA HEAP [/dev/dma_heap/carveout_vision_apps_shared-memories] !!!
APP: ERROR: Memory init failed !!!
Bail out! ERROR: .../gsttiovxcontext.c:146:gst_tiovx_context_init: assertion failed: (0 == ret)
So the vision_apps_shared-memories carveout / DMA heap is missing from the device tree.
Root cause (as far as I can tell): MACHINE = beaglebone-ai64 uses the BeagleBoard.org kernel (linux-bb.org, here 6.12.43+git), and its device trees do not define the TI EdgeAI memory map. A grep -rl "vision_apps" across that kernel’s arch/arm64/boot/dts/ti returns nothing — not for the BBAI64 DT, and not even for the k3-j721e-sk.dtb it builds. The k3-j721e-edgeai-apps.dtbo overlay referenced in uEnv.txt is not built/present anywhere in the image. The TI vision_apps reserved-memory carveouts, DMA heaps and the related remoteproc/IPC nodes appear to live only in the TI kernel (ti-linux-kernel), not in the bb.org kernel this machine config selects.
Open questions
-
Has anyone gotten the TIOVX vision_apps memory carveouts (the carveout_vision_apps_shared-memories DMA heap + the C7x/R5 reserved-memory and remoteproc nodes) onto the BBAI64 while using the linux-bb.org kernel?
-
Is the realistic path to switch beaglebone-ai64 to ti-linux-kernel + a TI-style J721E device tree, or to port TI’s J721E rtos memory-map / vision_apps reserved-memory into the bb.org BBAI64 DT as an overlay/patch?
-
Does a working k3-j721e-edgeai-apps.dtbo (or an equivalent carveout overlay) exist anywhere for the bb.org kernel — and if so, how is it applied on the GRUB/EFI boot path (which ignores uEnv.txt name_overlays)?
Happy to share the full fix layer if it’s useful. The build side seems solved; the device-tree memory map for EdgeAI on the bb.org kernel is the piece I’m stuck on.