Sign in

username:

password:



Not a member?

Search adsp



Search tips

Subscribe to adsp



adsp by Keywords

AD1819 | AD7332 | ADSP-2106 | ADSP-21060 | ADSP-21065L | ADSP-2116 | ADSP-21160M | ADSP-2181 | ADSP-218x | ADSP-219 | ADSP-2199 | ADSP219 | BF531 | BF532 | BF533 | BF535 | Blackfin | FFT | JTAG | LDF | SDRAM | SHARC | SPORT | UART | VDSP++ | VisualDSP

Discussion Groups

Discussion Groups | Analog Devices DSPs | Out of memory in output section 'seg_imu' in processor 'p0'

Technical discussions related to Analog Devices DSPs (including Blackfin, TigerSHARC, SHARC and ADSP-21xx DSPs).

  

Post a new Thread

Out of memory in output section 'seg_imu' in processor 'p0' - m_z_...@yahoo.com - May 20 7:36:03 2008



HI 
I am using ADSP-21065L and encounter with the following error
/////////////// ERROR DURING COMPILATION  /////////////////
24467 bytes eliminated in processor 'p0'

For more details, see 'linker_log.xml' in the output directory.
[Error li1040] ".\INS30.LDF":149 Out of memory in output section 'seg_imu' in
processor 'p0'
        Total of 0x2a5 word(s) were not mapped.
For more details, see 'linker_log.xml' in the output directory.

Linker finished with 1 error
cc3089: fatal error: Link failed
Tool failed with exit/exception code: 1.
Build was unsuccessful.
/////////////////////////////////////////////

Whereas i have the following setting in my LDF file
//////////////// SETTING IN LDF FILE  ////////////////////////////
 // the first 512 words are reserved for BIOS code
    // the remaining ext. SRAM can be used for data and program code.
    // to link data to ext. memory, use the segment directive, e.g.
    //   static segment ("ext_dmda") int ext_var[..];
    // to link a function to ext. memory, use the segment directive, e.g.
    //   segment ("ext_pmco") int ext_func (int..)
    //   {  ...  }
    //   please note that an external code section cannot exceed 64K
    //   you may however specify multiple external code sections
    //   ( this is important only for larger SRAM: 256K x 32 )
    //
    //   each external program word requires two 32 bit memory locations

    // the following definitions allocate
    //  15872 words external program code
    //  16384 words external data
    //  16384 words heap

    ext_bios { TYPE(PM RAM)  START(0x00020000) END(0x000201FF) WIDTH(32) }
    ext_pmco { TYPE(PM RAM)  START(0x00020200) END(0x00023FFF) WIDTH(32) }
    ext_dmda { TYPE(DM RAM)  START(0x00028000) END(0x0002BFFF) WIDTH(32) }

		   seg_imu
	   {
		   INPUT_SECTIONS( $LIBRARIES(seg_pmco))
	   } >imu
////////////////////////////////////////////////////////////////

if any body knows that kindly help me 

Rain

------------------------------------



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

Re: Out of memory in output section 'seg_imu' in processor 'p0' - Jaime Andres Aranguren Cardona - May 20 17:40:59 2008

Hello Rain (I suppose that is your name, out of your signature)
The messages say that your section IMU was not allocated enough memory for the amount of
memory.
It seems to me that the snippet of the LDF that you attached does not have enough information
for one to advice what to do next, since you are not showing how big are seg_imu and seg_pmco.
But in any case, you will have to modify the LDF to allocate more memory for those segments,
which you can do either on the source code of the LDF itself or using the ExpertLinker.
You needed 677 words for this kind of memory (0x2A5), which you did not seem to have.
Regards

 
Jaime Andrés Aranguren Cardona
j...@ieee.org
j...@computer.org

----- Original Message ----
From: "m...@yahoo.com" <m...@yahoo.com>
To: a...@yahoogroups.com
Sent: Tuesday, May 20, 2008 1:08:29 AM
Subject: [adsp] Out of memory in output section 'seg_imu' in processor 'p0'
HI 
I am using ADSP-21065L and encounter with the following error
//////////// /// ERROR DURING COMPILATION //////////// /////
24467 bytes eliminated in processor 'p0'

For more details, see 'linker_log. xml' in the output directory.

[Error li1040] ".\INS30.LDF" :149 Out of memory in output section 'seg_imu' in
processor 'p0'
Total of 0x2a5 word(s) were not mapped.
For more details, see 'linker_log. xml' in the output directory.

Linker finished with 1 error
cc3089: fatal error: Link failed
Tool failed with exit/exception code: 1.
Build was unsuccessful.
//////////// ///////// ///////// ///////// //////

Whereas i have the following setting in my LDF file
//////////// //// SETTING IN LDF FILE //////////// ///////// ///////
// the first 512 words are reserved for BIOS code
// the remaining ext. SRAM can be used for data and program code.
// to link data to ext. memory, use the segment directive, e.g.
// static segment ("ext_dmda") int ext_var[..];
// to link a function to ext. memory, use the segment directive, e.g.
// segment ("ext_pmco") int ext_func (int..)
// { ... }
// please note that an external code section cannot exceed 64K
// you may however specify multiple external code sections
// ( this is important only for larger SRAM: 256K x 32 )
//
// each external program word requires two 32 bit memory locations

// the following definitions allocate
// 15872 words external program code
// 16384 words external data
// 16384 words heap

ext_bios { TYPE(PM RAM) START(0x00020000) END(0x000201FF) WIDTH(32) }
ext_pmco { TYPE(PM RAM) START(0x00020200) END(0x00023FFF) WIDTH(32) }
ext_dmda { TYPE(DM RAM) START(0x00028000) END(0x0002BFFF) WIDTH(32) }

