BSP 7.3.0 - TIOVX/vision_apps firmware carveout address mismatch on Aquila AM69

Hi,

I’ve built a Toradex BSP 7.3.0 image for the Aquila AM69 using tdx-reference-multimedia-image and flashed it via TEZI. The image boots cleanly but all remoteproc cores fail with bad phdr errors due to carveout address mismatches.

The Toradex DTS (k3-am69-aquila-dev.dtb) reserves carveouts in the 0xa0000000-0xabffffff range for R5F and C71 cores.

The only firmware available in /lib/firmware/ after the build is j784s4-main-r5f0_0-fw. The C71 DSP firmware (j784s4-c71_0-fw through j784s4-c71_3-fw) and additional R5F firmware are missing entirely.

I added meta-edgeai-custom to the build but the ti-vision-apps.bbappend had no base recipe to append to, so the firmware was never built or installed.

Questions:

  1. What is the correct way to get TIOVX/vision_apps firmware built and installed for BSP 7.3.0 on Aquila AM69?

  2. Does Toradex provide prebuilt firmware binaries matching the Aquila DTS carveout addresses?

  3. Is there a base recipe for ti-vision-apps that works with BSP 7.3.0?

Thanks

Bootloader: U-Boot
Kernel version: 6.6.94-7.3.0-devel #1 SMP PREEMPT Thu Jul 3 08:47:26 UTC 2025
Kernel command line: root=PARTUUID=31e7d924-02 ro rootwait console=tty1 console=ttyS2,115200
Distro name: NAME=“TDX Wayland with XWayland”
Distro version: VERSION_ID=7.3.0-devel-20260412202528-build.0
Distro variant: -
Hostname: aquila-am69-12594140

HW model: Toradex Aquila AM69 on Aquila Development Board

Hi, I’m the Toradex AI Assistant.

I might make mistakes or occasionally get you wrong. Our support team will step in if needed.


Based on your detailed description of the TIOVX/vision_apps firmware issues with BSP 7.3.0 on Aquila AM69, I can provide guidance on the correct approach to resolve the firmware and carveout address problems.

Solution for TIOVX/Vision Apps Firmware

To properly build and install the TIOVX/vision_apps firmware for the Aquila AM69, you need to follow the machine learning setup process that includes the TI Edge AI layers (1)(2).

Required Setup Steps

  1. Download the TI Layers: You need to obtain the TI Edge AI layers using their provided script (2):
$ cd /tmp
$ git clone https://git.ti.com/git/arago-project/oe-layersetup.git yocto-build
$ cd yocto-build
$ ./oe-layertool-setup.sh -f configs/processor-sdk-analytics/processor-sdk-analytics-11.00.00-config.txt

(2)

  1. Copy Required Layers: Copy the necessary TI layers to your Toradex BSP directory (2):
$ cd sources
$ sudo cp -a meta-arago/ <toradex_bsp_yocto_dir>/layers/
$ sudo cp -a meta-clang/ <toradex_bsp_yocto_dir>/layers/
$ sudo cp -a meta-edgeai/ <toradex_bsp_yocto_dir>/layers/
$ sudo cp -a meta-tisdk/ <toradex_bsp_yocto_dir>/layers/

(2)

  1. Update bblayers.conf: Include the Toradex compatibility layer and TI layers (2):
BBLAYERS += "                                           \
    ${TOPDIR}/../layers/meta-edgeai-custom              \
    ${TOPDIR}/../layers/meta-arago/meta-arago-distro    \
    ${TOPDIR}/../layers/meta-arago/meta-arago-extras    \
    ${TOPDIR}/../layers/meta-arago/meta-arago-test      \
    ${TOPDIR}/../layers/meta-clang                      \
    ${TOPDIR}/../layers/meta-edgeai                     \
    ${TOPDIR}/../layers/meta-tisdk/meta-ti-foundational \
"

(2)

  1. Apply Device Tree Patch: Apply the required patch to meta-edgeai/conf/layer.conf to ensure Aquila AM69/TDA4 device trees are included (3):
