Try to move some global variables to external RAM if possible.
Or maybe locating few arrays in idata.

-- 
Ori Idan


On Tue, Sep 9, 2008 at 1:02 PM, Jesse Lackey <[EMAIL PROTECTED]>wrote:

> Hello all, until today I've been happily developing a sizable project
> with the TI CC2430 with SDCC.
>
> Suddenly I have a problem I don't understand.  A linker error:
>
> "?ASlink-Error-Could not get 30 consecutive bytes in internal RAM for
> area DSEG"
>
> I'm guessing it has something to do with stack space, since it happened
> after moving some functions around and increased the stack depth.
>
> I've made globals out of some of the locals in these functions, no help.
>
> I use a divide in the function, dividing an unsigned 32bit by an
> unsigned 8bit, and if I comment them out then lo and behold no problem.
>  Does this mean I need to recompile some sdcc libraries with
> --model-large?  I've been doing that divide for weeks, so I'm guessing
> that some kind of precious, limited RAM has been in use for calls to the
> divide function and now there isn't room anymore.
>
> Compiler arguments I use:
> --model-large
> and linker:
> --model-large --xram-loc 0xE000 --xram-size 8192 --code-size 32768
>
> Attached is the .mem file generated.
>
> This is kind of an emergency as this project is behind schedule and
> almost ready to go, and people are waiting with specialized test
> environments to run this board.
>
> So any help/explanation is greatly, greatly appreciated.  I didn't find
> an explanation of what DSEG is in the sdcc docs.
>
> If I need to recompile sdcc libraries, getting a link to documentation
> on how to do this be most appreciated.
>
> Thanks in advance.
> Jesse
>
>
>
> Internal RAM layout:
>        0 1 2 3 4 5 6 7 8 9 A B C D E F
> 0x00:|0|0|0|0|0|0|0|0|c|d|d|d|d|d|d|Q|
> 0x10:|Q|Q|Q|Q|Q|Q| | | | | | | | | | |
> 0x20:|B|B|a|a|a|a|a|a|a|a|a|a|a|a|a|a|
> 0x30:|a|a|a|a|a|a|a|a|a|a|a|a|a|b|b|b|
> 0x40:|b|b|b|b|b|b|b|b|b|b|b|b|b|b|b|b|
> 0x50:|b|b|b|b|b|b|b|b|b|b|b|b|b|b|b|b|
> 0x60:|b|b|b|S|S|S|S|S|S|S|S|S|S|S|S|S|
> 0x70:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
> 0x80:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
> 0x90:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
> 0xa0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
> 0xb0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
> 0xc0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
> 0xd0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
> 0xe0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
> 0xf0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
> 0-3:Reg Banks, T:Bit regs, a-z:Data, B:Bits, Q:Overlay, I:iData,
> S:Stack, A:Absolute
>
> ERROR: Couldn't get 30 bytes allocated in internal RAM for area DSEG.
> Stack starts at: 0x63 (sp set to 0x62) with 157 bytes available.
>
> Other memory:
>     Name             Start    End      Size     Max
>     ---------------- -------- -------- -------- --------
>     PAGED EXT. RAM                         0      256
>     EXTERNAL RAM     0xe000   0xe8f7    2296     8192
>     ROM/EPROM/FLASH  0x0000   0x7686   30343    32768
>
>
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's
> challenge
> Build the coolest Linux based applications with Moblin SDK & win great
> prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> Sdcc-user mailing list
> Sdcc-user@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/sdcc-user
>



-- 
ספרים וסיפורים שכתבתי: http://www.thestories.org
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user

Reply via email to