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.

AM6442: Fail to boot with latest dunfell image

Part Number: AM6442

I am working on AM64x board, and creating images with Yocto.

The images are based on the configs from:
https://git.ti.com/cgit/arago-project/oe-layersetup/

Specifically the tisdk-base-image, with some appends for my packages.

The first config I use is:
configs/processor-sdk/processor-sdk-08.01.00.39-config.txt

# This file takes repo entries in the format
# repo name,repo uri,repo branch,repo commit[,layers=layer1:layer2...:layern]

bitbake,git://git.openembedded.org/bitbake,1.46,c2a3bda3a29e12472ef7862e424ea1552fab2959
meta-processor-sdk,git://git.ti.com/processor-sdk/meta-processor-sdk.git,dunfell,9d1705ba257f95702fb010c6ed3aba384b1019ba,layers=
meta-arago,git://git.yoctoproject.org/meta-arago,dunfell,08.01.00.006,layers=meta-arago-distro:meta-arago-extras
#meta-browser,https://github.com/OSSystems/meta-browser.git,master,5f365ef0f842ba4651efe88787cf9c63bc8b6cb3,layers=
meta-qt5,https://github.com/meta-qt5/meta-qt5.git,dunfell,b4d24d70aca75791902df5cd59a4f4a54aa4a125,layers=
meta-virtualization,git://git.yoctoproject.org/meta-virtualization,dunfell,180241e0eee718fc52c7b6b25dbd1d845a8047c4,layers=
meta-openembedded,git://git.openembedded.org/meta-openembedded,dunfell,69f94af4d91215e7d4e225bab54bf3bcfee42f1c,layers=meta-networking:meta-python:meta-oe:meta-gnome:meta-filesystems
meta-ti,git://git.yoctoproject.org/meta-ti,dunfell,08.01.00.006,layers=
meta-arm,git://git.yoctoproject.org/meta-arm,dunfell,c4f04f3fb66f8f4365b08b553af8206372e90a63,layers=meta-arm:meta-arm-toolchain
oe-core,git://git.openembedded.org/openembedded-core,dunfell,f61fcb6e176f19f1e768ce63a693f238713c8887,layers=meta

I burn the WIC onto the SD card and boot successfully:

U-Boot SPL 2021.01-g15769936a5 (Jan 04 2023 - 13:57:32 +0000)
SYSFW ABI: 3.1 (firmware rev 0x0015 '21.9.1--v2021.09a (Terrific Lla')
SPL initial stack usage: 13392 bytes
Trying to boot from MMC2
Starting ATF on ARM64 core...

NOTICE:  BL31: v2.5(release):08.03.00.002-dirty
NOTICE:  BL31: Built : 12:47:53, Jan  4 2023

U-Boot SPL 2021.01-g15769936a5 (Jan 04 2023 - 13:01:54 +0000)
SYSFW ABI: 3.1 (firmware rev 0x0015 '21.9.1--v2021.09a (Terrific Lla')
Trying to boot from MMC2


U-Boot 2021.01-g15769936a5 (Jan 04 2023 - 13:01:54 +0000)

SoC:   AM64X SR1.0
Model: Texas Instruments AM642 EVM
Board: AM64-GPEVM rev E2
DRAM:  2 GiB
MMC:   mmc@fa10000: 0, mmc@fa00000: 1
In:    serial@2800000
Out:   serial@2800000
Err:   serial@2800000
Net:   eth0: ethernet@8000000
Hit any key to stop autoboot:  0
switch to partitions #0, OK
mmc1 is current device
SD/MMC found on device 1
..

Then I try to update image and use newer configs:
configs/arago-dunfell-config.txt
configs/processor-sdk/processor-sdk-08.05.00.21-config.txt

# This file takes repo entries in the format
# repo name,repo uri,repo branch,repo commit[,layers=layer1:layer2...:layern]

