AM6442: AM6442 custom board on SDK 11

Part Number: AM6442

Tool/software:

Hi community, I'm Chan Kim.

I’m now developing a custom board based on AM6442 and I ran into a problem.

In SDK 9 and 10, both k3-am642-evm.dts and k3-am642-r5-evm.dts were located under sdk/board-support/u-boot/arch/arm/dts. I could simply modify them to match my custom board by adjusting the nodes.

However, in SDK 11, I see that k3-am642-r5-evm.dts is still under u-boot/arch/arm/dts, but k3-am642-evm.dts has been moved to u-boot/dts/upstream/src/arm64/ti. If I try to modify it the same way as before, the build process fails with errors. It looks like files such as binman.dtsi included in the evm DTS are now causing dependency issues.

How should I handle this in SDK 11 to make the custom dts for my board?
Any guidance would be greatly appreciated.

Thank you!

  • Hello Chan,

    You can find general information about building u-boot in SDK 11.0 in the Linux SDK docs here:
    https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/11_00_09_04/exports/docs/linux/Foundational_Components/U-Boot/UG-General-Info.html

    Have you first tested that you can build unmodified files, before trying to build the modified files?

    Regards,

    Nick

  • Hello Nick,
    Thanks for your quick reply.

    At the top level, I built the boot files and image using make u-boot and make linux.
    Then, using the prebuilt-image, I created the tisdk-base-image as the root filesystem and tried booting from the SD card.

    The boot log is as follows.

    U-Boot SPL 2025.01-gd2a72467939e (Aug 22 2025 - 13:42:23 +0900)                        
    Resetting on cold boot to workaround ErrataID:i2331                                    
    Please resend tiboot3.bin in case of UART/DFU boot                                     
    resetting ...
    
    U-Boot SPL 2025.01-gd2a72467939e (Aug 22 2025 - 13:42:23 +0900)
    SYSFW ABI: 4.0 (firmware rev 0x000b '11.1.2--v11.01.02 (Fancy Rat)')
    EEPROM not available at 0x50, trying to read at 0x51
    Reading on-board EEPROM at 0x51 failed -1
    SPL initial stack usage: 13504 bytes
    Trying to boot from MMC2
    Authentication passed
    Authentication passed
    Loading Environment from nowhere... OK
    Authentication passed
    Authentication passed
    Starting ATF on ARM64 core...
    
    NOTICE:  BL31: v2.13.0(release):v2.13.0-240-gd90bb650fe-dirty
    NOTICE:  BL31: Built : 21:37:18, Jun 23 2025
    I/TC: 
    I/TC: OP-TEE version: 4.6.0-dev (gcc version 13.4.0 (GCC)) #1 Fri Apr 25 11:17:53 UTC 2025 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: GIC redistributor base address not provided
    I/TC: Assuming default GIC group status and modifier
    I/TC: SYSFW ABI: 4.0 (firmware rev 0x000b '11.1.2--v11.01.02 (Fancy Rat)')
    I/TC: Activated SA2UL device
    I/TC: Enabled firewalls for SA2UL TRNG device
    I/TC: SA2UL TRNG initialized
    I/TC: SA2UL Drivers initialized
    I/TC: HUK Initialized
    I/TC: Primary CPU switching to normal world boot
    
    U-Boot SPL 2025.01-gd2a72467939e (Aug 22 2025 - 13:50:28 +0900)
    SYSFW ABI: 4.0 (firmware rev 0x000b '11.1.2--v11.01.02 (Fancy Rat)')
    EEPROM not available at 0x50, trying to read at 0x51
    Reading on-board EEPROM at 0x51 failed -1
    Trying to boot from MMC2
    __omap24_i2c_xfer_msg: error waiting for ACK (status=0x116)
    omap_i2c_xfer: errored out at msg 0: -121
    pca953x gpio@22: Error reading output register
    Card did not respond to voltage select! : -110
    spl: mmc init failed with error: -95
    SPL: failed to boot from all boot devices
    ### ERROR ### Please RESET the board ###
    

    Of course, since the custom board and the GP-EVM have different nodes, there will naturally be differences in the DTS. In the former SDK, I modified the following files under board-support/u-boot-*/arch/arm/dts:

    • k3-am642-evm.dts

    • k3-am642-r5-evm.dts

    • k3-am642-evm-u-boot.dtsi

    However, in the SDK v11, k3-am642-r5-evm.dts and k3-am642-evm.dts are separated, and it looks like many of the nodes from k3-am642-r5-evm.dts are now managed inside k3-am642-r5-phycore-som-2gb.dts.

    In this situation, what would be the recommended approach? Thank you.

  • Hello Chan,

    Ok, so it sounds like you are at least able to build boot files with the unmodified source files. That is good.

    definitions 

    I will be talking about "U-Boot" later in this response, where "U-Boot" is different from "R5 SPL" and "A53 SPL", which come earlier in the boot flow. More details about the SPL boot flow here: https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/11_01_05_03/exports/docs/linux/Foundational_Components/U-Boot/BG-Bootflow-K3.html 

    Why are devicetree files in different locations?

    I am still learning about this subject. So if I get anything wrong, please bring it up.

    In earlier versions of the SDK, we have separate Linux and A53 U-boot devicetree files. However, my understanding is that the current best practice in the Linux community is to use a single shared devicetree file for both Linux and u-boot, and then mark nodes based on whether you want those nodes initialized in u-boot, or during Linux boot.

    All the files which should be identical to your Linux devicetree have been moved to u-boot/dts/upstream/src/arm64/ti.

    However, we also use devicetree files for the R5F and A53 SPL code. My understanding (without digging into it much at this point) is that these files would still be under u-boot/arch/arm/dts.

    Regards,

    Nick