Thursday, May 27, 2010

Moment of Truth #1: Hello World from the DSP with C6RunApp


O World, behold the C6RunApp saying Hello to Thee!

C6RunApp (formerly known as DSPEasy) is an awesome cross-compiling tool that I'll be basing my work on. What it allows you to do is basically this: you write your 5-line run-of-the-mill Hello World application in plain old C, then call the cross-compiling script on this file as you would call gcc to produce the hello_world_dsp executable you see above. The executable itself is (obviously) an ARM executable, but when you run it it magically extracts the compiled DSP binary from within itself, takes care of all the tedious work of setting up the communications via DSP/Link, and services some C I/O (such as printf) on request from the DSP. Now imagine this with the full capabilities of the standard C library we know and love, not to mention the eventual ability to connect to any ARM-side function. Wouldn't it be lovely to do DSP development like this?

Coming soon: Developing for the DSP, using the OE toolchain to build modified DSP/Link samples, setting up C6RunApp and much more!

5 comments:

  1. Hi,
    I've a couple of questions:
    1. "but when you run it it magically extracts the compiled DSP binary from within itself"

    how exactly is it done. Can you comment on that briefly. I mean, say I've a code part of which has to be executed on the GPP and it has to pass the data to the DSP where some more processing on the data takes place, are you saying that, C6RunApp will automate this process.

    2. Is this written as a patch to the arm-c compiler.

    Thanks.

    ReplyDelete
  2. Hello,

    1. The compiled DSP-binary is included in the GPP binary (specifically, it is turned into a variable in a C header file and included during the GPP-side app compilation). Then it copies this binary data to CMEM and uses the DSP/Link PROC component to startup the DSP binary. Regarding your example, C6RunApp not really meant to automate this in a general sense, but there exists another C6Run project called C6RunLib which allows you to do GPP->DSP remote calls, ie you can call DSP-side functions directly from the GPP.

    2. Nope, it's a couple of libraries and a shell script that carries this out. See http://maltanar.blogspot.com/2010/06/c6runapp.html for more details.

    ReplyDelete
  3. Once compiled the source code from the error CMEM_alloc ()...... you could post a guide for setting !!!!!

    ReplyDelete
  4. i am working on beagleboard-xm to write some codes for dsp . How did u set up the whole system kernel source code , u-boot code, compiler and all where did u get them from?

    ReplyDelete