index 587607cbcd17..b1fa09c93446 100644
--- i/conf/layer.conf
+++ w/conf/layer.conf
@@ -36,6 +36,6 @@ require conf/distro/include/edgeai-source-ipk.inc

TI_TEST_TI_TOOLS:remove:pn-ti-test = "videnc-test-app"

-KERNEL_DEVICETREE_PREFIX:append:j721s2 = "ti/k3-j721s2"
-KERNEL_DEVICETREE_PREFIX:append:j784s4 = "ti/k3-j784s4"
-KERNEL_DEVICETREE_PREFIX:append:j721e = "ti/k3-j721e"

(3)

  1. Configure local.conf: Add the machine configuration and accept commercial licenses (3):
MACHINE ?= "aquila-am69"
LICENSE_FLAGS_ACCEPTED += "commercial"

(3)

  1. Build the Edge AI Image: Instead of tdx-reference-multimedia-image, build the edge AI image (3):
$ bitbake edgeai-reference-image

(3)

U-Boot Configuration Fix

The documentation also mentions that a race condition can occur where remote processors fail to start correctly (1). To resolve this, you need to patch your U-Boot environment to execute boot_rproc after bootcmd_prepare to ensure proper initialization order (1).

Why Your Current Approach Isn’t Working

The issue you’re experiencing occurs because:

  1. The standard tdx-reference-multimedia-image doesn’t include the TI Edge AI stack and associated firmware
  2. The meta-edgeai-custom layer requires the full TI Edge AI layer stack to function properly
  3. The ti-vision-apps recipe is part of the TI Edge AI layers, not the base Toradex BSP

Expected Results

After following this setup, you should have:

  • All required firmware files including C71 DSP firmware (j784s4-c71_0-fw through j784s4-c71_3-fw)
  • Proper carveout address alignment between device tree and firmware
  • Working remoteproc cores without bad phdr errors

The edgeai-reference-image will include the complete TI Edge AI stack with TIOVX/vision_apps support and all necessary firmware components (4).

Best regards, Toradex AI Assistant.


Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.

Hi @dvguillen!

We don’t have specific documentation about TIOVX. I recommend reading our AI-related articles to verify if they are helpful or at least provide a good starting point:

I also found this TIOVX GitHub page that may be useful.

Besides that, I recommend checking our Partner Network, where you can find partners with the expertise needed to accelerate the project and support new implementations.

Best regards.

Hi,
Following up on my original post regarding missing TIOVX firmware on BSP 7.3.0.
I obtained the Toradex-provided vision_apps firmware binaries and successfully deployed them to the board via remoteproc. The R5F and C71 DSP cores are now loading firmware and the bad phdr errors are resolved. I’ve also been building custom firmware using TI PSDK RTOS firmware builder 11.02.00.06, and have successfully added a custom FreeRTOS task to MCU4_1, built it with the firmware builder, and deployed it to the SoM.
I now have two follow-up questions:

  1. Which R5F cores are safe to repurpose for custom firmware on the Aquila specifically?
    I would like to add custom firmware to an R5F core pair — possibly Zephyr or NuttX rtos — both communicating to Linux via RPMsg. I’ve seen a TI e2e response suggesting MCUX_0/MCUX_1 can be freed by disabling ENABLE_IPC_MCUX_0/1 in app_cfg.h and setting BUILD_CPU_MCUX_0/1=no in vision_apps_build_flags.mak, but the example shown was for the TI SK reference board. I want to confirm the correct cores for the Aquila specifically, and whether any main domain R5F pairs are intentionally left free in your BSP 7.3.0 reference configuration.
  2. Does disabling IPC and build for a core pair fully preserve TIOVX/EdgeAI hardware accelerator functionality?
    Specifically — if I disable MCU4_0/1 (or whichever pair you recommend) from the vision_apps build and IPC config, will VPAC3L (ISP, LDC), DMPAC, and all four C71 DSPs remain fully functional for TIOVX graph execution? I want to confirm there’s no hidden dependency where a main domain R5F core is required for VPAC or DMPAC hardware access before I commit to this approach.
    I am happy to provide any debug output if helpful.
    Thanks