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.

Compile error when compile syslink

Other Parts Discussed in Thread: OMAPL138

Hi all,

I am trying to compile syslink on Linux environment but I got hit with many build errors. 

My settings in products.mak

DEVICE = OMAPL1XX

GPPOS = Linux

SYSLINK_BUILD_DEBUG=1
SYSLINK_TRACE_ENABLE=1

SYSLINK_NOTIFYDRIVER=NOTIFYDRIVERSHM

SYSLINK_TRANSPORT=TRANSPORTSHM

SDK = NONE

else ifeq ("$(DEVICE)","OMAPL1XX")

LINUXKERNEL = $(DEPOT)/trbo_linux/kernel-source -> I am using kernel 4.12
CGT_ARM_INSTALL_DIR = $(DEPOT)/ssp_tools/crosstool-ng/bin
CGT_ARM_PREFIX = $(DEPOT)/ssp_tools/crosstool-ng/bin/arm-unknown-linux-uclibcgnueabi-
IPC_INSTALL_DIR = $(DEPOT)/migration/ipc_3_40_01_08
BIOS_INSTALL_DIR = $(DEPOT)/migration/bios_6_50_01_12
XDC_INSTALL_DIR = $(DEPOT)/migration/xdctools_3_50_00_10_core_linux/xdctools_3_50_00_10_core

# If LOADER=ELF then below elf tools path is required else set C674 path
ifeq ("$(LOADER)","ELF")
CGT_C674_ELF_INSTALL_DIR= $(DEPOT)/migration/ti-cgt-c6000_8.2.3
else
CGT_C674_INSTALL_DIR= $(DEPOT)/_your_c674_code_gen_install_
endif

The following are the things I had downloaded:

1) bios_6_50_01_12

2) ipc_3_40_01_08

3) syslink_2_21_03_11

4) ti-cgt-c6000_8.2.3

5) xdctools_3_50_00_10_core_linux

Are there any other things I need to download?

Build errors:

1) Error:  error: implicit declaration of function 'copy_to_user' [-Werror=implicit-function-declaration]

Which I resolved by changing #include <asm/uaccess.h> to #include <linux/uaccess.h>

2) Error: /syslink_2_21_03_11/packages/ti/syslink/inc/TransportShm.h:109:5: error: unknown type name 'IMessageQTransport_ErrFxn'

I had to include ti/syslink/inc/IMessageQTransport.h in Platform.c to forward declare the type

3) Error: /syslink_2_21_03_11/packages/ti/syslink/inc/_MessageQ.h:189:6: error: conflicting types for 'MessageQ_registerTransport'

I found that in syslink_2_21_03_11/packages/ti/syslink/utils/hlos/knl/Linux/../../../../../../ti/syslink/family/hlos/knl/omapl1xx/Platform.c, there are 2 headers, 

#include <ti/ipc/MessageQ.h> -> declares

Bool MessageQ_registerTransport(IMessageQTransport_Handle handle,
UInt16 rprocId, UInt priority);

#include <ti/syslink/inc/_MessageQ.h> -> declares 

Int MessageQ_registerTransport (IMessageQTransport_Handle handle,
UInt16 procId,
UInt priority);

What is wrong with my configuration that I cannot seem to make syslink?

  • Hi Jonathan,

    You need to download the Processor SDK RTOS:
    www.ti.com/.../processor-sdk-omapl138

    After you install it, you can build the IPC (SYSLINK is now called IPC). After you install it you can navigate to:
    ~/ti/processor_sdk_rtos_omapl138_x_xx_xx_xx

    and have a look at the makefile to see how you can build the IPC.

    Best Regards,
    Yordan
  • From the FAQ here, I qoute

    The SysLink and IPC product are complementary.

    • IPC includes the implementation independent headers (e.g. ti/ipc/MessageQ.h), as well as an implementation of that spec for BIOS (e.g ti/sdo/ipc/MessageQ.c)
    • SysLink provides Linux-side implementation of the IPC interfaces, as well as additional higher level data transports such as RingIO and FrameQ for both BIOS and HLOS environments. (Note: FrameQ has been deprecated as of 2.20. Customers are encouraged to implement equivalent functionality using lower-level SysLink primitives).

    If you are using Linux on the ARM and BIOS on a slave processor, then both SysLink and IPC packages needs to be used, since SysLink contains the required Linux-side components and IPC contains the BIOS side.

    I am trying to build syslink on existing OMAPL138 setup I have that is not a SDK.

  • Ok. I've notified the RTOS (BIOS) team. They will provide their feedback directly here.

    Best Regards,
    Yordan
  • Additionally, do you know if syslink is compatible with linux 4.12.24? What version of Linux do I need to use if its incompatible? I could not find anywhere that states the compatibility. Are the tools that I downloaded to use correct and compatible with one another

    1) bios_6_50_01_12

    2) ipc_3_40_01_08 -> I found that this may not be the latest as IPC moved to here

    3) syslink_2_21_03_11

    4) ti-cgt-c6000_8.2.3

    5) xdctools_3_50_00_10_core_linux

    Please advice. 

    I had this error also

    CC [M] /migration/syslink_2_21_03_11/packages/ti/syslink/utils/hlos/knl/Linux/../../../../../../ti/syslink/ipc/hlos/knl/MessageQ.o
    /migration/syslink_2_21_03_11/packages/ti/syslink/utils/hlos/knl/Linux/../../../../../../ti/syslink/ipc/hlos/knl/MessageQ.c:578:1: error: redefinition of 'MessageQ_Params_init'
    /migration/ipcdev/packages/ti/ipc/MessageQ.h:696:20: note: previous definition of 'MessageQ_Params_init' was here

    I'm not sure if its the right thing to do but I managed to resolved it by doing

    #define MessageQ_internal 1 in /migration/syslink_2_21_03_11/packages/ti/syslink/utils/hlos/knl/Linux/../../../../../../ti/syslink/ipc/hlos/knl/MessageQ.c

    Please also advice :D

  • Hi Jonathan,

    Sorry for the confusion, SysLink is no longer supported by TI. That FAQ you referenced needs to be updated, thanks for bringing it to our attention.

    The current supported package is IPC 3.x that comes with Processor SDK.

  • We recommend using the versions that come bundled with Processor SDK as there is some inter-dependency between the packages.

    Processor SDK can be downloaded here:

    www.ti.com/.../PROCESSOR-SDK-OMAPL138
  • Thank you for your help. I have few more queries though.