seg_imu
{
INPUT_SECTIONS( $LIBRARIES(seg_ pmco))
} >imu
//////////// ///////// ///////// ///////// ///////// ///////// ///////

if any body knows that kindly help me 

Rain



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

Re: Out of memory in output section 'seg_imu' in processor 'p0' - Muhammad Farooqui - May 21 6:18:22 2008







=20=20=20=20=20=20 __._,_.___

NEW!  You can now post a message or access and search the archives of = this group on DSPRelated.com:
http://www.dsprelat= ed.com/groups/adsp/1.php

_____________________________________
Note: If you do a simple "reply" with your email client, only the= author of this message will receive your answer.  You need to do a &q= uot;reply all" if you want your answer to be distributed to the entire= group.

_____________________________________
About this discussion group:

Archives:  htt= p://www.dsprelated.com/groups/adsp/1.php

To Post:  Send an email to a...@yahoogroups.com

Other DSP Related Groups: = http://www.dsprelated.com/groups.php


<= br> =20=20
Your email settings: Individual Email|Traditional
Change settings via the Web (Ya= hoo! ID required)
Change settings via email: Switch delivery to Daily Digest |= Switch to Fully Featured
Visit Your Group=20 | Yahoo! Groups Terms of Use | Unsubscribe=20 =20

__,_._,___

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

Re: Out of memory in output section 'seg_imu' in processor 'p0' - Mike Rosing - May 21 11:15:08 2008

On Wed, 21 May 2008, Muhammad Farooqui wrote:

>
> First of all I would like to say thank to you that you show interest in that problem.
>
> Basically DSP code was developed by another person who is not accessible now. And now my
task is to
> add some more functionality in previous developed code. So I developed some code (which is
working
> fine) and when I add my new code in previous developed cod  so I face the following
problems.
>
> I paste the whole LDF file here.
> MEMORY
> {
>    seg_rth  { TYPE(PM RAM) START(0x00008000) END(0x000080ff) WIDTH(48) }
>    int_bios { TYPE(PM RAM) START(0x00008100) END(0x000081af) WIDTH(48) }
>    seg_init { TYPE(PM RAM) START(0x000081b0) END(0x000081bf) WIDTH(48) }
>                 seg_int_code { TYPE(PM RAM) START(0x000081c0) END(0x00008297) WIDTH(48) }
>    bdf      { TYPE(PM RAM) START(0x000082c0) END(0x000097ff) WIDTH(48) }

>                 imu      { TYPE(PM RAM) START(0x0000C000) END(0x0000Cce5) WIDTH(48) }
  this is important----------------------------------------------------^^^

>                 filter   { TYPE(PM RAM) START(0x0000d4e6) END(0x0000d537) WIDTH(32) }
>                 seg_dmda { TYPE(DM RAM) START(0x0000d538) END(0x0000Dd4f) WIDTH(32) }
>                 seg_stak { TYPE(DM RAM) START(0x0000Dd50) END(0x0000Dffd) WIDTH(32) }
>                 seg_heap { TYPE(DM RAM) START(0x0000Dffe) END(0x0000Dfff) WIDTH(32) }

Your error said you needed 2a5 more.  So CCe5 + 2A5 = cf8a.  Since the
next ram space looks like it starts at d4e6, you have plenty of room.

Definitly read up on the ldf.  It gives you a lot of power on how to set
up your memory spaces.

Patience, persistence, truth,
Dr. mike
------------------------------------



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

Re: Out of memory in output section 'seg_imu' in processor 'p0' - Jaime Andres Aranguren Cardona - May 21 17:01:49 2008

Hello, Rain.
Thanks for the comment. The greatest thing with newsgroups / mailing lists =
is to have collaborative work from people around the world.
I am replying with copy to the list, since it might be useful for other rea=
ders, too.
The key to your problem is this piece of code:
imu=A0=A0=A0=A0=A0 { TYPE(PM RAM) START(0x0000C000) END(0x0000Cce5)
WIDTH(48) }
On it, you=A0are declaring / reserving 0xCE5 =3D 3301 words of 48 bits of w=
idth, for the section "imu", which you get mapped=A0later on, in:
seg_imu
=A0=A0=A0=A0=A0 {
=A0=A0=A0=A0=A0=A0=A0=A0=A0 INPUT_SECTIONS( $LIBRARIES(seg_pmco))
=A0=A0=A0=A0=A0 } >imu

This is the section that the liker complains=A0about not being able to=A0fi=
t the code from libraries which is supposed to map.
So, you have to increase the memory reservation for imu, modifying
imu=A0=A0=A0=A0=A0 { TYPE(PM RAM) START(0x0000C000) END(0x0000Cce5)
WIDTH(48) }

Basically, increase the end address. But beware of blocks of memory, and th=
e alignment issues.... Given the mixed 48/32/16 datasizes possible in SHARC=
 memory, the addressing is not linear across them. Expert Linker is your fr=
iend here, since will allow you to drag and drop, and it=A0takes care of al=
ignment, etc. Or if you want to do by hand, read the documentation on the A=
DSP-21065L Processor Reference aka Hardware Reference Manual.
I hope this=A0helps you a bit.
Regards,
=A0
Jaime Andr=E9s Aranguren Cardona
j...@ieee.org
j...@computer.org
----- Original Message ----
From: m_z_farooqui <m...@yahoo.com>
To: Jaime Andres Aranguren Cardona <j...@computer.org>
Sent: Wednesday, May 21, 2008 3:19:52 AM
Subject: Re: Out of memory in output section 'seg_imu' in processor 'p0'

First of all I would like to say thank to you that you show interest
in that problem.
Basically DSP code was developed by another person who is not
accessible now. And now my task is to add some more functionality in
previous developed code. So I developed some code (which is working
fine) and when I add my new code in previous developed cod=A0 so I face
the following problems.
I paste the whole LDF file here.

ARCHITECTURE(ADSP-21065L)

//
// ADSP-21065L Memory Map:
//=A0 ------------------------------------------------
//=A0 Internal memory=A0 0x0000 0000 to 0x0007 ffff
//=A0 ------------------------------------------------
//=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 0x0000 0000 to 0x0000 00ff=A0 IOP=
 Regs
//=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 0x0000 0100 to 0x0000 01ff=A0 IOP=
 Regs of
Processor ID 001
//=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 0x0000 0200 to 0x0000 02ff=A0 IOP=
 Regs of
Processor ID 002
//=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 0x0000 0300 to 0x0000 07ff=A0 Res=
erved
//=A0 =A0 =A0 =A0 =A0 Block 0=A0 0x0000 8000 to 0x0000 9fff=A0 Normal Word =
(32/48)
Addresses
//=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 (0x0000 8000 to 0x0000 97ff) 48-bit w=
ords
//=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 (0x0000 8000 to 0x0000 9fff) 32-bit w=
ords
//=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0 0x0000 A000 to 0x00=
00 Bfff
Reserved
//=A0 =A0 =A0 =A0 =A0 Block 1=A0 0x0000 C000 to 0x0000 Dfff=A0 Normal Word =
(32/48)
Addresses
//=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 (0x0000 C000 to 0x0000 Cfff) 48-bit w=
ords
//=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 (0x0000 C000 to 0x0000 Dfff) 32-bit w=
ords
//=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0 0x0000 E000 to 0x00=
00 ffff
Reserved
//=A0 =A0 =A0 =A0 =A0 Block 0=A0 0x0001 0000 to 0x0001 3fff=A0 Short Word (=
16)
Addresses
//=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0 0x0001 4000 to 0x00=
01 7fff
Reserved
//=A0 =A0 =A0 =A0 =A0 Block 1=A0 0x0001 8000 to 0x0001 Bfff=A0 Short Word (=
16)
Addresses
//=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0 0x0001 C000 to 0x00=
01 ffff
Reserved
//=A0 ------------------------------------------------
//=A0 External memory=A0 0x0002 0000 to 0x03ff ffff
//=A0 ------------------------------------------------
//=A0 External Bank 0=A0 0x0002 0000 to 0x00ff ffff
//=A0 External Bank 1=A0 0x0100 0000 to 0x01ff ffff
//=A0 External Bank 2=A0 0x0200 0000 to 0x02ff ffff
//=A0 External Bank 3=A0 0x0300 0000 to 0x03ff ffff
//
// This architecture file allocates:
//=A0 =A0 =A0 =A0 Internal 256 words of run-time header in memory block 0
//=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 16 words of initialization code in me=
mory block 0
//=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 3.8K words of C code space in memory bloc=
k 0
//=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 2K words of C PM data space in memory=
 block 0
