[Speex-dev] Blackfin port on Visual DSP, Michael Shatz ?

Stéphane Lesage stephane.lesage at ateis-international.com
Fri Nov 23 10:50:10 PST 2007





> -----Original Message-----
> From: Jean-Marc Valin [mailto:jean-marc.valin at usherbrooke.ca] 
> Sent: Thursday, November 22, 2007 12:16 AM
> To: Stéphane Lesage
> Subject: Re: [Speex-dev] Blackfin port on Visual DSP, Michael Shatz ?
> 
> (en passant, tu es francophone?)

oui, français, travaillant pour une société suisse ;-)

> 
> Stéphane Lesage a écrit :
> > It's not easy for me to use testenc.
> > (I have no file-system and limited memory)
> 
> Fair enough.

Well, actually, I found-out that the stdio lib can access my PC file-system
through the JTAG interface.
So I can eventually try this.

> Hmm... let me investigate a bit further.
> You mean you disabled blackfin assembly optimisations? Do you 
> see the same results on a PC. I suspect it could be an 
> uninitialised memory problem somewhere.

Yes, I currently have no ASM optimizations, it's the standard FIXED_POINT
code.
I didn't test on PC linux/win32, as other users have no trouble on these
platform.

I looked at the sources and discovered the different temp-memory allocation
schemes.
After compiling with VAR_ARRAYS, it's better with revision 12173.
-> working for 2-3 VoIP calls (init & destroy for each call)
-> not working again for next calls

With lastest revision from SVN, sometimes it only worked once.
Now it's not working anymore.

*** WITH preprocessor initialized and called (but nothing activated in it)
***
-> same as echo-canceller, it's working.


So I think you are right on the memory init problem.

Do you think it comes from my run-time libraries ?
Or is it a mistake in Speex ?


> >>> The Visual DSP++ assembler/compiler/linker tools.
> >> What does that (adding support) involve?
> > 
> > It involves a different ASM implementation.
> > - intruction syntax is the same
> > - some constraints are different
> 
> How different?

Not so much, it's easy to handle,
but would require specific syntax.

> > - 'dynamic' labels are not available on VDSP (when you use 
> an inline 
> > several times, the gcc compiler can do some kind of incrementation)
> 
> What would you use instead?

hehe, that's where I have trouble.
No documentation on how to do this...
I guess I will have to use PC-relative addressing-mode and compute the
offset myself.

-> This would compile also on the GCC.

Alternatively and because only some functions are used several times,
and AFAIR it's mainly the divisions,
I can handle this with 3 solutions:
- just use the standard syntax to let the compiler use its library.
- use built-in functions (can also do this for MUL/MAC functions)
- for bigger functions, just de-inline them !

-- 
Stephane



More information about the Speex-dev mailing list