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] SPL Boot: How to find the DM R5F binary that is built into tispl.bin

Other Parts Discussed in Thread: AM67, AM67A

Parts Discussed in Thread: AM62x, AM62Ax, AM62Dx, AM62Px, AM67, AM67A

The primary role of the Device Management (DM) R5F core is to run the DM task. However, there may be other non-DM code running on the DM R5F, alongside the DM task. The firmware running on the DM R5F core is initialized during boot time, either during SPL boot or SBL boot.

For more information about SPL boot and SBL boot, refer to the processor academy > Multicore > Boot flows: SBL vs SBL
AM62x  ||  AM62Ax  ||  AM62Px

When using the Linux SPL bootflow, the quickest way to check what binary is running on the DM R5F is to find the source file that is built into the tispl.bin file. But how to figure out which binary file is getting used? It depends on how the u-boot files are built.

Other FAQs

This is a helper FAQ for  RE: [FAQ] DM R5F can crash in certain conditions: AM62x, AM62Ax, AM62Dx, AM62Px, AM67, AM67A question "SPL boot: How to find the DM R5F binary that is built into tispl.bin".

  • U-Boot make commands: SDK 8.6 & earlier

    These are the build steps documented in the Linux SDK docs under
    Foundational Components > U-Boot > User's Guide > General Information

    SDK 8.6 Links: AM62x, AM62Ax

    In this version of U-Boot (U-Boot 2021.x), the DM firmware is passed as an argument in the make command for tispl.bin. Like this: “DM=$DMFW_DIR/ipc_echo_testb_mcu1_0_release_strip.xer5f”

  • U-Boot make commands: SDKs 9.x & 10.x

    These are the build steps documented in the Linux SDK docs under
    Foundational Components > U-Boot > User's Guide > General Information

    SDK 9.2 links: AM62x, AM62Ax, AM62Px, AM67, AM67A
    SDK 10.1 links: AM62x, AM62Ax, AM62Px, AM67, AM67A

    Later U-Boot versions (U-Boot 2023.x, U-Boot 2024.x) use binman in the U-Boot build process.

    The path to the directory with the DM firmware may be listed as an argument in the make command for tispl.bin, like this: “BINMAN_INDIRS=$TI_LINUX_FW_DIR”.

    To see which DM binary is being built into tispl.bin, go to U-Boot file arch/arm/dts/<board>-binman.dtsi, and search for entry “ti-dm”.

    AM67, AM67A use file k3-j722s-binman.dtsi.

  • Top-level makefile: SDKs 8.6 & earlier

    These are the build steps documented in the Linux SDK docs under:
    Overview > Getting Started Guide > SDK Build using Makefile (AM62x, AM62Ax)

    SDK documentation links are in reply "U-Boot make commands: SDK 8.6 & earlier"

    In this version of U-Boot (U-Boot 2021.x), the DM firmware is passed as an argument in the make command for tispl.bin.

    In the top-level Makefile, it looks like this:
    UBOOT_DMFW=$(TI_SDK_PATH)/board-support/prebuilt-images/ipc_echo_testb_mcu1_0_release_strip.xer5f
    DM=$(UBOOT_DMFW)

  • Top-level makefile: SDKs 9.x & 10.x

    These are the build steps documented in the Linux SDK docs under:
    Overview > Getting Started Guide > SDK Build using Makefile (AM62x, AM62Px)
    Overview > Simplified SDK Build Using Top-Level Makefile (AM62Ax, AM67, AM67A)

    SDK documentation links are in reply "U-Boot make commands: SDKs 9.x & 10.x".

    The path to the directory with the DM firmware is listed as an argument in makerules/Makefile_u-boot. Like this: “BINMAN_INDIRS=$(TI_LINUX_FIRMWARE)”.

    To see which DM binary is being built into tispl.bin, go to U-Boot file arch/arm/dts/<board>-binman.dtsi, and search for entry “ti-dm”.

    AM67, AM67A use file k3-j722s-binman.dtsi.

  • Yocto build

    I do not have much yocto experience. This information is incomplete and untested, so please verify before blindly following steps. If you have updates that we can add to this page, please create a new e2e thread and tag me.

    Some yocto documentation is in the Linux SDK docs under
    Overview > Building the SDK
    or
    Overview > Building the SDK with Yocto

    Documentation links are in the earlier replies: SDK 8.6, SDK 9.1 & SDK 10.1

    Building u-boot in yocto 

    # Clean "tiboot3.bin" related build artifacts
    $ MACHINE=am62xx-evm bitbake -c clean mc:k3r5:u-boot
    
    # Build and deploy "tiboot3.bin" (and its device-specific variants)
    $ MACHINE=am62xx-evm bitbake -c deploy mc:k3r5:u-boot
    
    # Clean "tispl.bin" and "u-boot.img" related build artifacts
    $ MACHINE=am62xx-evm bitbake -c clean u-boot 
    
    # Build and deploy "tispl.bin" and "u-boot.img"
    $ MACHINE=am62xx-evm bitbake -c deploy u-boot

    Where is the tispl.bin file actually created? 

    At this point in time, I am not exactly sure how each file is used in a yocto build, and whether both of these files are called for all builds, or not.

    Repo: meta-ti

    branches: kirkstone (SDK 8.x, 9.x) or scarthgap (SDK 10.x)

    meta-ti-bsp/recipes-bsp/ti-dm-fw/ti-dm-fw.bb
    This file grabs the DM R5F firmware from ti-linux-firmware repo and installs/deploys the firmware

    meta-ti-bsp/recipes-bsp/u-boot/u-boot-ti.inc
    the binary is passed as argument TI_DM

    AM62Ax only: in the kirkstone branch, it seems like the ipc_rpmsg_echo_linux binary from ti-linux-firmware is getting grabbed, instead of the VPAC/ISP binary. I am not sure if there is another script running somewhere that copies the VPAC/ISP binary locally instead of running ti-dm-fw.bb.