bitbake,https://git.openembedded.org/bitbake,1.46,0784db7
meta-processor-sdk,https://git.ti.com/cgit/processor-sdk/meta-processor-sdk,dunfell,4d3a4e5f476b257405946c5aa222c02fc7565cfb,layers=
meta-arago,https://git.yoctoproject.org/meta-arago,dunfell,08.05.00.007,layers=meta-arago-distro:meta-arago-extras
# meta-browser,https://github.com/OSSystems/meta-browser.git,master,5f365ef0f842ba4651efe88787cf9c63bc8b6cb3,layers=
meta-qt5,https://github.com/meta-qt5/meta-qt5.git,dunfell,5ef3a0f,layers=
meta-virtualization,https://git.yoctoproject.org/meta-virtualization,dunfell,beea119eb529b4a11f266004aee8b548427aea39,layers=
meta-openembedded,https://git.openembedded.org/meta-openembedded,dunfell,7203130ed8b58c0df75cb72222ac2bcf546bce44,layers=meta-networking:meta-python:meta-oe:meta-gnome:meta-filesystems:meta-multimedia
meta-ti,https://git.yoctoproject.org/meta-ti,dunfell,08.05.00.007,layers=
meta-arm,https://git.yoctoproject.org/meta-arm,dunfell,c4f04f3fb66f8f4365b08b553af8206372e90a63,layers=meta-arm:meta-arm-toolchain
oe-core,https://git.openembedded.org/openembedded-core,dunfell,408bf1b4bb4f4ed126c17fb3676f9fa0513065ba,layers=meta

Both of these images fail to boot in the same manner:

U-Boot SPL 2021.01-g3983bffabc (Jan 04 2023 - 13:22:28 +0000)
k3_system_controller sysctrler: k3_sysctrler_start: Boot Notification response failed. ret = -110
Firmware init failed on rproc (-110)

resetting ...
ti_sci dmsc@44043000: ti_sci_get_response: Message receive failed. ret = -110
ti_sci dmsc@44043000: ti_sci_get_response: Message receive failed. ret = -110

Notes:
I have also tried some other release of processor-sdk-08.05.xx which have also failed.
I have run bitbake -c cleanall world
I have also removed the build directory and started a completely fresh build, just to be certain there's no leftovers from previous builds.

I have tried to check meta-processor-sdk, maybe some of the .bbappend are relevant.
For instance i noticed the tisdk-core-bundle.bbappend has the following code:

DEPLOY_IMAGES_NAME_append_am64xx-evm = " tiboot3-am64x-gp-evm.bin tiboot3-am64x_sr2-hs-evm.bin tiboot3-am64x_sr2-hs-fs-evm.bin ti-sci-firmware-am64x_sr2-hs-cert.bin ti-sci-firmware-am64x_sr2-hs-enc.bin ti-sci-firmware-am64x_sr2-hs-fs-cert.bin ti-sci-firmware-am64x_sr2-hs-fs-enc.bin wificfg fitImage-its.its"
DEPLOY_IMAGES_NAME_append_am64xx-hs-evm = " ti-sci-firmware-am64x-hs-cert.bin ti-sci-firmware-am64x-hs-enc.bin fitImage-its.its"
DEPLOY_IMAGES_NAME_append_am62xx-evm = " ti-fs-firmware-am62x-gp.bin ipc_echo_testb_mcu1_0_release_strip.xer5f wificfg"
DEPLOY_IMAGES_NAME_append_am62xx-lp-evm = " ti-fs-firmware-am62x-gp.bin ipc_echo_testb_mcu1_0_release_strip.xer5f wificfg"
However that has not helped me either.

I am unsure what I am missing. Why the older configs generate a working SD card image, and the newer configs to do not.


