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.

PROCESSOR-SDK-AM65X: Profinet Slave problem

Part Number: PROCESSOR-SDK-AM65X

Hi, 

I am using PROCESSOR-SDK-LINUX-AM65X  06_00_00_07 on AM65x EVM

I am able to build and install the applications provided at  [sdk]/example-applications to the location targetNFS/lib/firmware/pru.

I've used setup.sh  to boot the board from tftpboot/ and load the NFS filesystem.

The platform is able to boot successfully through tftpboot/ and I can see the .out files at /lib/firmware/pru.

When I'm trying to execute the .out files it gives the following error:

root@am65xx-evm:/lib/firmware/pru# chmod 755 PRU_Halt_0.out
root@am65xx-evm:/lib/firmware/pru# ./PRU_Halt_0.out
-sh: ./PRU_Halt_0.out: cannot execute binary file: Exec format error
root@am65xx-evm:/lib/firmware/pru#

 

When I check the file type of the .out file in Linux Host PC, it gives the following information:

mistral@MistSvr16:linux/example-applications/pru-icss-5.4.0/examples/am65x/PRU_Halt/gen/PRU0$ file PRU_Halt_0.out

PRU_Halt_0.out: ELF 32-bit LSB executable, *unknown arch 0x90* version 1 (SYSV), statically linked, not stripped

 

Can you help me to understand the above-mentioned behavior?

 

Apart from this, I have downloaded the Profinet Slave Software from http://software-dl.ti.com/processor-industrial-sw/esd/PRU_ICSS_PROFINET_Slave/latest/index_FDS.html

I have read the documents provided in the above link but couldn't get any information regarding its bring-up procedure on AM65x-EVM using PROCESSOR-SDK-LINUX-AM65X.

I have tried to download the pre-built binaries of Profinet Slave as well which has a file named app.

 

Can you try to help me out to bring up Profinet on the platform?

 

Thanks,

Tarun

 

 

  • Tarun,

    The Profinet Slave Software link you referred to is TI-RTOS based, also it's not supported in AM65x yet.

    For PRU binary load issue, I will let our Linux app team to comment.

    Regards,
    Garrett

  • Hello Tarun,

    As you observed, PRU_Halt_0.out is an ELF binary file. It is not a script that you can execute from the Linux command line. Instead, something needs to take a PRU firmware in the ELF binary, load the firmware into the PRU, and initialize the PRU.

    In Linux, we use RemoteProc to load firmware and initialize the PRU. Please see our RemoteProc documentation for more information on interacting with RemoteProc through the sysfs interface.

    Regards,

    Nick

  • Hi Nick, 

    Thanks for sharing the RemoteProc documentation. The document is very informative.

    I am able to load the firmware in /lib/firmware named am65x-pru0_0-fw, am65x-pru1_0-fw , etc to remoteproc2 and 4 by using the sysfs entries under remoteproc. Also, I'm able to change the state of the pru from offline to running

    Now, coming to the example-applications/pru-icss-5.4.0/examples/am65x/ directory, there are many .out files. What's the role of these .out files and how can I use them. I need to check the functionality of PRU-ICSSG.

    Are these .out files are firmwares and needed to be loaded at /sys/class/remoteproc/remoteprocN/firmware?

    Also, share any document as well which explains the examples-applications provided in the SDK.

    Thanks,

    Tarun

  • Hello Tarun,

    Testing PRU out of the box

    You can use the Linux RPMsg example to check the functionality of PRU-ICSSG. the binaries are prebuilt in the tisdk-rootfs-image-am65xx-evm filesystem (default SD Card from create-sdcard.sh) under /lib/firmware/pru/xxx_RPMsg_Echo_Interruptx_x.out

    Take a look at the RPMsg Quick Start Guide for more information on testing RPMsg examples. If you already have your card made, you can start at section "Booting the Board and Testing RPMsg".

    As far as AM65x examples in the PRU Software Support Package (PSSP) v5.4, we have
    PRU_xxx is for PRU cores
    RTU_xxx is for RTU cores (note the different command linker file)
    We build for different ICSSG instances in the Makefile (e.g., PRU_RPMsg_Echo_Interrupt0/Makefile). You could also have a separate project for each PRU/RTU core in each ICSSG, but we decided we did not want that many projects in the PSSP.

    Halt is a basic example - the core gets initialized, and then does nothing
    RPMsg demonstrates the RemoteProc RPMsg protocol to communicate between ARM and PRU. It is not the best inter-processor communication method for every design, but it is good for initial debugging and demos.
    MAC_Multiply_accum shows the Multiplier with Accumulation (see TRM for more)

    Regards,

    Nick