Sign in

username:

password:



Not a member?

Search motoroladsp



Search tips

Subscribe to motoroladsp



motoroladsp by Keywords

56303 | 563xx | 5680 | 56805 | 5680x | 56F80 | 56F800DEMO | 56F805 | 56f807 | 56F830 | ADC | Bootloader | Codec | CodeWarrior | CW5 | CW6 | Debugger | DSP56303 | DSP56303EVM | DSP563xx | DSP5680 | DSP56800 | DSP56807 | DSP56858 | DSP56858EVM | DSP56F803 | DSP56F805 | DSP56F807 | DSP56F80x | DSP56F826 | DSP56F827 | DSP56F8xx | EVM | FFT | Flash_over_jtag | GPIO | Interrupt | Interrupts | JTAG | LCD | Linker | MCF5307 | Metrowerks | Modulus | MSCAN | PCMaster | PWM | Quad | Rif | RTOS | SDK | SPI

Discussion Groups

Discussion Groups | Freescale DSPs | Re: large buffer

Technical discussions about Freescale (Motorola) DSPs (including the DSP56000, DSP56300, DSP56600, 56800 DSPs).

  

Post a new Thread

large buffer - Andrey Gusev - Jul 26 11:45:00 2004



Hi all.
I need to place a large buffer in external RAM, let's say:
int buffer[40000];
I declare it this way and it perfectly fits in memory. But when I
want to make a reference to any element of this array above 32767th,
for example: buffer[32768] = 0, the linker states an error: "Symbol
Fbuffer referenced ... is to far away for a R_56800_WORD
relocation ..."
I use CodeWarrior 5.0.4 & DSP56F805 with 64k external RAM.
Does anybody know how to avoid this error?
Thank you.





(You need to be a member of motoroladsp -- send a blank email to motoroladsp-subscribe@yahoogroups.com )

Re: large buffer - Christopher Moore - Jul 26 15:25:00 2004

Hello,

I only know about the 563xx series, but with those parts you can't
access a modular buffer larger than 32768 because of the restricted
range of the pointer register (rn) and/or the modulus (m) register.

It makes things awkward for those of us who want a large buffer.

Chris Moore On Mon, 26 Jul 2004 11:45:16 -0000, Andrey Gusev wrote:
Hi all.
I need to place a large buffer in external RAM, let's say:
int buffer[40000];
I declare it this way and it perfectly fits in memory. But when I
want to make a reference to any element of this array above 32767th,
for example: buffer[32768] = 0, the linker states an error: "Symbol
Fbuffer referenced ... is to far away for a R_56800_WORD
relocation ..."
I use CodeWarrior 5.0.4 & DSP56F805 with 64k external RAM.
Does anybody know how to avoid this error?
Thank you.
------------------------ Yahoo! Groups Sponsor
--------------------~-->
Yahoo! Domains - Claim yours for only $14.70
http://us.click.yahoo.com/Z1wmxD/DREIAA/yQLSAA/PNArlB/TM
--------------------------------------------------------------------~- _____________________________________
/groups.php3

Yahoo! Groups Links
-----------------------------------------------------------------------
Seven Woods Audio, Inc. Christopher Moore
Concepts, Products, Circuits for Audio Analog/Digital

http://www.SevenWoodsAudio.com




(You need to be a member of motoroladsp -- send a blank email to motoroladsp-subscribe@yahoogroups.com )

RE: large buffer - Ebersman, Howard - Jul 26 15:46:00 2004

This doesn't make much sense. The 563xx is a 24 bit processor, so a long instruction should support up to 2^23 offsets to a pointer register.
 
I suspect that it is some kind of compiler related limitation, likely since the tools were likely ported from a 16 bit processor.
 
Howard
-----Original Message-----
From: Christopher Moore [mailto:m...@sevenwoodsaudio.com]
Sent: Monday, July 26, 2004 11:26 AM
To: g...@rambler.ru; m...@yahoogroups.com
Subject: Re: [motoroladsp] large buffer

Hello,

I only know about the 563xx series, but with those parts you can't
access a modular buffer larger than 32768 because of the restricted
range of the pointer register (rn) and/or the modulus (m) register.

It makes things awkward for those of us who want a large buffer.

Chris MooreOn Mon, 26 Jul 2004 11:45:16 -0000, Andrey Gusev wrote:
Hi all.
I need to place a large buffer in external RAM, let's say:
int buffer[40000];
I declare it this way and it perfectly fits in memory. But when I
want to make a reference to any element of this array above 32767th,
for example: buffer[32768] = 0, the linker states an error: "Symbol
Fbuffer referenced ... is to far away for a R_56800_WORD
relocation ..."
I use CodeWarrior 5.0.4 & DSP56F805 with 64k external RAM.
Does anybody know how to avoid this error?
Thank you.
------------------------ Yahoo! Groups Sponsor
--------------------~-->
Yahoo! Domains - Claim yours for only $14.70
http://us.click.yahoo.com/Z1wmxD/DREIAA/yQLSAA/PNArlB/TM
--------------------------------------------------------------------~-_______________________ ______________
/groups.php3

