how to use dsp on beagleboard xm?

Hi I'm noob in this topic, I need to know how you can use the DSP on
the bragleboard xm rev B, I use on the beagleboard the Amgstrom OS.
Actually I read the DVSDK but I can't boot the linux OS that TI
provide.

Thanks for all

I started to look into this myself, but I haven’t tried much yet. Here is what I have been looking at:

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

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

I’m sure there are other ways too (like using DSPLINK directly).

Jake

C6Run seems to be the way to go. I did a workshop using c6run earlier
this month. Here [1] are the notes I used on how to set it up. Once
installed, look in the 'examples' folder to see several examples of
how to use it.

--Mark

[1] http://elinux.org/ECE597_Installing_DSP_Development_Tools_c6run

Thanks Max And Mark

I cant make the file to load the loadmodules.sh I tried to run the
example of http://elinux.org/ECE597_Installing_DSP_Development_Tools_c6run
But present the problem of a unknow folder.

in hope for an answer.

this is the error:

[ 235.113067] CMEMK module: built on Dec 29 2010 at 12:41:38
[ 235.118591] Reference Linux version 2.6.32
[ 235.123840] File /home/daniel/toolchains/linuxutils_2_25_05_11/
packages/ti/sdo/linuxutils/cmem/src/moc
[ 235.138519] CMEM Range Overlaps Kernel Physical - allowing overlap
[ 235.145507] CMEM phys_start (0x86300000) overlaps kernel
(0x80000000 -> 0xa0000000)
[ 235.153778] CMEMK Error: Failed to request_mem_region(0x86300000,
30408704)
insmod: error inserting './cmemk.ko': -1 Bad address
[ 235.192352] DSPLINK Module (1.65.00.03) created on Date: Dec 29
2010 Time: 12:41:34

Thanks for all.

Andres J

At boot time you need to tell the kernel what RAM it can use. There
is a parameter you need to pass to the kernel. Unfortunately my
Beagle isn't handy right now so I can't look up what it is.

--Mark

