Difference between revisions of "BeagleBoard/DSP Howto"

From eLinux.org
Jump to: navigation, search
(ping test)
(Developing)
Line 55: Line 55:
  
 
In order to develop dynamic dsp nodes you'll need a [https://www-a.ti.com/downloads/sds_support/targetcontent/LinuxDspTools/download.html C6x compiler] and doffbuild tools.
 
In order to develop dynamic dsp nodes you'll need a [https://www-a.ti.com/downloads/sds_support/targetcontent/LinuxDspTools/download.html C6x compiler] and doffbuild tools.
 +
 +
Apparently the only version that works is v6.0.16.
  
 
== doffbuild tools ==
 
== doffbuild tools ==

Revision as of 08:23, 13 January 2009

This article explains how to use the DSP in OMAP3 at BeagleBoard with TI's deliverables. For DSP tool chain see C64x+ DSP.

Setup

Kernel driver

In order to use the DSP you would need TI's bridgedriver module on the kernel. For that you would need Hiroshi's patches on top of linux-omap:

git clone http://www.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git
cd linux-omap-2.6
wget http://4869037.web.fc2.com/tidspbridge-20081021.tgz
tar xvzf tidspbridge-20081021.tgz
git am *.patch
make omap3_beagle_defconfig

Then make menuconfig and add the following options in the menuconfig:

 CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=14   #in Device Drivers->Graphics support->Support for frame buffer devices->Consistent DMA memory size
 CONFIG_MPU_BRIDGE=m                     #in Device Drivers->DSP Bridge driver

TI binaries

In order to get the DSP binaries for multimedia processing you need to download TI's OpenMAX IL package. Once you have extracted the tarball you'll have to run the installer TI-OMX-Sample-Firmware-0.3-Linux-x86-Install and accept the license agreement.

You would end up with a bunch of binaries in lib/dsp, copy them to your root filesystem at the same location (/lib/dsp).

ping test

If you want to test the DSP you can try the simple ping test provided in this package.

Just:

./ping.out

If you get an error like:

DSPNode_Allocate failed: 0x80008008

Then it's possible that the ping DSP socket node is not loaded. If you use 'baseimage.dof' you need to load it dynamically:

./dynreg.out -r pingdyn_3430.dll64P

On the other hand, 'ddspbase_tiomap3430.dof64P' has the node statically included, so there's no need to do that.

Running

On the board use this to load the module:

modprobe bridgedriver base_img=/lib/dsp/baseimage.dof

Developing

In order to develop dynamic dsp nodes you'll need a C6x compiler and doffbuild tools.

Apparently the only version that works is v6.0.16.

doffbuild tools

The only relevant tool is DLLcreate, which can be found in TI's omapzoom site, on the dspbridge_dsp package.

mkdir -p tmp
tar -xf dspbridge_dsp.tar.gz -C tmp
mv tmp/dsp/bdsptools/packages/ti/dspbridge/dsp/doffbuild /opt/doffbuild
rm -rf tmp

libdspbridge

This library is used by the user-space applications.

git clone git://github.com/felipec/libdspbridge.git
cd libdspbridge
make DESTDIR=$rootfs install

Example dsp node

Here is an example dsp node that is simply passing buffers back and forth.

git clone git://github.com/felipec/dsp-dummy.git
make DSP_TOOLS=/opt/dsptools DSP_DOFFBUILD=/opt/doffbuild BRIDGE_DIR=../libdspbridge

As a result you'll have two binaries; dummy.dll64P for dsp-side, and dummy for arm-side.

To load the dynamic node:

/dspbridge/dynreg.out -r /lib/dsp/dummy.dll64P

Now you can run the dummy test application.

More information