//=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 4K words of C DM data space in memory=
 block 1
//=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 1.25K words of C heap space in memory blo=
ck 1
//=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 2.75K words of C stack space in memory bl=
ock 1

SEARCH_DIR( $ADI_DSP\21k\lib )

#ifdef _ADI_THREADS
#ifdef __ADI_LIBEH__
$LIBRARIES =3D libehmt.dlb, libcmt.dlb, libdsp.dlb, libiomt.dlb;
#else
$LIBRARIES =3D libcmt.dlb, libdsp.dlb, libiomt.dlb;
#endif
#else
#ifdef __ADI_LIBEH__
$LIBRARIES =3D libeh.dlb, libc.dlb, libdsp.dlb, libio.dlb;
#else
$LIBRARIES =3D libc.dlb, libdsp.dlb, libio.dlb;
#endif
#endif

// Libraries from the command line are included in
COMMAND_LINE_OBJECTS.
#ifndef EZKIT_MONITOR
#ifdef __ADI_LIBEH__
#define CRT_HDR 065L_hdr_adamagic.doj
#else
#define CRT_HDR 065L_hdr.doj
#endif
#else
#define CRT_HDR 065L_hdr_ezkit.doj
#endif
$OBJECTS =3D CRT_HDR, $COMMAND_LINE_OBJECTS;

MEMORY
{

=A0 seg_rth=A0 { TYPE(PM RAM) START(0x00008000) END(0x000080ff) WIDTH
(48) }
=A0 int_bios { TYPE(PM RAM) START(0x00008100) END(0x000081af) WIDTH
(48) }
=A0 seg_init { TYPE(PM RAM) START(0x000081b0) END(0x000081bf) WIDTH
(48) }
=A0=A0=A0 seg_int_code { TYPE(PM RAM) START(0x000081c0) END(0x00008297)
WIDTH(48) }
=A0 bdf=A0 =A0 =A0 { TYPE(PM RAM) START(0x000082c0) END(0x000097ff) WIDTH
(48) }
=A0=A0=A0 imu=A0 =A0 =A0 { TYPE(PM RAM) START(0x0000C000) END(0x0000Cce5)
WIDTH(48) }
=A0=A0=A0 filter=A0 { TYPE(PM RAM) START(0x0000d4e6) END(0x0000d537)
WIDTH(32) }
//=A0=A0=A0 seg_dmda { TYPE(DM RAM) START(0x0000d538) END(0x0000Ddff)
WIDTH(32) }
=A0=A0=A0 seg_dmda { TYPE(DM RAM) START(0x0000d538) END(0x0000Dd4f)
WIDTH(32) }
//=A0=A0=A0 seg_stak { TYPE(DM RAM) START(0x0000De00) END(0x0000Dffd)
WIDTH(32) }
=A0=A0=A0 seg_stak { TYPE(DM RAM) START(0x0000Dd50) END(0x0000Dffd)
WIDTH(32) }
=A0=A0=A0 seg_heap { TYPE(DM RAM) START(0x0000Dffe) END(0x0000Dfff)
WIDTH(32) }

