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.

How to generate a lib(*.ae674) for the C674x-DSP on DM8168?



Hi,

   I am now using the EVM8168 platform with DVRRDK GA3.50.  I've written an algorithm which is xDM-compliant for the DSP.  In order to invoke this algorithm on ARM, a framework(engine) is needed.  Thus, I chose the RPE framework.

   However, the DVRRDK cannot be built successfuly without the lib(*.ae674 or *.l64p) file, which is generated from my own xDM-algorithm source code.  Furthermore, the DVRRDK would build an DSP image (a *.xe674 file) by using these algorithm libs.

   I don't know how to build such a lib from my source codes and headfiles.  Could you give me a hand?

Naroah

July/27/2013

  • You can use either makefiles or use CCS to build the library . For CCS project refer http://processors.wiki.ti.com/index.php/GSG:Creating_projects_v5

    For makefile you can refer /dvr_rdk/mcfw/src_bios6/alg/swosd and do similar thing for your app.

  • Naroah,

    You can use the "cl6x" and the "ar6x" command in the linux environment, it is the compiler command of cgt_7

    The "cl6x" command will compiler the source file and the header file, and generate the object file(.oe674 or .obj), the "ar6x" command will archive the object file and generate the lib file(.ae674 or .lib).

    You can see the datasheet about the compiler of DSP:http://www.ti.com/lit/ug/spru187u/spru187u.pdf and the assembly language of DSP:http://www.ti.com/lit/ug/spru186w/spru186w.pdf

    Regards,

    Tianxing

     

  • Tianxing,

        Thank you for your reply!  I find these documents useful and informative.  I have the problem sloved by referring to these pdfs!

    Naroah

    Aug/06/2013

  • Hi,Haoran

    I have succesfuly generated myself .ae674 and integrated into IPNC RDK.

    but the running result is so abnormal compared with that is running C source code in IPNC RDK directory.

    it seems that the dsp heap and stack memory usage is Inconsistent with IPNC RDK,if it'true,how to configure to avoid this issue?

    Would you give me some advice about that?Expecte you reply...

    thank you.

  • Hi, Simon

        Actually, I used the share memory region in my program:  Allocating some memory from Shared Region by ARM, I could then invoke the RPE API for processing data in this piece of memory. 

        I have sucessfully integrated some xDM algorithms into the RPE framework in DVRRDK, but I knew little about the IPNC RDK.  Did the examples in this RDK provide some source codes relevant for RPE API?  Maybe a Memory_alloc(heap, size, align, pt) function is a better solution when you tried to allocate a chunk of memory which is equally accessible for ARM and DSP.

        Good Luck!

    Naroah

    Nov/07/2013

  • thank for your replay firstly.

    It seems that the RDK of IPNC and DVR have the same mechanism(MCFW).

    what does RPE means?is the Remote Process Evoke?

    I understand the memory share between arm and dsp.

    but the dsp has it's own stack and heap memory,for some reason,i want to increase the stack size on dsp.

    and keep consistent memory cfg between RDK and the algorithm in the library of .ae674.

    would give some advice about that?

  • I can't receive the e2e forum post actives email now,what's going on?

     this chck button is checked,but i can't receive the notify email,why?
  • Hi, simon

        As far as I know, we have got a DSP Link in the mcfw. Some algorithms like OSD are implement in this way. Yet, RPE is another way for you to invoke your xDM algorithm in the DSP. It is an independent and standalone engine; therefore, you need not to invoke your algorithm by make a "component " and "Link" it to MCFW.

    PS. RPE is short for Remote Process Execution.

        And you also metioned that you want to change the cfg file for modifying the stack and heap size of DSP. Unfortnately, I have no idea with it. Frustrated and confused, I tried to modify the cfg file and memory map serveral months ago and finally gived up...

    Naroah

    Nov/10/2013

  • many thanks.

    would you offer me some meterial (pdf or demo code) about the PRE?

    i want to study and implement in this way.

     

  • Simon,

        You can firstly refer to this. 

    http://processors.wiki.ti.com/index.php/How_to_integrate_audio/voice_in_RPE_in_EZSDK

        Actually, there were a few documents about RPE.  And yet it resembles the Codec Engine in EZSDK.  Maybe you can refer to something about the Codec Engine.

    Naroah

    Nov/12/2013

  • hi, Haoran

    would you tell me the method to generate your .ae674?

    using CCS or "ti.xdais.wizards.genalg.sh"?

    how to keep consistency between the memmory usage in generated .ae674 and RDK memory configuration in those files such as BIOS_c6xdsp.cfg,config_512M.bld,FC_RMAN_IRES_c6xdsp.cfg etc.?

    or when i generate myself .ae674,there is no need to care about these memory configure in the RDK?

    sorry,i'm so confused by this issue...

    thank you.

  • Hi, Simon

        I generate my *.ae674 file by modifying the Codec Engine iUniversal example in EZSDK, since I started my DaVinci voyage from the EZSDK.  I followed the instruction and thus built an iUniversal algorithm.  It seems to be necessary to modify the config.bld.  And this below is part of my config.bld file.

     config.bld
                     1 /* THIS IS A GENERATED FILE -- DO NOT EDIT */
                     2 /* configuro was passed a config.bld file */
                     3 xdc.includeFile("/usr/local/DVRRDK_03.50.00.05/dvr_rdk/mcfw/src_bios6/cfg/ti816x/config_1G_256MLinux.bld");
                     4 /* configuro was passed the target's name explicitly */
                     5 var target  = xdc.module('ti.targets.elf.C674');
                     6 Build.targets = [target];
                     7
                     8
                     9 /* load the required modules for the configuration */
                    10 var C674 = xdc.useModule('ti.targets.C674');
                    11 var C674_ELF = xdc.useModule('ti.targets.elf.C674');
                    12
                    13 /* compiler paths for the CCS4.0                   */
                    14 var cgtools =
    "/usr/local/DVRRDK_03.50.00.05/ti_tools/cgt_dsp/cgt6x_7_3_5";//java.lang.System.getenv("CGTOOLS");
                    15 var cgtools_elf =
    "/usr/local/DVRRDK_03.50.00.05/ti_tools/cgt_dsp/cgt6x_7_3_5";//java.lang.System.getenv("CGTOOLS_ELF");
                    16
                    17 C674.rootDir = cgtools;
                    18 C674_ELF.rootDir = cgtools_elf;

                    cp /usr/local/DVRRDK_03.50.00.05/ti_tools/xdais/xdais_7_22_00_03/packages/ti/xdais/qualiti/QtiProject.xdt
    ./


    Naroah
    Nov/20/2013
  • thanks a lot and so nice of your english.

    by the way,are you from china?if it is true,pls contact me with this email:sprite2001@163.com

    李昊然:)

  • We have an xDM compiant algorithm developed for DM6446 platform and going to migrate to DM8127. Do you think the same RPE approach feasible for DM8127 platform?

    thanks!

    ARM

  • Hi ARM,

       If you can find the RPE component in your SDK, I think it is very likely that the RPE framework is available for you.  And yet in my opinion, Codec Engine Framework maybe a better choice for you.  Although RPE is a lightweight framework with high effciency, so few supports and document concerned with it. 

       By the way, RPE is short for REMOTE Processor Execution.  Remote Processor OS is not support for HLOS, but for SYS/BIOS., while Host Processor OS is support for HLOS, not for SYS/BIOS.

    Naorah

    Nov/28/2013

  • Thanks Naorah. The IPNC RDK distributed with DM8127 does not contain RPE or Codec Engine component. Its so frustrating to deal with this new platform. Can not find the documentation about how to integrate the custom algorithm. The IPNC RDK contains the DSP app and had pre-implemented chain running on the DSP. So, it looks like I have to modify the chain manually and add hook up functions of my custom algorithms. But, I hesitate to integrate this way as I do not find the documentation.

    ~ARM

    12/2/2013