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.

Error while running ipc demo on 6638k2k

Hi,

On the Keystone 6638K2K EVM I am using  Matrix app  on the launcher page to run the different demos.

With the images installed on 6638K2K  and ready to use, I am able to launch IPC and Image processing demos with pre-existing .out files and binaries.

My question is in reference to IPC demo :

Following binaries are pre existing on target:
/mcsdk_x_XX/lib/firmware/message_single.xe66 (DSP built library for message q test)

/usr/bin/MessageQBench (ARM built library for message q test)

With this files I am able to run this demo correctly without any error .

Going further step I am modifying source files with some printf statements and rebuilding IPC Libraries :

Source file Modified for DSP :
/ti/ipc_3_36_02_13/packages/ti/ipc/tests/messageq_single.c

DSP Binaries are done in:
/ti/ipc_3_36_02_13/packages/ti/ipc/tests/
bin/ti_platforms_evmTCI6638K2K_core0/message_single.xe66


Source File modified on Linux:

/ti/ipc_3_36_02_13/linux/src/tests/MessageQBench.c

Linux Binaries are done in:

/ti/ipc_3_36_02_13//linux/tests/.libs/MessageQBench

Now when I am replacing my built binaries message_single.xe66(/mcsdk_x_XX/lib/firmware/message_single.xe66) and MessageQBench(/usr/bin/MessageQBench) on target and running same demo I get following error:

Loading DSP Images

Resetting Core 0...

reset succeeded

dsp 0 is in reset state

....so on for all other 7 cores..

Loading and Running....

load succeeded

Run succeeded

..for all other cores..

Running MessageQBench:

/usr/bin/MessageQBench: "Error while loading Shared Libraries : libtitransportrpmsg.so.1: cannot open shared object file : No such File or directory.

Script Complete..

Can someone please let me know why this error is triggered and how to resolve it.

thanks and regards