//
**********************************************************************
****
// EXTERNAL SRAM (64K x 32 bits)
//
**********************************************************************
****

=A0 =A0 // the first 512 words are reserved for BIOS code
=A0 =A0 // the remaining ext. SRAM can be used for data and program code.
=A0 =A0 // to link data to ext. memory, use the segment directive, e.g.
=A0 =A0 //=A0 static segment ("ext_dmda") int ext_var[..];
=A0 =A0 // to link a function to ext. memory, use the segment directive,
e.g.
=A0 =A0 //=A0 segment ("ext_pmco") int ext_func (int..)
=A0 =A0 //=A0 {=A0 ...=A0 }
=A0 =A0 //=A0 please note that an external code section cannot exceed 64K
=A0 =A0 //=A0 you may however specify multiple external code sections
=A0 =A0 //=A0 ( this is important only for larger SRAM: 256K x 32 )
=A0 =A0 //
=A0 =A0 //=A0 each external program word requires two 32 bit memory
locations

=A0 =A0 // the following definitions allocate
=A0 =A0 //=A0 15872 words external program code
=A0 =A0 //=A0 16384 words external data
=A0 =A0 //=A0 16384 words heap

=A0 =A0 ext_bios { TYPE(PM RAM)=A0 START(0x00020000) END(0x000201FF) WIDTH
(32) }
=A0 =A0 ext_pmco { TYPE(PM RAM)=A0 START(0x00020200) END(0x00023FFF) WIDTH
(32) }
=A0 =A0 ext_dmda { TYPE(DM RAM)=A0 START(0x00028000) END(0x0002BFFF) WIDTH
(32) }
//=A0 seg_heap { TYPE(DM RAM)=A0 START(0x0002C000) END(0x0002FFFF) WIDTH
(32) }

}

PROCESSOR p0
{
//=A0 =A0 KEEP(
_main,___ctor_NULL_marker,___lib_end_of_heap_descriptions )
=A0 =A0 LINK_AGAINST( $COMMAND_LINE_LINK_AGAINST)
=A0 =A0 OUTPUT( $COMMAND_LINE_OUTPUT_FILE )

=A0 =A0 SECTIONS
=A0 =A0 {

=A0=A0=A0 =A0=A0=A0 // .text output section
=A0=A0=A0 =A0=A0=A0 seg_rth
=A0=A0=A0 =A0=A0=A0 {
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 INPUT_SECTIONS( $OBJECTS(seg_rth) $LIBRARIES
(seg_rth))
=A0=A0=A0 =A0=A0=A0 } >seg_rth

=A0=A0=A0 =A0=A0=A0 seg_init
=A0=A0=A0 =A0=A0=A0 {
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 INPUT_SECTIONS( $OBJECTS(seg_init) $LIBRARIES
(seg_init))
=A0=A0=A0 =A0=A0=A0 } >seg_init

=A0=A0=A0 =A0=A0=A0 seg_int_code
=A0=A0=A0 =A0=A0=A0 {
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 INPUT_SECTIONS( $OBJECTS(seg_int_code)
$LIBRARIES(seg_int_code))
=A0=A0=A0 =A0=A0=A0 } >seg_int_code

=A0=A0=A0 =A0=A0=A0 seg_bdf
=A0=A0=A0 =A0=A0=A0 {
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 INPUT_SECTIONS( bdf.doj(seg_pmco))
=A0=A0=A0 =A0=A0=A0 } >bdf

=A0=A0=A0 =A0 seg_imu
=A0=A0=A0 =A0 {
=A0=A0=A0 =A0=A0=A0 =A0 INPUT_SECTIONS( $LIBRARIES(seg_pmco))
=A0=A0=A0 =A0 } >imu

=A0=A0=A0 =A0=A0=A0 seg_dmda
=A0=A0=A0 =A0=A0=A0 {
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 INPUT_SECTIONS( $OBJECTS(seg_dmda) $LIBRARIES
(seg_dmda))
=A0=A0=A0 =A0=A0=A0 } > seg_dmda

=A0=A0=A0 =A0 seg_filter
=A0=A0=A0 =A0 {
=A0=A0=A0 =A0=A0=A0 =A0 INPUT_SECTIONS( $OBJECTS(filter) $LIBRARIES
(filter))
=A0=A0=A0 =A0 } >filter

=A0 =A0 =A0 ext_code
=A0 =A0 =A0 {
=A0 =A0 =A0 =A0 INPUT_SECTIONS( $OBJECTS(ext_pmco) $LIBRARIES(ext_pmco))
=A0 =A0 =A0 } > ext_pmco

=A0 =A0 =A0 ext_data
=A0 =A0 =A0 {
=A0 =A0 =A0 =A0 INPUT_SECTIONS( $OBJECTS(ext_dmda) $LIBRARIES(ext_dmda))
=A0 =A0 =A0 } > ext_dmda

=A0=A0=A0 =A0=A0=A0 stackseg
=A0=A0=A0 =A0=A0=A0 {

=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 // allocate a stack for the application
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 ldf_stack_space =3D .;
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 ldf_stack_length =3D MEMORY_SIZEOF(seg_stak);
=A0=A0=A0 =A0=A0=A0 } > seg_stak

=A0=A0=A0 =A0=A0=A0 heap
=A0=A0=A0 =A0=A0=A0 {
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 // allocate a heap for the application
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 ldf_heap_space =3D .;
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 ldf_heap_length =3D MEMORY_SIZEOF(seg_heap);
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 ldf_heap_end =3D ldf_heap_space +
ldf_heap_length - 1;
=A0=A0=A0 =A0=A0=A0 } > seg_heap

=A0 =A0 }
}
If you have any helpful tutorial or material or link about LDF file
setting so kindly tell me.
Warm regards
Rain