Yahoo! Groups Links
-----------------------------------------------------------------------
Seven Woods Audio, Inc.                Christopher Moore
Concepts, Products, Circuits for Audio    Analog/Digital
m...@SevenWoodsAudio.com
http://www.SevenWoodsAudio.com



_____________________________________
/groups.php3





(You need to be a member of motoroladsp -- send a blank email to motoroladsp-subscribe@yahoogroups.com )

Re: large buffer - Stefan Stenzel - Jul 26 16:17:00 2004

Moin,

Ebersman, Howard wrote:

> This doesn't make much sense. The 563xx is a 24 bit processor, so a long
> instruction should support up to 2^23 offsets to a pointer register.

The 56000 familiy had only 16 bit addresses, and I think they kept the
modulo addressing this way for code compatibility, perhaps it was pure
lazyness. Surely quite annoying nowadays.

> I suspect that it is some kind of compiler related limitation, likely
> since the tools were likely ported from a 16 bit processor.

I think it has been the other way, the 16-bit DSP are a descendant of
the 24-bit ones.

Stefan





(You need to be a member of motoroladsp -- send a blank email to motoroladsp-subscribe@yahoogroups.com )

RE: large buffer - Help 56800 - Jul 26 16:40:00 2004

I have tried this with the latest CW and received the same error. This looks like CW bug. You should file a bug report with Metrowerks: www.metrowerks.com/support

 

Leonard

 

-----Original Message-----
From: Andrey Gusev [mailto:g...@rambler.ru]
Sent: Monday, July 26, 2004 4:45 AM
To: m...@yahoogroups.com
Subject: [motoroladsp] large buffer

 

Hi all.

I need to place a large buffer in external RAM, let's say:

int buffer[40000];

I declare it this way and it perfectly fits in memory. But when I

want to make a reference to any element of this array above 32767th,

for example: buffer[32768] = 0, the linker states an error: "Symbol

Fbuffer referenced ... is to far away for a R_56800_WORD

relocation ..."

I use CodeWarrior 5.0.4 & DSP56F805 with 64k external RAM.

Does anybody know how to avoid this error?

Thank you.

 

 

 

------------------------ Yahoo! Groups Sponsor --------------------~-->

Yahoo! Domains - Claim yours for only $14.70

http://us.click.yahoo.com/Z1wmxD/DREIAA/yQLSAA/PNArlB/TM

--------------------------------------------------------------------~->

 

_____________________________________

/groups.php3

 

 





(You need to be a member of motoroladsp -- send a blank email to motoroladsp-subscribe@yahoogroups.com )

RE: large buffer - Christopher Moore - Jul 26 18:08:00 2004


>From the Motorola DSP56300 Family Manual, pages 4-12 to 4-13:

"4.5.3 Modulo Modifier (Mn = Modulus-1)
Address modification is performed using modulo M, where M ranges from
2 to 32,768.

4.5.4 Multiple Wrap-Around Modulo Modifier
"....The address modification is performed using modulo M, where M is
a power of 2 in the range from 2^1 to 2^14."

Maybe there are other addressing modes that will work with a larger
buffer, but I don't think the classic modular buffer larger than 32768
can be implemented with the AGU facilities. If there is a way, I'd
like to know.

I do notice that there is a Linear Modifier address mode (section
4.5.1) that seems to work modulo 16,777,216, but I haven't tried it.

Chris Moore On Mon, 26 Jul 2004 11:46:51 -0400, Ebersman, Howard wrote:

This doesn't make much sense. The 563xx is a 24 bit processor, so a
long instruction should support up to 2^23 offsets to a pointer
register.

I suspect that it is some kind of compiler related limitation, likely
since the tools were likely ported from a 16 bit processor.

Howard
-----Original Message-----
From: Christopher Moore [mailto:]
Sent: Monday, July 26, 2004 11:26 AM
To: ;
Subject: Re: [motoroladsp] large buffer

Hello,

I only know about the 563xx series, but with those parts you can't
access a modular buffer larger than 32768 because of the restricted
range of the pointer register (rn) and/or the modulus (m) register.

It makes things awkward for those of us who want a large buffer.

