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 Links To ---------------------------------- - Seven Woods Audio, Inc. Christopher Moore Concepts, Products, Circuits for Audio Analog/Digital http://www.SevenWoodsAudio.com |