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.

OMAPL138 Syslink app runs problems

Other Parts Discussed in Thread: SYSBIOS
Would you like to help me solve this problem?

I encounter a problem that puzzled me many days,I can't find out the answer,I used the syslink2_21_02_10 ,to communicate dsp with arm,the example is led.

DSP compile options as follow describled:

sysbios_6_35_04

ipc_1_25_03_15

TI_CGT_C6000_7.4.4

xdctools_3_25_03_72.

kernel is in CD -- 2.6.33-rc4

now ,when runs ,it counters following problem: Ipc_attach: Ipc_procSyncStart failed!It is a finite loop.Other parts of the application are no errors , led also can flashes normally.

I did not know what the problem is.

  • Hi yezi,

    Not an expert in IPC. But still check whether you can use the option, Ipc.ProcSync_ALL as per this WIKI: http://processors.wiki.ti.com/index.php/IPC_Users_Guide/Ipc_Module

     

    Regards,

    Shankari

    -------------------------------------------------------------------------------------------------------

    Please click the Verify Answer button on this post if it answers your question.
    --------------------------------------------------------------------------------------------------------

  • I'm glad you can help me answer questions . I modified Ipc.ProcSync_PAIR to Ipc.ProcSync_ALL in the cfg file, also changed the application, but still the same problem , I make mistakes in it?
    this in my file:
    7357.Dsp.cfg
    1882.main_dsp.c
    /*
     * Copyright (c) 2012, Texas Instruments Incorporated
     * All rights reserved.
     *
     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions
     * are met:
     *
     * *  Redistributions of source code must retain the above copyright
     *    notice, this list of conditions and the following disclaimer.
     *
     * *  Redistributions in binary form must reproduce the above copyright
     *    notice, this list of conditions and the following disclaimer in the
     *    documentation and/or other materials provided with the distribution.
     *
     * *  Neither the name of Texas Instruments Incorporated nor the names of
     *    its contributors may be used to endorse or promote products derived
     *    from this software without specific prior written permission.
     *
     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
     * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
     * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
     * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
     * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
     * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
     * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     */
    
    /*
     *  ======== main_dsp.c ========
     *
     */
    
    /* xdctools header files */
    #include <xdc/std.h>
    #include <xdc/runtime/Diags.h>
    #include <xdc/runtime/Error.h>
    #include <xdc/runtime/Log.h>
    #include <xdc/runtime/System.h>
    
    /* package header files */
    #include <ti/ipc/Ipc.h>
    #include <ti/ipc/MultiProc.h>
    #include <ti/sysbios/BIOS.h>
    #include <ti/sysbios/knl/Task.h>
    
    /* local header files */
    #include "Server.h"
    
    /* private functions */
    static Void smain(UArg arg0, UArg arg1);
    
    /*
    *  ======== main ========
    */
    Int main(Int argc, Char* argv[])
    {
        Error_Block eb;
        Task_Params taskParams;
    
        Log_print0(Diags_ENTRY, "--> main:");
    
        /* must initialize the error block before using it */
        Error_init(&eb);
    
        /* create main thread (interrupts not enabled in main on BIOS) */
        Task_Params_init(&taskParams);
        taskParams.instance->name = "smain";
        taskParams.stackSize = 0x1000;
        Task_create(smain, &taskParams, &eb);
    
        if (Error_check(&eb)) {
            System_abort("main: failed to create application startup thread");
        }
    
        /* start scheduler, this never returns */
        BIOS_start();
    
        /* should never get here */
        Log_print0(Diags_EXIT, "<-- main:");
        return (0);
    }
    
    
    /*
     *  ======== smain ========
     */
    Void smain(UArg arg0, UArg arg1)
    {
        Int             status          = 0;
        UInt16          remoteProcId;
        Bool            running         = TRUE;
    
        Log_print0(Diags_ENTRY | Diags_INFO , "--> smain:");
    
        /* initialize modules */
        Server_init();
    
        /* turn on Diags_INFO trace */
        Diags_setMask("Server+F");
    
        /* attach to the remote processor */
        remoteProcId = MultiProc_getId("HOST");
    
        /* loop forever */
        while (running) {
    
            /* only one thread must call start */
            do {
                status = Ipc_start();
            } while (status == Ipc_E_NOTREADY);
    
            if (status < 0) {
                Log_error0("smain: Ipc_start() failed");
                goto leave;
            }
    
        /* attach to the remote processor */
    //    remoteProcId = MultiProc_getId("HOST");
        
            /* connect to remote processor */
    /*        do {
                status = Ipc_attach(remoteProcId);
    
                if (status == Ipc_E_NOTREADY) {
                    Task_sleep(100);
                }
            } while (status == Ipc_E_NOTREADY);
    
            if (status < 0) {
                Log_error0("smain: Ipc_attach() failed");
                goto leave;
            }
    */
            /* BEGIN server phase */
    
            /* server setup phase */
            status = Server_create(remoteProcId);
    
            if (status < 0) {
                goto leave;
            }
    
            /* server execute phase */
            status = Server_exec();
    
            if (status < 0) {
                goto leave;
            }
    
            /* server shutdown phase */
            status = Server_delete();
    
            if (status < 0) {
                goto leave;
            }
    
            /* END server phase */
    
            /* disconnect from remote processor */
            do {
                status = Ipc_detach(remoteProcId);
    
                if (status == Ipc_E_NOTREADY) {
                    Task_sleep(100);
                }
            } while (status == Ipc_E_NOTREADY);
    
            if (status < 0) {
                Log_error0("smain: Failed to disconnect from remote process");
                goto leave;
            }
    
            /* only one thread must call stop */
            Ipc_stop();
    
        } /* while (running) */
    
        /* finalize modules */
        Server_exit();
    
    leave:
        Log_print1(Diags_EXIT, "<-- smain: %d", (IArg)status);
        return;
    }
    
  • this is bld file ,I don't know whether it has problem.
    /*
    * ======== config.bld ========
    *
    */

    var Build = xdc.useModule('xdc.bld.BuildEnvironment');

    /* Memory Map for ti.platforms.evmOMAPL138
    *
    * C000_0000 - C3FF_FFFF 400_0000 ( 64 MB) External Memory
    * ------------------------------------------------------------------------
    * C000_0000 - C1FF_FFFF 200_0000 ( 32 MB) Linux
    * C200_0000 - C200_FFFF 1_0000 ( 64 KB) SR_0 (ipc)
    * C201_0000 - C2FF_FFFF FF_0000 ( ~15 MB) --------
    * C300_0000 - C37F_FFFF 80_0000 ( 8 MB) DSP_PROG (code, data)
    * C380_0000 - C3FF_FFFF 80_0000 ( 8 MB) --------
    */

    var SR_0 = {
    name: "SR_0", space: "data", access: "RWX",
    base: 0xC2000000, len: 0x10000,
    comment: "SR#0 Memory (64 KB)"
    };

    Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {
    externalMemoryMap: [
    [ SR_0.name, SR_0 ],
    [ "DSP_PROG", {
    name: "DSP_PROG", space: "code/data", access: "RWX",
    base: 0xC3000000, len: 0x800000,
    comment: "DSP Program Memory (8 MB)"
    }]
    ],
    codeMemory: "DSP_PROG",
    dataMemory: "DSP_PROG",
    stackMemory: "DSP_PROG",
    l1DMode: "32k",
    l1PMode: "32k",
    l2Mode: "256k"
    };

    /*
    * ======== ti.targets.elf.C674 ========
    */
    var C674_ELF = xdc.useModule('ti.targets.elf.C674');
    C674_ELF.ccOpts.suffix += " -mi10 -mo ";
    Build.targets.$add(C674_ELF);
  • I browsed some information when using Ipc.ProcSync_PAIR, applications explicitly call ipc_attach, this usage should be true , right ?
  • Hi Yezi,

    I presume that you have not modified any of the source and you are just running the pre-built. If not, just do a first attempt with prebuilt binaries.
    Please do check that you are aligned with the steps given in the below WIKI to run the examples of SYSLINK.

    http://processors.wiki.ti.com/index.php/SysLink_Install_Guide

    Regards,

    Shankari

    -------------------------------------------------------------------------------------------------------

    Please click the Verify Answer button on this post if it answers your question.
    --------------------------------------------------------------------------------------------------------

  • I read this link, I'm sure my operation is completely consistent with it .

    In addition, I would like to print out this information will affect the dual-core communication it? Because I noticed LED flashes as I expect.