nikunj

  • Hi nikunj,
    It seems to be you didn't build the IPC libraries.
    Rebuild the IPC linux libraries and install into your filesystem.
    Please refer to the following TI wiki page.
    processors.wiki.ti.com/.../Rebuilding_IPC
    processors.wiki.ti.com/.../IPC_FAQ_for_Keystone_Devices
  • Hi Shankari,
    Thanks for the quick reply. But Sorry to say that I have already built and rebuild IPC Libraries without errors before proceeding to test on target.

    As a starting point I have built IPC Libraries, both for linux and Bios, referring the manuals you shared.

    I used following instructions :
    Building linux IPC Version:
    iv) $make distclean
    v) sudo $make –f ipc-linux.mak config
    vi) sudo $make
    vii)$sudo make install
    ipc libraries are rebuilt now and generated libraries are in the folder path:
    /ti/ipc_3_36_02_13/ipc_3_36_02_13_lib/bin

    Building Bios IPC Version
    since products.mak is already modified
    viii) go to /ti/ipc_3_36_02_13
    ix) sudo make -f ipc-bios.mak all

    Result of this make Executables are now generated in following folder
    /home/hscuser/ti/ipc_3_36_02_13/packages/ti/ipc/tests/bin/ti_platforms_evmTCI6638K2K_core0

    So, in short I compiled the IPC Libraries successfully as a first step,
    Next step, I am using the executables on target and I see this shared library error.


    thanks and regards
    Nikunj
  • Hi Nikunj,

    I'm able to build the IPC libraries and install into K2H filesystem.

    products.mak
    DESTDIR = /opt/ti/ipc_3_35_01_07_shankari/binaries_ipc

    ti@e2e:/opt/ti/ipc_3_35_01_07_shankari$
    ti@e2e:/opt/ti/ipc_3_35_01_07_shankari$ ls binaries_ipc/
    bin include lib
    ti@e2e:/opt/ti/ipc_3_35_01_07_shankari$ ls binaries_ipc/lib
    libtiipc.a libtiipc.so.1.0.0 libtiipcutils_lad.la libtiipcutils.so libtitransportrpmsg.la pkgconfig
    libtiipc.la libtiipcutils.a libtiipcutils_lad.so libtiipcutils.so.1 libtitransportrpmsg.so
    libtiipc.so libtiipcutils.la libtiipcutils_lad.so.1 libtiipcutils.so.1.0.0 libtitransportrpmsg.so.1
    libtiipc.so.1 libtiipcutils_lad.a libtiipcutils_lad.so.1.0.0 libtitransportrpmsg.a libtitransportrpmsg.so.1.0.0
    ti@e2e:/opt/ti/ipc_3_35_01_07_shankari$
    ti@e2e:/opt/ti/ipc_3_35_01_07_shankari$

    Copy the complete "lib", "bin" and "include" folder into filesystem.
    I hope this helps.
  • Hi Shankari,
    I have a preexisting root file system on evm board.
    For your answer:"Copy the complete "lib", "bin" and "include" folder into filesystem"
    My Question is we are trying to copy the newly built IPC Libaries(in a linux machine) to a preexisting root file system on evm board, is it a correct thing to do??
    The reason I am asking this question is because I could see that the lib directory on target evm is missing libtitransportrpmsg.so.1.0.0 , libtitransportrpmsg.so.1, and others.

    As a developer what is the better option, perform a NFS boot and then build and run your applications( I do not want to flash the board),or
    use the existing root file system on evm and build and run your applications on top of this root file system??

    regards
    nikunj
  • Hi Nikunj,

    That destination directory should be given in the makefile of your project to find those libraries such as "libtitransportrpmsg.so.1"

    For example:

    Modify your make file something like below after building your IPC libraries.

    IPC_INSTALL_DIR := /opt/ti/ipc_3_3x_xx_xx

    #The location where the libraries are installed after building the IPC package
    SIPC_LINUX_DIR := /opt/ti/ipc_3_3x_xx_xx/IPC_Linux_libraries

    CROSS_COMPILE ?= arm-linux-gnueabihf-
    CC := $(CROSS_COMPILE)gcc
    CFLAGS := -Wall -I$(COMMON_INC) -I$(MASTER_INC) -I$(IPC_INSTALL_DIR)/linux/include -I$(IPC_INSTALL_DIR)/packages -D_GNU_SOURCE
    LFLAGS := -lpthread -L$(SIPC_LINUX_DIR)/ -ltitransportrpmsg -L$(SIPC_LINUX_DIR)/ -ltiipc -L$(SIPC_LINUX_DIR)/ -ltiipcutils

  • I am stuck at very same point .So what did you do exactly?
  • Hi Munzir,

    There are two methods to tackle this issue:

    1) If your factory supplied TI EVM kit is flashed with Older version of mcsdk, then board needs to be flashed with upgraded mcsdk version (which will have latest ipc ,and other packages ), this will resolve the issue, then you can simply copy your binaries in /usr/bin and /lib/firmware and no shared libraries issue remains.

    2) If you do not want to take risk of corrupting the flash , try to do a nfs booting to a linux machine installed with all latest mcsdk,ipc, xdc, bios tools.This will replicate the linux machine's file system on your board, and then you can copy your Linux application binaries in /usr/bin/ directory on evm board and dsp binaries in /lib/firmware/ directory on evm board.

    regards

    nikunj

  • I want to go with first option as I am using VM and stuff gets tough for me. Would you please guide me how to perform 1st option
  • Hi Munzir,
    I am not a TI Expert, I also just started on Keystone II some 7-8 months back and never tried flashing the board.
    However you can get some hint from below links:
    processors.wiki.ti.com/.../KeystoneII_Boot_Examples
    processors.wiki.ti.com/.../MCSDK_UG_Chapter_Exploring

    Also I would suggest you to contact Shankari G on this forum , he is the best person to answer this question.

    regards
    nikunj
  • thanks nikunj
    Just one question
    What is mcsdk version that you are using and it has no problem.
  • Hi Rao,

    You can use the MCSDK version : mcsdk_linux_3_01_04_07 for K2H EVM