consecutive bytes in internal RAM for DSEG

  • RavikumarN

    Hi All,
            I am Ravikumar.N, using SDCC compiler with Cygnal C8051F130 microcontroller for one of my application. Used large memory model here.

    The folowing is my issue.

    I have declared an array of 600 of type float with the keyword xdata.  i.e. xdata float array[600].

    This array is used to store some float values.

    while compiling the application, the application gets compiled well.

    But, while linking the application, the following
    error will be displayed

    ?ASlink-Error-Could not get 97 consecutive bytes in internal RAM for area DSEG.

    what could be the problem. If anybody have faced the same problem please reply as early as possible

    Thanks in advance.

    • Are you sure it's the array[600] which is causing the problem? I would try array[500] (which should save at least 97 bytes) and see if the symptoms are different.

    • Wayne Taylor
      Wayne Taylor

      What I have found in a similar problem is that even though I have told the compiler to use large and external memory, the math libraries still use static data variable for temporary storage. I even tried #pragma callee_saves, to try tricking the compiler, but it didn't work.

      I have a few math functions that are dealing with quaternion math and floats, and I can't get the built in math functions to work. My compiler error says that I need more data space. In truth I don't, but the math library thinks I do.

      I tried to recompile the float routines without re-entrant enabled to see if that would help, it did not.