AM3359: SD Card built Processor SDK Linux v11.02 (RT-Linux) not booting

Part Number: AM3359
Other Parts Discussed in Thread: TMDSICE3359

bootlog_kernel.txt 

Hi Team,

My customer has built an SD card using Processor SDK Linux v11.02 (RT-Linux). The card fails to boot on AM3359 ICE board. Pls find attached boot log

Regards,

Chander

 

  • Hello Chander,

    I am surprised to hear that the ICEv2 board is not booting, since we specifically brought back PRU Ethernet on AM335x SDK 11.2, and even added new features like PRU Ethernet Switch on Linux for the very first time: https://software-dl.ti.com/processor-sdk-linux/esd/AM335X/11_02_05_02/exports/docs/linux/Foundational_Components/PRU-ICSS/Linux_Drivers/PRU-ICSS_Ethernet.html

    I will not be able to run tests today. Please ping the thread if I have not replied by early next week.

    Regards,

    Nick

  • Hello Nick,

    Did you get a chance to run the tests?

    Regards,

    Pooja

  • Hello Nick,

    As seen from the logs, the kernel is crashing due to an invalid clock parent configuration for timer1_fck and timer2_fck. Could you please confirm if you had a chance to run and verify the latest SDK on the ICE board?

    Regards,

    Pooja 

  • Hello Pooja,

    Apologies for the delayed response. I started typing this response out on Monday, but it looks like I got pulled onto a different task and never clicked "reply". Initial resposne:

    First off, please note that TI is not providing an official RT Linux release for 32-bit processors on Linux kernel 6.12. So I will test the "regular" Linux SDK 11.2. If needed, I can point to additional information about RT Linux on AM335x for this specific kernel version.

    I am not able to replicate your results. My AM335x ICEv2 board boots as expected with the default SDK 11.2 Linux filesystem download available at 
    https://www.ti.com/tool/download/PROCESSOR-SDK-LINUX-AM335X .

    Regards,

    Nick

  • Hello Nick,

    I have downloaded the SDK ti-processor-sdk-linux-am335x-evm-11.02.05.02-Linux-x86-Install.bin from the above-mentioned link and followed the documented steps to create the SD card. However, the AM335x ICEv2 board did not boot, and I am observing the same behavior as described earlier.

    Could you please let me know what steps or configuration I might be missing?

    Regards,

    Pooja Nagda

  • Hi,

    Not clear why   and   are getting different results?

    Is there any difference between setups (HW/ SW) ?

       Here are 2 different release for AM335x Linux and RT Linux, we were talking about offline.

    https://www.ti.com/tool/download/PROCESSOR-SDK-LINUX-AM335X/11.02.05.02

    https://www.ti.com/tool/download/PROCESSOR-SDK-LINUX-RT-AM335X/09.03.05.02

    Regards

    Ashwani

  • Hello,

    The hardware setup I'm using is AM3359 ICEv2 (TMDSICE3359) and the SDK as I mentioned earlier is https://www.ti.com/tool/download/PROCESSOR-SDK-LINUX-AM335X/11.02.05.02.

    Regards,

    Pooja 

  • Hello,

    I checked the supported platforms list for SDK 11.02.05.02 and noticed that AM335x ICE is currently not listed as a supported board. However, I need to validate HSR and PTP functionality on this latest SDK.  Could you please share how we can proceed with validation on the AM335x ICE board, or if there are any recommended patches, configurations, or workarounds for this SDK?

    Regards,

    Pooja Nagda

  • Hello Pooja,

    Apologies for the delayed responses here.

    Please ignore that "supported platforms and EVMs" section 

    I have filed a ticket to get this table updated or removed from the AM335x docs. We have not released an AM335x RTOS SDK since SDK 6.3, so this table is very out-of-date.

    I know for a fact that our development team was using the AM335x ICEv2 board for PRU Ethernet & HSR/PRP development from Dec 2024, all the way through Dec 2025. That is the correct board to use to validate HSR & PRP.

    Let's see if we can get your board working

    Unfortunately I unplugged my ICEv2 EVM after running the previous tests, so I cannot double-check my boot logs against yours today (too much ice in my part of Dallas to drive into the office and plug in the EVM).

    First, let's make sure that we are actually testing the EXACT same code. Did you download the filesystem image named "tisdk-default-image-am335x-evm-11.02.05.02.rootfs.wic.xz", use that image to create an SD card, and boot from the SD card? I used BalenaEtcher to create the SD card, as per https://software-dl.ti.com/processor-sdk-linux/esd/AM335X/11_02_05_02/exports/docs/linux/Overview/Processor_SDK_Linux_create_SD_card.html 

    Since you and I are seeing different things, please do NOT do any tests where you build the Linux kernel image, Linux devicetree file, etc. First let's see if we can observe the same thing, using the exact same filesystem image and the exact same boot method. Once we are able to observe the same things, then we can start adding on other changes to get things working.

    Regards,

    Nick

  • Hello Nick,

    I’ve prepared the SD card using the filesystem image tisdk-default-image-am335x-evm-11.02.05.02.rootfs.wic.xz, and the ICE board is booting successfully.

    I’m now working on validating HSR on PRU-ICSS using the latest SDK. I followed the procedure in the TI documentation below to set up the HSR network:
    https://software-dl.ti.com/processor-sdk-linux/esd/AM335X/11_02_05_02/exports/docs/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/HSR_Offload.html

    The HSR interface is created as expected; however, when I attempt to ping the peer board, the result is “Destination Unreachable.”

    Hardware setup details:

    • J18 & J19: Pin 2 and Pin 3 are shorted (PRU-ICSS mode)

    From the boot logs, it appears that CPSW mode is being selected, whereas the configuration should be using PRU-ICSS. I suspect this may be the reason HSR communication is failing.

    I’m attaching the logs for your review. Could you please help verify why CPSW mode is being enabled instead of PRU-ICSS and guide me on resolving this?

    root@am335x-evm:~# sh hsr_setup.sh hsr_hw eth0 eth1 172.16.2.157
    ip=172.16.2.157
    if=hsr0
    mac=00:35:ff:78:7b:9a
    slave-a=eth0
    slave-b=eth1
    Cannot find device "hsr0"
    [   72.853461] cpsw-switch 4a100000.switch eth0: Link is Down
    [   72.915161] cpsw-switch 4a100000.switch eth1: Link is Down
    hsr-tag-ins-offload: off [fixed]
    hsr-tag-rm-offload: off [fixed]
    hsr-fwd-offload: off [fixed]
    hsr-dup-offload: off [fixed]
    Actual changes:
    hsr-fwd-offload: off [requested on]
    Could not change any device features
    Actual changes:
    hsr-dup-offload: off [requested on]
    Could not change any device features
    Actual changes:
    hsr-tag-ins-offload: off [requested on]
    Could not change any device features
    Actual changes:
    hsr-tag-rm-offload: off [requested on]
    Could not change any device features
    hsr-tag-ins-offload: off [fixed]
    hsr-tag-rm-offload: off [fixed]
    hsr-fwd-offload: off [fixed]
    hsr-dup-offload: off [fixed]
    hsr-tag-ins-offload: off [fixed]
    hsr-tag-rm-offload: off [fixed]
    hsr-fwd-offload: off [fixed]
    hsr-dup-offload: off [fixed]
    Actual changes:
    hsr-fwd-offload: off [requested on]
    Could not change any device features
    Actual changes:
    hsr-dup-offload: off [requested on]
    Could not change any device features
    Actual changes:
    hsr-tag-ins-offload: off [requested on]
    Could not change any device features
    Actual changes:
    hsr-tag-rm-offload: off [requested on]
    Could not change any device features
    hsr-tag-ins-offload: off [fixed]
    hsr-tag-rm-offload: off [fixed]
    hsr-fwd-offload: off [fixed]
    hsr-dup-offload: off [fixed]
    [   74.312775] cpsw-switch 4a100000.switch eth0: entered promiscuous mode
    [   74.364436] cpsw-switch 4a100000.switch eth1: entered promiscuous mode
    [   77.473236] hsr0: Slave A (eth0) is not up; please bring it up to get a fully working HSR network
    [   77.482603] hsr0: Slave B (eth1) is not up; please bring it up to get a fully working HSR network
    [   77.526077] cpsw-switch 4a100000.switch: starting ndev. mode: dual_mac
    [   77.551915] Generic PHY 4a101000.mdio:01: attached PHY driver (mii_bus:phy_addr=4a101000.mdio:01, irq=POLL)
    [   77.589854] cpsw-switch 4a100000.switch: starting ndev. mode: dual_mac
    [   77.700398] Generic PHY 4a101000.mdio:03: attached PHY driver (mii_bus:phy_addr=4a101000.mdio:03, irq=POLL)
    root@am335x-evm:~# [   79.645172] cpsw-switch 4a100000.switch eth0: Link is Up - 100Mbps/Full - flow control off
    [   79.804293] cpsw-switch 4a100000.switch eth1: Link is Up - 100Mbps/Full - flow control off
    

     

    Regards,

    Pooja 

  • Hello Nick,

    HSR works correctly with the latest SDK (11.02) when the SD card is flashed using the filesystem image tisdk-default-image-am335x-evm-11.02.05.02.rootfs.wic.xz. The earlier issue occurred because am335x-icev2-prueth.dtb was not being loaded.

    Regards,

    Pooja 

  • Hello Pooja,

    Glad to hear you were able to figure out the devicetree issue! Let us know if you run into other issues around HSR/PRP.

    For future readers, please note that AM335x ICEv2 board only has 2 Ethernet ports, which can be swapped between CPSW and PRU Ethernet. You need to use the jumpers right next to the Ethernet PHYs to switch between using CPSW Ethernet, and PRU Ethernet. I have only tested using either 2 CPSW ports, or 2 PRU Ethernet ports, I am not sure if the software can do 1 CPSW port and 1 PRU Ethernet port by default.

    While TI will not provide a TI-tested RT Linux SDK, I believe we will be able to give some rough guidance if you decide to apply the 32-bit RT Linux patchset to the AM335x Linux SDK 11.2. Feel free to create a new thread if we need to have more discussion about that.

    Regards,

    Nick

  • Hello Nick,

    Could you please help investigate the boot issue encountered when the SD card is created using ti-processor-sdk-linux-am335x-evm-11.02.05.02-Linux-x86-Install.bin?

    Additionally, could you clarify the difference between the SD card image generated using ti-processor-sdk-linux-am335x-evm-11.02.05.02-Linux-x86-Install.bin and tisdk-default-image-am335x-evm-11.02.05.02.rootfs.wic.xz? Since both correspond to the same SDK version, are they expected to produce equivalent bootable images?

    Regards,

    Pooja 

  • Hi Nick,

    We need to find out what is the difference between tisdk-default-image-am335x-evm-11.02.05.02.rootfs.wic.xz (available directly through SDK download page)  and tisdk-default-image-am335x-evm.rootfs.tar.xz (available through linux installer bin).  Pls help. The customer wants to make changes to default configurations to port to their hardware, so the readymade image wont help much

    Regards,

    Chander

  • Hello Pooja,

    1) Help us to see what you are seeing around creating a filesystem

    Please give us the exact steps that you are following to create a filesystem for AM335x from the Linux SDK download. There are multiple potential methods you could be following, so we need exact steps so that a member of our team can try to replicate your observations.

    2) Checking on PTP functionality 

    I expect PRU Ethernet on Linux should support PTP, as discussed in the Linux SDK docs here:
    3.6.3.3. PRU_ICSSM Ethernet — Processor SDK Linux for AM335X Documentation

    Is PTP working as expected in your tests? If PTP is not functioning as described in our SDK docs, please provide additional details so that the team can take a look.

    Regards,

    Nick

  • Hello Nick,

    1. The steps I followed around creating filesystem:

    a. Download & install the SDK installer on Host

    https://software-dl.ti.com/processor-sdk-linux/esd/AM335X/11_02_05_02/exports/docs/linux/Overview/Download_and_Install_the_SDK.html

    b. Run Setup Scripts

    https://software-dl.ti.com/processor-sdk-linux/esd/AM335X/11_02_05_02/exports/docs/linux/Overview/Run_Setup_Scripts.html

    c. Create SD Card with Default Images using script:

    https://software-dl.ti.com/processor-sdk-linux/esd/AM335X/11_02_05_02/exports/docs/linux/Overview/Processor_SDK_Linux_create_SD_card.html#processor-sdk-linux-sd-card-with-default-images

    2. PTP functionality:

    For PTP we want software timestamping support. However, in this SDK I am unable to find software timestamping support and only see hardware timestamping being used. 

    Regards,

    Pooja

  • Hello Pooja,

    To explain how we do PTP timestamps on our devices: We have a hardware counter that is physically close to the Ethernet port inside of the processor (for PRU Ethernet, that's the IEP timer. For CPSW on later devices like AM62x & AM64x, that's the CPTS. I am not sure how it works for CPTS on AM335x). As soon as the Ethernet packet arrives at the PRU core, the IEP counter generates a precise timestamp (that's the "hardware timestamp"). That is much more precise than letting Linux itself timestamp the packet, because there can be significant variability on when the Linux OS is able to switch context and service the Ethernet packet.

    I am not sure why you would want to disable the IEP timestamp, since that will just make your PTP more inaccurate.

    Regards,

    Nick

  • Also, copy/pasting information sent to Chander:

    The DTS files for the ice board are here in AM335x Linux SDK 11.2:

    ti-processor-sdk-linux-am335x-evm-11.02.05.02/board-support/ti-linux-kernel-6.12.49+git-ti/arch/arm/boot/dts/ti/omap$
    am335x-icev2.dts         am335x-icev2-prueth.dts

    The EVM should select which devicetree file is loaded based on whether the jumpers on the ICEv2 board are set for PRU Ethernet, or for CPSW Ethernet.

    The board will look for those exact filenames, with .dtb instead of .dts. If those files are not in the Linux filesystem under the /boot directory (note, NOT the boot partition of the SD card, but the top-level /boot directory in the other partition), then I would not expect the board to boot properly. The files will be in a subfolder, either /boot/dtb or /boot/dtb/ti

    Regards,

    Nick

  • Hello, Nick, Pooja,

    I was able to verify the issue you are seeing with PSDK setup scripts.

    Using the same image, I flashed an SD card without setup scripts:
    working: gist.github.com/.../46c639f7f729e3722c791ec62af8f381

    and with setup scripts:
    failing: gist.github.com/.../fdad957d221bb7b12da598cb339b76ad

    Is this the same kind of error log you are seeing?


    The image flashed to the SD card using the setup scripts seems to be wrong, both partitions seems different. Obviously there is an issue with the setup scripts here that can be triaged.

    I was also able to verify that the default image on TI.com 11.02 image works perfectly fine on AM335 ICE board and SD card boot.

    ~ Judith

  • Hello Judith,

    By “setup script,” you mean the create-sdcard.sh script. When I flash the SD card using the create-sdcard.sh script, I encounter the same issue you are facing, and the error logs are the same. However, when I flash the SD card without using the script—by directly using the default image (tisdk-default-image-am335x-evm-11.02.05.02.rootfs.wic.xz)—it works correctly.

    Regards,

    Pooja