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.

Compiler/TDA2EVM5777: How to bring up C6xx on TDA2 outside SDK using remoteproc

Part Number: TDA2EVM5777
Other Parts Discussed in Thread: TDA2

Tool/software: TI C/C++ Compiler

Hello *!

I need to bring up the DSPs of the TDA2 using firmware mechanism of linux (remoteproc) outside the SDK, without using CCS and SYS/BIOS/RTOS. 

What Do I need and where do I find it in the visual-sdk provided by TI?  

(Of course, the cl6x will be needed to build the ELF, a custom mapping table for the remoteproc, something like a "startup code" setting IRQ-vector-table and jump to "main" of the C-Code... )

Are there any example available?

  • Hi Marco,

    I have forwarded your question to an expert for comment.

    Regards,
    Yordan
  • You can find information on remoteproc here:
    lwn.net/.../

    The image needs to have a resource table for remoteproc to load the DSP ELF image. For example images that use SYS/BIOS and load with remoteproc, you can check the IPC3.x code:

    gitorious.ti.com/.../ipcdev
    processors.wiki.ti.com/.../IPC_Users_Guide

    You might find this other similar e2e query useful as well e2e.ti.com/.../948787

    Thanks,
    Angela
  • Hello Angela,

    Thank you for the links, but this is not exactly what I need to getting started.

    A few weeks ago I took the things I thought I need to bring up the DSP:
    The resource table have almost been linked into the ELF file, I took the "interrupt.c" and "intvecs.asm" as something like a "startup code" and I wrote a very simple "main.c" containing a counting infinity loop...

    At a first look, there is no reason why it shouldn't work, but all I got is a "MMU fault" from the DSPs MMU. I think, the L3-preparation of the carveout memory works, but the stuff I took off the "visual SDK" is not adapted correctly and until now I try to find, what I did wrong.

    So I need help, but all I get in Forum or my FAE at TI are links to "IPCxxx" and I can't believe that there is no very simple example available, which do not use SYS/BIOS, RTOS-fragments... complex build environments to use dozens of SOCs over XDC... most code is designed to run without MMU... and of course the CL6X toolchain is very powerful, a lot of possibility... and, again: No idea what went wrong.

    So I need help to bring up the DSP realy bare metal, using only the TI toolchain and remoteproc.

    INTENTIONS:

    The requirements of my use-case are embedded in the need of very safe code (DSP, IPU and EVE - Linux only used a comfortable gateway...).

    So I have to implement only code, which is really needed. A universal BIOS or Bootloader in the DSPs and Subcores is forbidden.

    I did this for IPU successfully, but now I cut my teeth doing the same with the DSP...
    so I need help... urgently.

    Thank you for your dedication:
    Marco
  • Hi Marco,

    you can also check this E2E thread with discussion of similar topic:
    e2e.ti.com/.../640064

    Regards,
    Yordan
  • Hi Yordan...

    *LOL*
    It's a little bit funny:
    Needhu is my "direct" contact at TI ;-)
  • PROBLEM SOLVED:

    After reviewing the whole code without finding any kind of mistakes, I took a look to the CALL of the CL6X and its linker-options:

    I read the ELF with readelf -a and saw, that the ENTRY-POINT points to symbol which don't make sense.
    I'm wondering about the decision of the CL6X setting this address... so I read the manual again:

    downloads.ti.com/.../linker_description.html

    I can set the entry point manually:
    --entry_point=...

    and the code I took out of the SDK, the DSP have to jump into "_vector0" to boot.

    This solved the problem, the DSP boot.