--- In a...@yahoogroups.com, Jaime Andres Aranguren Cardona
<jaime.aranguren@...> wrote:
>
> Hello Rain (I suppose that is your name, out of your signature)
> The messages say that your section IMU was not allocated enough
memory for the amount of memory.
> It seems to me that the snippet of the LDF that you attached=A0does
not have enough information for one to advice what to do next, since
you are not showing how big are seg_imu and seg_pmco.
> But in any case, you will have to modify the LDF to allocate more
memory for those segments, which you can do either on the source code
of the LDF itself=A0or using the ExpertLinker.
> You needed 677 words for this kind of memory (0x2A5), which you did
not seem to have.
> Regards
>
> =A0
> Jaime Andr=E9s Aranguren Cardona
> jaime.aranguren@...
> jaime.aranguren@...
>
> ----- Original Message ----
> From: "m_z_farooqui@..." <m_z_farooqui@...>
> To: a...@yahoogroups.com
> Sent: Tuesday, May 20, 2008 1:08:29 AM
> Subject: [adsp] Out of memory in output section 'seg_imu' in
processor 'p0'
> HI
> I am using ADSP-21065L and encounter with the following error
> //////////// /// ERROR DURING COMPILATION //////////// /////
> 24467 bytes eliminated in processor 'p0'
>
> For more details, see 'linker_log. xml' in the output directory.
>
> [Error li1040] ".\INS30.LDF" :149 Out of memory in output
section 'seg_imu' in processor 'p0'
> Total of 0x2a5 word(s) were not mapped.
> For more details, see 'linker_log. xml' in the output directory.
>
> Linker finished with 1 error
> cc3089: fatal error: Link failed
> Tool failed with exit/exception code: 1.
> Build was unsuccessful.
> //////////// ///////// ///////// ///////// //////
>
> Whereas i have the following setting in my LDF file
> //////////// //// SETTING IN LDF FILE //////////// ///////// ///////
> // the first 512 words are reserved for BIOS code
> // the remaining ext. SRAM can be used for data and program code.
> // to link data to ext. memory, use the segment directive, e.g.
> // static segment ("ext_dmda") int ext_var[..];
> // to link a function to ext. memory, use the segment directive,
e.g.
> // segment ("ext_pmco") int ext_func (int..)
> // { ... }
> // please note that an external code section cannot exceed 64K
> // you may however specify multiple external code sections
> // ( this is important only for larger SRAM: 256K x 32 )
> //
> // each external program word requires two 32 bit memory locations
>
> // the following definitions allocate
> // 15872 words external program code
> // 16384 words external data
> // 16384 words heap
>
> ext_bios { TYPE(PM RAM) START(0x00020000) END(0x000201FF) WIDTH
(32) }
> ext_pmco { TYPE(PM RAM) START(0x00020200) END(0x00023FFF) WIDTH
(32) }
> ext_dmda { TYPE(DM RAM) START(0x00028000) END(0x0002BFFF) WIDTH
(32) }
>
> seg_imu
> {
> INPUT_SECTIONS( $LIBRARIES(seg_ pmco))
> } >imu
> //////////// ///////// ///////// ///////// ///////// ///////// /////
//
>
> if any body knows that kindly help me
>
> Rain
>
=20=20=20=20=20=20

------------------------------------



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

Re: Out of memory in output section 'seg_imu' in processor 'p0' - Jaime Andres Aranguren Cardona - May 21 17:01:50 2008

Hello=A0everybody,
Well, actually I replied to the OP by private mail, with copy to the list. =
My comment was on the same lines as Mikes'
Indeed, Mike actually said what is actually the minimum size that you neede=
d, and seemed to check that you can actually=A0set that size... No overlapp=
ing and (it seems) no mixed size (48/32/16) problems.
So, go ahead!
Regards,
=A0
Jaime Andr=E9s Aranguren Cardona
j...@ieee.org
j...@computer.org
----- Original Message ----
From: Mike Rosing <e...@eskimo.com>
To: Muhammad Farooqui <m...@yahoo.com>
Cc: Jaime Andres Aranguren Cardona <j...@computer.org>; adsp@yah=
oogroups.com
Sent: Wednesday, May 21, 2008 7:43:40 AM
Subject: Re: [adsp] Out of memory in output section 'seg_imu' in processor =
'p0'

On Wed, 21 May 2008, Muhammad Farooqui wrote:

>
> First of all I would like to say thank to you that you show interest in t=
hat problem.
>
> Basically DSP code was developed by another person who is not accessible =
now. And now my task is to
> add some more functionality in previous developed code. So I developed so=
me code (which is working
> fine) and when I add my new code in previous developed cod=A0 so I face t=
he following problems.
>
> I paste the whole LDF file here.
> MEMORY
> {
>=A0 =A0 seg_rth=A0 { TYPE(PM RAM) START(0x00008000) END(0x000080ff) WIDTH(=
48) }
>=A0 =A0 int_bios { TYPE(PM RAM) START(0x00008100) END(0x000081af) WIDTH(48=
) }
>=A0 =A0 seg_init { TYPE(PM RAM) START(0x000081b0) END(0x000081bf) WIDTH(48=
) }
>=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 seg_int_code { TYPE(PM RAM) START(0x000081=
c0) END(0x00008297) WIDTH(48) }
>=A0 =A0 bdf=A0 =A0 =A0 { TYPE(PM RAM) START(0x000082c0) END(0x000097ff) WI=
DTH(48) }

>=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 imu=A0 =A0 =A0 { TYPE(PM RAM) START(0x0000=
C000) END(0x0000Cce5) WIDTH(48) }
=A0 this is important----------------------------------------------------^^=
^

>=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 filter=A0 { TYPE(PM RAM) START(0x0000d4e6)=
 END(0x0000d537) WIDTH(32) }
>=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 seg_dmda { TYPE(DM RAM) START(0x0000d538) =
END(0x0000Dd4f) WIDTH(32) }
>=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 seg_stak { TYPE(DM RAM) START(0x0000Dd50) =
END(0x0000Dffd) WIDTH(32) }
>=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 seg_heap { TYPE(DM RAM) START(0x0000Dffe) =
END(0x0000Dfff) WIDTH(32) }

Your error said you needed 2a5 more.=A0 So CCe5 + 2A5 =3D cf8a.=A0 Since th=
e
next ram space looks like it starts at d4e6, you have plenty of room.

Definitly read up on the ldf.=A0 It gives you a lot of power on how to set
up your memory spaces.

Patience, persistence, truth,
Dr. mike
=20=20=20=20=20=20

------------------------------------



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

First of all I would like to say thank to you that yo= u show interest in that problem.

Basically DSP code was developed by another person who is not access= ible now. And now my task is to add some more functionality in previous dev= eloped code. So I developed some code (which is working fine) and when I ad= d my new code in previous developed cod&n= bsp; so I face the following problems.

I paste the whole LDF file here.

 

ARCHITECTURE(ADSP-21065L)

 

//

// ADSP-21065L Memory Map:

//   ------------= ------------------------------------

//   Internal mem= ory  0x0000 0000 to 0x0007 ff= ff

//   ------------= ------------------------------------

//     &n= bsp;            = ;  0x0000 0000 to 0x0000 00ff=   IOP Regs

//     &n= bsp;            = ;  0x0000 0100 to 0x0000 01ff=   IOP Regs of Processor ID 001

//            = ;        0x0000 0200 to 0x00= 00 02ff  IOP Regs of Processo= r ID 002

//     &n= bsp;            = ;  0x0000 0300 to 0x0000 07ff=   Reserved

//     &n= bsp;     Block 0  Normal Word (32/48) Addresses

//     &n= bsp;            = ; (0x0000 8000 to 0x0000 97ff) 48-bit words

//     &n= bsp;            = ; (0x0000 8000 to 0x0000 9fff) 32-bit words

//     &nb= sp;            =             &nb= sp;            =             &nb= sp;            =           0x0000 A000 to 0x0000 Bfff  Reserved

//     &n= bsp;     Block 1  Normal Word (32/48) Addresses

//     &n= bsp;            = ; (0x0000 C000 to 0x0000 Cfff) 48-bit words

//     &n= bsp;            = ; (0x0000 C000 to 0x0000 Dfff) 32-bit words

//     &nb= sp;            =             &nb= sp;            =             &nb= sp;            =           0x0000 E000 to 0x0000 ffff  Reserved

//     &n= bsp;     Block 0  Short Word (16) Addresses

//     &nb= sp;            =             &nb= sp;            =             &nb= sp;            =           0x0001 4000 to 0x0001 7fff  Reserved

//      <= /SPAN>     Block 1  0x0001 8000 to 0x0= 001 Bfff  Short Word (16) Add= resses

//     &nb= sp;            =             &nb= sp;            =             &nb= sp;            =           0x0001 C000 to 0x0001 ffff  Reserved

//   ------------= ------------------------------------

//   External mem= ory  0x0002 0000 to 0x03ff ff= ff

//   ------------= ------------------------------------

//   External Ban= k 0  0x0002 0000 to 0x00ff ff= ff

//   External Ban= k 1  0x0100 0000 to 0x01ff ff= ff

//   External Ban= k 2  0x0200 0000 to 0x02ff ff= ff

//   External Ban= k 3  0x0300 0000 to 0x03ff ff= ff

//

// This architecture file allocates:

//         Internal = 256 words of run-time header in memory block 0

//     &n= bsp;            = ; 16 words of initialization code in memory block 0

//     &n= bsp;           3.8= K words of C code space in memory block 0

//     &n= bsp;            = ; 2K words of C PM data space in memory block 0

//     &n= bsp;            = ; 4K words of C DM data space in memory block 1

//     &n= bsp;          1.25K wor= ds of C heap space in memory block 1

//     &n= bsp;          2.75K wor= ds of C stack space in memory block 1

 

SEARCH_DIR( $ADI_DSP\21k\lib )

 

#ifdef _ADI_THREADS

#ifdef __ADI_LIBEH__

$LIBRARIES =3D libehmt.dlb, libcmt.dlb, libdsp.dlb, libiomt.dlb;

#else

$LIBRARIES =3D libcmt.dlb, libdsp.dlb, libiomt.dlb;

#endif

#else

#ifdef __ADI_LIBEH__

$LIBRARIES =3D libeh.dlb, libc.dlb, libdsp.dlb, libio.dlb;

#else

$LIBRARIES =3D libc.dlb, libdsp.dlb, libio.dlb;

#endif

#endif

 

// Libraries from the command line are included in COMMAND_LINE_OBJE= CTS.

#ifndef EZKIT_MONITOR

#ifdef __ADI_LIBEH__

#define CRT_HDR 065L_hdr_adamagic.doj

#else

#define CRT_HDR 065L_hdr.doj

#endif

#else

#define CRT_HDR 065L_hdr_ezkit.doj

#endif

$OBJECTS =3D CRT_HDR, $COMMAND_LINE_OBJECTS;

 

MEMORY

{

 

   seg_rth<= SPAN style=3D"mso-spacerun: yes">  { TYPE(PM RAM) START(0x00008= 000) END(0x000080ff) WIDTH(48) }

   int_bios= { TYPE(PM RAM) START(0x00008100) END(0x000081af) WIDTH(48) }=

   seg_init= { TYPE(PM RAM) START(0x000081b0) END(0x000081bf) WIDTH(48) }=

     = ;           seg_in= t_code { TYPE(PM RAM) START(0x000081c0) END(0x00008297) WIDTH(48) }<= /FONT>

   bdf      { TYPE(P= M RAM) START(0x000082c0) END(0x000097ff) WIDTH(48) }

 

 

     = ;           imu      { TYPE= (PM RAM) START(0x0000C000) END(0x0000Cce5) WIDTH(48) }

     = ;           filter=    { TYPE(PM RAM) START(= 0x0000d4e6) END(0x0000d537) WIDTH(32) }

//     &nb= sp;      seg_dmda { TYPE(DM RAM) START(0x00= 00d538) END(0x0000Ddff) WIDTH(32) }

     = ;           seg_dm= da { TYPE(DM RAM) START(0x0000d538) END(0x0000Dd4f) WIDTH(32) }

//     &nb= sp;      seg_stak { TYPE(DM RAM) START(0x00= 00De00) END(0x0000Dffd) WIDTH(32) }

     = ;           seg_st= ak { TYPE(DM RAM) START(0x0000Dd50) END(0x0000Dffd) WIDTH(32) }

     = ;           seg_he= ap { TYPE(DM RAM) START(0x0000Dffe) END(0x0000Dfff) WIDTH(32) }

 

// *****************************************************************= *********

// EXTERNAL SRAM (64K x 32 bits)

// *****************************************************************= *********

 

    //= the first 512 words are reserved for BIOS code

    //= the remaining ext. SRAM can be used for data and program code.

    //= to link data to ext. memory, use the segment directive, e.g.=

    //=    static segment ("ext_= dmda") int ext_var[..];

    //= to link a function to ext. memory, use the segment directive, e.g.<= /FONT>

    //=    segment ("ext_pmco") = int ext_func (int..)

    //=    {  ...  }

    //=    please note that an e= xternal code section cannot exceed 64K

    //=    you may however speci= fy multiple external code sections

    //=    ( this is important o= nly for larger SRAM: 256K x 32 )

    //=

    //=    each external program= word requires two 32 bit memory locations

 

    //= the following definitions allocate

    //=   15872 words external progra= m code

    //=   16384 words external data

    //=   16384 words heap

 

    ex= t_bios { TYPE(PM RAM)  START(= 0x00020000) END(0x000201FF) WIDTH(32) }

    ex= t_pmco { TYPE(PM RAM)  START(= 0x00020200) END(0x00023FFF) WIDTH(32) }

    ex= t_dmda { TYPE(DM RAM)  START(= 0x00028000) END(0x0002BFFF) WIDTH(32) }

//   seg_heap { T= YPE(DM RAM)  START(0x0002C000= ) END(0x0002FFFF) WIDTH(32) }

 

}

 

 

 

PROCESSOR p0

{

//    KEEP( = _main,___ctor_NULL_marker,___lib_end_of_heap_descriptions )

    LI= NK_AGAINST( $COMMAND_LINE_LINK_AGAINST)

    OU= TPUT( $COMMAND_LINE_OUTPUT_FILE )

 

    SE= CTIONS

    {<= /FONT>

 

     = ;            &n= bsp;            = ;  // .text output section

     = ;            &n= bsp;            = ;  seg_rth

     = ;            &n= bsp;            = ;  {

     = ;            &n= bsp;            = ;            &n= bsp;     INPUT_SECTIONS( $OBJECTS(seg_rth) $LIBR= ARIES(seg_rth))

     = ;            &n= bsp;            = ;  } >seg_rth

 

     = ;            &n= bsp;            = ;  seg_init

     = ;            &n= bsp;            = ;  {

     = ;            &n= bsp;            = ;            &n= bsp;     INPUT_SECTIONS( $OBJECTS(seg_init) $LIB= RARIES(seg_init))

     = ;            &n= bsp;            = ;  } >seg_init

 

     = ;            &n= bsp;            = ;  seg_int_code

     = ;            &n= bsp;            = ;  {

     = ;            &n= bsp;            = ;            &n= bsp;     INPUT_SECTIONS( $OBJECTS(seg_int_code) = $LIBRARIES(seg_int_code))

     = ;            &n= bsp;            = ;  } >seg_int_code

 

     = ;            &n= bsp;            = ;  seg_bdf

     = ;            &n= bsp;            = ;  {

     = ;            &n= bsp;            = ;            &n= bsp;     INPUT_SECTIONS( bdf.doj(seg_pmco))

     = ;            &n= bsp;            = ;  } >bdf

 

     = ;              seg_imu

     = ;              {

     = ;            &n= bsp;            = ;     INPUT_= SECTIONS( $LIBRARIES(seg_pmco))

     = ;              } >imu

 

     = ;            &n= bsp;            = ;  seg_dmda

     = ;            &n= bsp;            = ;  {

     = ;            &n= bsp;            = ;            &n= bsp;     INPUT_SECTIONS( $OBJECTS(seg_dmda) $LIB= RARIES(seg_dmda))

     = ;            &n= bsp;            = ;  } > seg_dmda

 

     = ;              seg_filter

     = ;              {

     = ;            &n= bsp;            = ;     INPUT_= SECTIONS( $OBJECTS(filter) $LIBRARIES(filter))

     = ;              } >filter<= /P>

 

    &nbs= p; ext_code

    &nbs= p; {

    &nbs= p;    INPUT_SECTIONS( $OBJECTS(ext_pmco) $LIBRARIES(e= xt_pmco))

    &nbs= p; } > ext_pmco

 

    &nbs= p; ext_data

    &nbs= p; {

    &nbs= p;    INPUT_SECTIONS( $OBJECTS(ext_dmda) $LIBRARIES(e= xt_dmda))

    &nbs= p; } > ext_dmda

 

     = ;            &n= bsp;            = ;  stackseg

     = ;            &n= bsp;            = ;  {

 

     = ;            &n= bsp;            = ;            &n= bsp;     // allocate a stack for the application=

     = ;            &n= bsp;            = ;            &n= bsp;     ldf_stack_space =3D .;

     = ;            &n= bsp;            = ;            &n= bsp;     ldf_stack_length =3D MEMORY_SIZEOF(seg_= stak);

     = ;            &n= bsp;            = ;  } > seg_stak

 

     = ;            &n= bsp;            = ;  heap

     = ;            &n= bsp;            = ;  {

     = ;            &n= bsp;            = ;            &n= bsp;     // allocate a heap for the application<= /FONT>

     = ;            &n= bsp;            = ;            &n= bsp;     ldf_heap_space =3D .;

     = ;            &n= bsp;            = ;            &n= bsp;     ldf_heap_length =3D MEMORY_SIZEOF(seg_h= eap);

     = ;            &n= bsp;            = ;            &n= bsp;     ldf_heap_end =3D ldf_heap_space + ldf_h= eap_length - 1;    &n= bsp; 

     = ;            &n= bsp;            = ;  } > seg_heap

      = ;            &n= bsp;            = ;

    }<= /FONT>

}

If you have any helpful tutorial or material or link about LDF file = setting so kindly tell me.

Warm regards

Rain



--- On Tue, 5/20/08, Jaime Andres Arangure= n Cardona <j...@computer.org> wrote:
From: Jaime Andres Aranguren Cardona <jaime.arangu= r...@computer.org>
Subject: Re: [adsp] Out of memory in output section= 'seg_imu' in processor 'p0'
To: m...@yahoo.com, adsp@yahoogroup= s.com
Date: Tuesday, May 20, 2008, 2:36 PM

Hello Rain (I suppose that is your name, out of your signature)

 

The messages say that your section IMU was not allocated enough memory f= or the amount of memory.

 

It seems to me that the snippet of the LDF that you attached does n= ot have enough information for one to advice what to do next, since you are= not showing how big are seg_imu and seg_pmco.

 

But in any case, you will have to modify the LDF to allocate more memory= for those segments, which you can do either on the source code of the LDF = itself or using the ExpertLinker.

 

You needed 677 words for this kind of memory (0x2A5), which you did not = seem to have.

 

Regards


 

Jaime Andr=E9s Aranguren Cardona
jaime.ar= anguren@ ieee.org
jaime.aranguren@ computer. org



----- Original Message ----
Fr= om: "m_z_farooqui@ yahoo.com" <m_z_farooqui@ yahoo.com>
To: adsp@y= ahoogroups. com
Sent: Tuesday, May 20, 2008 1:08:29 AM
Subject: [adsp= ] Out of memory in output section 'seg_imu' in processor 'p0'

HI
I am using ADSP-21065L and encounter with the following error
= //////////// /// ERROR DURING COMPILATION //////////// /////
24467 bytes= eliminated in processor 'p0'

For more details, see 'linker_log. xml= ' in the output directory.

[Error li1040] ".\INS30.LDF" :149 Out of = memory in output section 'seg_imu' in processor 'p0'
Total of 0x2a5 word= (s) were not mapped.
For more details, see 'linker_log. xml' in the outp= ut directory.

Linker finished with 1 error
cc3089: fatal error: L= ink failed
Tool failed with exit/exception code: 1.
Build was unsucce= ssful.
//////////// ///////// ///////// ///////// //////

Whereas = i have the following setting in my LDF file
//////////// //// SETTING IN= LDF FILE //////////// ///////// ///////
// the first 512 words are rese= rved for BIOS code
// the remaining ext. SRAM can be used for data and p= rogram code.
// to link data to ext. memory, use the segment directive, e.g.
// static segment ("ext_dmda") int ext_var[..];
// t= o link a function to ext. memory, use the segment directive, e.g.
// seg= ment ("ext_pmco") int ext_func (int..)
// { ... }
// please note that= an external code section cannot exceed 64K
// you may however specify m= ultiple external code sections
// ( this is important only for larger SR= AM: 256K x 32 )
//
// each external program word requires two 32 bit = memory locations

// the following definitions allocate
// 15872 w= ords external program code
// 16384 words external data
// 16384 word= s heap

ext_bios { TYPE(PM RAM) START(0x00020000) END(0x000201FF) WID= TH(32) }
ext_pmco { TYPE(PM RAM) START(0x00020200) END(0x00023FFF) WIDTH= (32) }
ext_dmda { TYPE(DM RAM) START(0x00028000) END(0x0002BFFF) WIDTH(3= 2) }

seg_imu
{
INPUT_SECTIONS( $LIBRARIES(seg_ pmco))
} >= ;imu
//////////// ///////// ///////// ///////// ///////// ///////// ///////

if any body knows that kindly help me

Rai= n