Thanks,
Ben S.

  • Hi Ben,

    the default build output for AM64 devices starting SDK v8.4 is for "HS-FS" (=High Security Field Securable) devices, as opposed to the "GP" (=General Purpose) device you are using on your board. I suspect the wrong SYSFW (System Firmware) image is used as part of your tiboot3.bin that's generated. There are different SYSFW variants for both "HS-FS" and "GP" device variants. The processor SDK itself will generate different tiboot3.bin variants to accommodate the different device variants.

    Please review the latest info here:
    https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/08_05_00_21/exports/docs/linux/Foundational_Components_Migration_Guide.html

    Also also this FAQ here:
    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1158018/faq-processor-sdk-am64x-am64x-am243x-sr-2-0-device-type-transition

    Regards, Andreas

  • Hi Andreas,

    Thanks for explaining the issue, the links are very useful.

    I have 2 follow up questions:

    1. Can I build (with yocto) the am64x image, which will be suited for the am64x gp board (no security)
    From the link you shared, i saw i can rename tiboot3-am64x-gp-evm.bin to tiboot3.bin.
    That indeed works, and i managed to boot successfully.
    I am wondering if i can build the image to automatically using the tiboot3-am64x-gp-evm.bin instead of tiboot3-am64x_sr2-hs-fs-evm.bin

    2. A different team of ours is working on a custom SBL (which will be the R5 core first, and then A5 Linux)
    I have the SBL image: AM64x_SBL.tiimage
    I also have the LinuxApp Image which is required to work with the SBL.

    How can I integrate these custom images (SBL, LinuxAppImage) into the Yocto bitbake system, so that we can generate a system image that uses these files?

    ( I am familiar with meta-processor-sdk, although we are using our custom layer right now which works similarly. )

  • 1. Can I build (with yocto) the am64x image, which will be suited for the am64x gp board (no security)
    From the link you shared, i saw i can rename tiboot3-am64x-gp-evm.bin to tiboot3.bin.
    That indeed works, and i managed to boot successfully.

    Ok great, thanks for confirming. 

    I am wondering if i can build the image to automatically using the tiboot3-am64x-gp-evm.bin instead of tiboot3-am64x_sr2-hs-fs-evm.bin

    There is no easy "switch" to enable this, it will require changes to the Yocto sources itself. I've tried to implement those changes before but then had to prioritize some other project, moving this task to the back burner. But that's something I still want to do and your request provides just another reason. I won't however have time to pick this back up again perhaps for another week.

    A different team of ours is working on a custom SBL (which will be the R5 core first, and then A5 Linux)
    I have the SBL image: AM64x_SBL.tiimage
    I also have the LinuxApp Image which is required to work with the SBL.

    How can I integrate these custom images (SBL, LinuxAppImage) into the Yocto bitbake system, so that we can generate a system image that uses these files?

    How are you creating those artifacts now?

  • SBL Image and LinuxAppImage are created with the help of TI SDK: mcu_plus_sdk_am64x

    And system image for AM64x is created with Yocto using the tisdk-base-image.bb recipe.

    I would really like to incorporate the binary images I have for SBL and LinuxAppImage (which allow me to boot from eMMC using a custom SBL), with the rest of the system image generated in Yocto.

    In this case the AM64x_SBL.tiimage and LinuxAppImage.bin are not your standard binaries, and im not sure what the correct method of generating an image with them would be.

    Currently i am following this guide to flash the SBL and LinuxAppImage to eMMC:
    https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/08_05_00_24/exports/docs/api_guide_am64x/TOOLS_FLASH.html#TOOLS_FLASH_UART_UNIFLASH
     (Section Flash configuration file for flashing to eMMC)

    However, I did not find in the documentation a guide on how to integrate these images with the Yocto TI Arago system.
    This is very important because it will also us to create a complete system image (which contains our SBL, and a linux system for A5 core) using Yocto framework.

    What is the guideline to integrating SBL and LinuxAppImage into Yocto TI layers, so we can generate such an image?

    Thank you,
    Ben S.

  • Hi Ben,

    ok thanks for the background, I looked at the LinuxAppImage and what goes in it closer, and now better understand the background and reason for your request. Essentially what you are asking is replacing the U-Boot R5 SPL with an SBL+LinuxAppImage solution, while keeping the rest of what Yocto generates more or less as it is.

    We don't have documentation at the moment on how to do this. The quickest way forward for now might be to essentially wrap both MCU+ and Yocto/Linux build processes to update/re-packages the generated Yocto images in an additional "post build" step. Figuring out a clean Yocto solution will take some time to work out and will need to be resourced/driven as a project on our side. What is your timeline by when you would need that?

    Regards, Andreas