This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2530 Linker error for XDATA size

Other Parts Discussed in Thread: CC2530, CC2531

Hello,

I have got a problem when i tried to send random data to RX.

Error[e16]: Segment XDATA_I (size: 0x2a2f align: 0) is too long for segment definition. At least 0xe00 more bytes needed. The problem occurred while processing the segment placement 
command "-Z(XDATA)XDATA_Z,XDATA_I=_XDATA0_START-_XDATA0_END", where at the moment of placement the available memory ranges were "XDATA:2d1-1eff"
   Reserved ranges relevant to this placement:
   XDATA:1-100          XSTACK
   XDATA:101-1eff       XDATA_Z
   BIT:0-7              BREG
   BIT:80-97            SFR_AN
   BIT:a0-af            SFR_AN
   BIT:b8-c7            SFR_AN
   BIT:e8-ef            SFR_AN
   BIT:f8-ff            SFR_AN
Error while running Linker

Can i change this limitation ? If yes, how can i ?

Thanks in advance for your reponse.

Best regards,

  • XDATA is the "RAM" space for the CC2530, so you have added to many or too big variables - remove some of the last variables that you added until your application can successfully link again - RAM is very limited on an embedded processor, it's not a PC. You can monitor your use of resources by inspecting the bottom of the .map file found in 'Output' folder as "NameOfYourApplication.map"


                    ****************************************
                    *                                      *
                    *        END OF CROSS REFERENCE        *
                    *                                      *
                    ****************************************

     152 489 bytes of CODE  memory
          32 bytes of DATA  memory (+ 74 absolute )
       6 844 bytes of XDATA memory
         192 bytes of IDATA memory
           8 bits  of BIT   memory
         457 bytes of CONST memory

    Errors: none
    Warnings: none

  • Hi Dirty Harry,

    Thanks for your reponse. So, can't i change this value ?

    Br,

  • Change what value? You want to change the amount of RAM available in the system? On an embedded device, the amount of RAM, aka XDATA on this 8051-based SOC, is fixed ... on the CC2530F256, there is only a total of 8KB available. Take a look at the data sheet:

    http://focus.ti.com/lit/ds/symlink/cc2530.pdf

     

  • Hi Dirty Harry,

    Thanks for the data sheet. i taked a look at this.

    But if i want transmit data more ... If i use the RAM as a buffer, can i do it ?

    Br,

     

  • Hi MilkyWay 05,

    You may use the RAM as a buffer to transmit short chunks of data (lets say 120 bytes).

    ZigBee devices based on CC2530/CC2531 SoCs  that running Zstack are very short on

    available RAM for user's application.

    Anyway, keep in mind these numbers while setting any buffer length for your data:

    Coordinator Router EndDevice

        PRO SECURE Flash/RAM Flash/RAM Flash/RAM

       =====   =======    ==========   ========== ==========

        Off      Off 137.6K/6.6K     136.4K/6.6K 108.7K/5.0K

        Off      On 147.9K/6.6K 147.6K/6.6K 119.7K/5.1K

        On      Off 148.8K/6.7K 147.8K/6.7K 114.3K/5.1K

        On      On 159.2K/6.7K 159.0K/6.7K 126.2K/5.2K

    Best regards,

    Igtor.