Chris Moore On Mon, 26 Jul 2004 11:45:16 -0000, Andrey Gusev wrote:
Hi all.
I need to place a large buffer in external RAM, let's say:
int buffer[40000];
I declare it this way and it perfectly fits in memory. But when I
want to make a reference to any element of this array above 32767th,
for example: buffer[32768] = 0, the linker states an error: "Symbol
Fbuffer referenced ... is to far away for a R_56800_WORD
relocation ..."
I use CodeWarrior 5.0.4 & DSP56F805 with 64k external RAM.
Does anybody know how to avoid this error?
Thank you.
------------------------ Yahoo! Groups Sponsor
--------------------~-->
Yahoo! Domains - Claim yours for only $14.70
http://us.click.yahoo.com/Z1wmxD/DREIAA/yQLSAA/PNArlB/TM
--------------------------------------------------------------------~- _____________________________________
/groups.php3

Yahoo! Groups Links
----------------------------------------------------------------------
-
Seven Woods Audio, Inc. Christopher Moore
Concepts, Products, Circuits for Audio Analog/Digital

http://www.SevenWoodsAudio.com
_____________________________________
/groups.php3

Yahoo! Groups Sponsor

ADVERTISEMENT


Yahoo! Groups Links

To
----------------------------------------------------------------------
-
Seven Woods Audio, Inc. Christopher Moore
Concepts, Products, Circuits for Audio Analog/Digital

http://www.SevenWoodsAudio.com




(You need to be a member of motoroladsp -- send a blank email to motoroladsp-subscribe@yahoogroups.com )

RE: large buffer - Ebersman, Howard - Jul 26 19:14:00 2004

You do not need a modulo buffer to handle an array in "C". You can just use
a long displacement or a 24 bit linear modifier. See sections 4.4.3 and
4.5.1.

Obviously, you can also do direct math instead of using the address pointers
and offsets.

Howard
-----Original Message-----
From: Christopher Moore [mailto:]
Sent: Monday, July 26, 2004 2:09 PM
To: ; ;

Subject: RE: [motoroladsp] large buffer
>From the Motorola DSP56300 Family Manual, pages 4-12 to 4-13:

"4.5.3 Modulo Modifier (Mn = Modulus-1)
Address modification is performed using modulo M, where M ranges from
2 to 32,768.

4.5.4 Multiple Wrap-Around Modulo Modifier
"....The address modification is performed using modulo M, where M is
a power of 2 in the range from 2^1 to 2^14."

Maybe there are other addressing modes that will work with a larger
buffer, but I don't think the classic modular buffer larger than 32768
can be implemented with the AGU facilities. If there is a way, I'd
like to know.

I do notice that there is a Linear Modifier address mode (section
4.5.1) that seems to work modulo 16,777,216, but I haven't tried it.

Chris Moore On Mon, 26 Jul 2004 11:46:51 -0400, Ebersman, Howard wrote:

This doesn't make much sense. The 563xx is a 24 bit processor, so a
long instruction should support up to 2^23 offsets to a pointer
register.

I suspect that it is some kind of compiler related limitation, likely
since the tools were likely ported from a 16 bit processor.

Howard
-----Original Message-----
From: Christopher Moore [mailto:]
Sent: Monday, July 26, 2004 11:26 AM
To: ;
Subject: Re: [motoroladsp] large buffer

Hello,

I only know about the 563xx series, but with those parts you can't
access a modular buffer larger than 32768 because of the restricted
range of the pointer register (rn) and/or the modulus (m) register.

It makes things awkward for those of us who want a large buffer.

Chris Moore On Mon, 26 Jul 2004 11:45:16 -0000, Andrey Gusev wrote:
Hi all.
I need to place a large buffer in external RAM, let's say:
int buffer[40000];
I declare it this way and it perfectly fits in memory. But when I
want to make a reference to any element of this array above 32767th,
for example: buffer[32768] = 0, the linker states an error: "Symbol
Fbuffer referenced ... is to far away for a R_56800_WORD
relocation ..."
I use CodeWarrior 5.0.4 & DSP56F805 with 64k external RAM.
Does anybody know how to avoid this error?
Thank you.
------------------------ Yahoo! Groups Sponsor
--------------------~-->
Yahoo! Domains - Claim yours for only $14.70
http://us.click.yahoo.com/Z1wmxD/DREIAA/yQLSAA/PNArlB/TM
--------------------------------------------------------------------~- _____________________________________
/groups.php3

Yahoo! Groups Links
----------------------------------------------------------------------
-
Seven Woods Audio, Inc. Christopher Moore
Concepts, Products, Circuits for Audio Analog/Digital

http://www.SevenWoodsAudio.com
_____________________________________
/groups.php3

Yahoo! Groups Sponsor

ADVERTISEMENT


Yahoo! Groups Links

To
----------------------------------------------------------------------
-
Seven Woods Audio, Inc. Christopher Moore
Concepts, Products, Circuits for Audio Analog/Digital

http://www.SevenWoodsAudio.com




(You need to be a member of motoroladsp -- send a blank email to motoroladsp-subscribe@yahoogroups.com )