:(, that is a bad notice

I have a Beagleboard xM Rev B, and this is the slightly modified version of a script which I believe sets up the DSP

You seem to be having problems with cmemk, as was I yesterday. I don’t claim any sort of understanding of what I’m doing, however I changed phys_start and phys_end below and it worked! They’re obviously addresses of physical memory, and it gives an error if you give addresses that are in use or don’t exist.

There’s probably a way to see what addresses are available and whatnot, but I find blindly guessing works too :slight_smile:

You can set it up so when booting the kernel only uses the first X MB of memory and the rest is left to the dsp (you still have to give addresses here) but that isn’t necessary! allowOverlap does (i think) allocate the memory in the kernel using malloc so that the dsp can do it’s stuff without being disturbed

I have 512 MB of memory so I tried to allocate something towards the end. With 256 you might try 0x200000000 to 0x210000000, but I really have no idea. Try some values! but keep the difference in between them in check. When I tried any differences larger than 0x10000000 I got complaints.

#!/bin/sh

this is /usr/share/ti/gst/omap3530/loadmodules.sh

CMEM Allocation

1x5250000 Circular buffer

6x829440,1x691200 Video buffers (max D1 PAL)

1x345600 Underlying software components (codecs, etc.)

1x1 Dummy buffer used during final flush

rmmod cmemk 2>/dev/null

modprobe cmemk allowOverlap=1 phys_start=0x470000000 phys_end=0x480000000
pools=1x5250000,6x829440,1x345600,1x691200,1x1

insert DSP/BIOS Link driver

modprobe dsplinkk

insert Local Power Manager driver

modprobe lpm_omap3530

insert SDMA driver

modprobe sdmak

Add something like 'mem=100M' to the command line to limit the RAM
available to Linux to 100M. Then cmemk.ko can load, using the memory
at and above 0x86300000.

I forget I had this on some ppt I did for a workshop.

If you run this on the beagle you will see what the kernel was called
with:
cat /proc/cmdline

Here is what I have:
console=ttyS2,115200n8
mem=80M@0x80000000 mem=384M@0x88000000
mpurate=1000 buddy=none camera=lbcm3m1
vram=16M omapfb.vram=0:8M,1:4M,2:4M
omapfb.mode=dvi:hd720 omapdss.def_disp=dvi
root=/dev/mmcblk0p2 rw rootfstype=ext3
rootwait

The mem= line allocated 2 chunks of memory for linux on the ARM. The
whole in the middle is used to pass data to the DSP.

I hope this helps.

--Mark

mmmm I don't understand where I put that .sh

And the problem is than I cant create the the kernel modules, and the
module loading scripts to the target file system. I follow the example
of http://elinux.org/ECE597_Installing_DSP_Development_Tools_c6run and
the error I put before appear. Now I tried with this example
http://processors.wiki.ti.com/index.php/Getting_Started_With_C6Run_On_Beagleboard

but when I run the command

bitbake base-image console-image

Appear this error:

ERROR: no recipe files to build, check your BBPATH and BBFILES? NOTE:
Psyco JIT Compiler (http://psyco.sf.net) not available. Install it to
increase performance. ERROR: no recipe files to build, check your
BBPATH and BBFILES? FATAL: Openembedded's config sanity checker
detected a potential misconfiguration. Either fix the cause of this
error or at your own risk disable the checker (see sanity.conf).
Following is the list of potential problems / advisories:

Please set TARGET_ARCH directly, or choose a MACHINE or DISTRO that
does so.

Please I newbe in this sorry if I don't understand what you said :frowning:

Is there a way to avoid C6run?

I can't seem to find a way to use dsp/bios link for the XM.

DM3730 isn't mentioned anywhere?
In fact. I cant even find a DSP/Bios link release that says that the
DM3730 is supported.

Just think of the DM3730 as a die-shrink of the OMAP3530, that is what it boils down to.

Why didn't anyone say so earlier!?

Thank-you.

Ok.

Based on your die-shrink statement and the following:
"DM37x processors are software compatible with the OMAP35x generation
of processors and pin-to-pin compatible with Sitara™ AM37x devices
allowing for an easy product migration strategy to higher performing
options. The differentiation between the DM3730 and DM3725 is that the
DM3725 does not have a 3D graphics accelerator. Customers moving to
the DM3730 from the OMAP3530 can look forward to a 50 percent increase
in ARM performance, a 40 percent increase in DSP performance, double
the graphics performance and uses approximately 40 percent less
power." news release on ti for DM3730.

A few clarifications please. Simple Answers are Yes most probably.
But I'd like someone else to confirm as well.

Can I use every single piece of code (DSP/BIOS link, DSPlib, SYS/Bios,
etc) with the label OMAP3530 with DM3730?

To my knowledge, the one huge thing one should look out for is
environment variable changes in uboot.
Everything goes into boot.scr. No saveenv.

Anything that comes to your mind that I should look out for?
Like memory mapping changes. Device I/O Anything?
Especially related to GPIO, SPI driver, Angstrom/QT4-Embedded and the
methods to establish a DSP-ARM link(DSP/BIOS link, C6run, etc)
Cause I'll be using these in the project I'm working on.

To my knowledge, kernel is the code/thing that talks to the hardware.
Can i use the SYS/BIOS kernel for OMAP3530 for DM3730?
Are these two processors THAT compatible!?

Why didn't anyone say so earlier!?

Thank-you.

Ok.

Based on your die-shrink statement and the following:
"DM37x processors are software compatible with the OMAP35x generation
of processors and pin-to-pin compatible with Sitara™ AM37x devices
allowing for an easy product migration strategy to higher performing
options. The differentiation between the DM3730 and DM3725 is that the
DM3725 does not have a 3D graphics accelerator. Customers moving to
the DM3730 from the OMAP3530 can look forward to a 50 percent increase
in ARM performance, a 40 percent increase in DSP performance, double
the graphics performance and uses approximately 40 percent less
power." news release on ti for DM3730.

A few clarifications please. Simple Answers are Yes most probably.
But I'd like someone else to confirm as well.

Can I use every single piece of code (DSP/BIOS link, DSPlib, SYS/Bios,
etc) with the label OMAP3530 with DM3730?

yes

To my knowledge, the one huge thing one should look out for is
environment variable changes in uboot.
Everything goes into boot.scr. No saveenv.

that isn't dependant on the omap, but the memory put on top

Anything that comes to your mind that I should look out for?
Like memory mapping changes. Device I/O Anything?

no, it's the same

Especially related to GPIO, SPI driver, Angstrom/QT4-Embedded and the
methods to establish a DSP-ARM link(DSP/BIOS link, C6run, etc)
Cause I'll be using these in the project I'm working on.

Same again, no real changes

To my knowledge, kernel is the code/thing that talks to the hardware.
Can i use the SYS/BIOS kernel for OMAP3530 for DM3730?
Are these two processors THAT compatible!?

Yes, thinking 3730 as a die shrink is the easiest way. The differences are:

updated a8 core
updated sgx core
updated dss block
updated musb block
'fast' dss pins moved

all of it, except the pins are just bugfixes for the silicon, no real changes.

From a sw point of view it's the same thing, just running faster. That's why you can share a single angstrom uSD card between a c4 and xm beagle

Amazing!

There is tons of documentation for the original beagle and omap that I
was ignoring!

Thank-you very much.

Can I use the Pins directly with the DSP ? Is there some tips for that?