• Join
  • Sign In with my.TI Login
Texas Instruments
  • Products
  • Applications
  • Tools & Software
  • Support & Community
  • Sample & Buy
  • About TI
Sample & Purchase Cart Sample & Purchase Cart
  • Search
  • Advanced
TI E2E™ Community
  • Support Forums
  • Blogs
  • Groups
  • Videos
  • 简体中文
  • More ...
TI Home » TI E2E Community » Support Forums » Development Tools » Code Composer Studio » Code Composer Forum » Variable memory allocation
Share
Code Composer Studio
  • Forum
  • Announcements
Options
  • Subscribe via RSS
Common Questions
  • Code Composer Studio Forum Usage Guidelines

  • Resources
  • Code Composer Studio (CCStudio) Product Folder
  • Troubleshooting CCS
  • CCS Wiki
  • Download CCS
  • Order CCS
  • Tools Insider Blog
  • Bug Tracking
  • Forums

    Variable memory allocation

    • JHough
      Posted by JHough
      on May 03 2012 08:18 AM
      Prodigy240 points

      Hi

      Im doing an almighty battle with the compiler at the minute, having all sorts of issues but heres my most pressing issue.

      Im using an MSP430F5510 and have the data sheet showing RAM at addresses 0x1C00 - 0x5BFF and Pheripherals at 0x0000 - 0x0FFF however im seeing global variables (static and non-static) been allocated in the address range 0x0000 - 0x00FF which the data sheet shows as reserved for extension.

      Iv already had issues with the lack of auto-init of variables but all my fixes are broken as i expect to see variables allocated within the RAM map. I have tried forcing the allocation with

      #pragma SET_DATA_SECTION(".RAM")

      but this just seems to shift them into 0x0100 - 0x0FEF range which is the peripheral range. I have included my compiler and linker args as i suspect this is the problem as i have seen very strange behaviour with optimization with this compiler.

      Compiler flags

      -vmspx --abi=eabi -g --include_path="C:/ti/ccsv5/ccs_base/msp430/include" --include_path="C:/ti/ccsv5/tools/compiler/msp430/include" --define=__MSP430F5510__ --diag_warning=225 --display_error_number --silicon_errata=CPU21 --silicon_errata=CPU22 --silicon_errata=CPU40 --no_high_level_opt --printf_support=minimal

      LInker flags

      -vmspx --abi=eabi -g --define=__MSP430F5510__ --diag_warning=225 --display_error_number --silicon_errata=CPU21 --silicon_errata=CPU22 --silicon_errata=CPU40 --no_high_level_opt --printf_support=minimal -z -m"chEng.map" --stack_size=512 --heap_size=160 --use_hw_mpy=F5 -i"C:/ti/ccsv5/ccs_base/msp430/include" -i"C:/ti/ccsv5/tools/compiler/msp430/lib" -i"C:/ti/ccsv5/tools/compiler/msp430/include" --reread_libs --warn_sections --rom_model

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • AartiG
      Posted by AartiG
      on May 03 2012 09:38 AM
      Guru68895 points

      Does your project have a linker command file (.cmd) included which gets used during the link step? It is this file that specifies the device memory map and also specifies where the different sections (code, data etc) get allocated. When you create a new project in CCS for MSP430F5510, a linker command file named lnk_msp430f5510.cmd should be automatically added. Can you check if this is the case for your project?


      If a post answers your question please mark it with the "Verify Answer" button

      Search the wikis for common questions: CGT, BIOS,  CCSv3, CCSv4
      Track a known bug with SDOWP. Enter the bug id in the "Find Record ID" box

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • JHough
      Posted by JHough
      on May 03 2012 10:13 AM
      Prodigy240 points

      Thanks for the reply,

      I tracked the problem down to the output format, with it set to eabi it doesnt work, but does with legacy COFF.

      I have now seen somthing i didnt expect and thats if i declare a global variable i have to force the type def in the init or the who type is not set, e.g.

      static u16 aIndex         =  0x0000u;

      static u16 bIndex         = (u16) 0x0000u;

      aIndex will initilise to a random value normally 0x0200, bIndex inits to 0x0000. This occurs for all datatypes greater than a single byte.

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • AartiG
      Posted by AartiG
      on May 03 2012 11:50 AM
      Guru68895 points

      The output format really shouldn't affect the allocation as long as there is a linker command file that specifies where the code and data need to go. If you have a test case that demonstrates a problem in EABI mode but not in COFF mode could you please attach it here so we can investigate it.

      Also for the variable typedef issue, if you can provide an example project that would be very helpful for us to look into it.


      If a post answers your question please mark it with the "Verify Answer" button

      Search the wikis for common questions: CGT, BIOS,  CCSv3, CCSv4
      Track a known bug with SDOWP. Enter the bug id in the "Find Record ID" box

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    TI E2E™ Community
    • Support Forums
    • Blogs
    • Videos
    • Groups
    • Site Support & Feedback
    • Settings
    TI E2E™ Community Groups
    • TI University Program
    • Make the Switch
    • Microcontroller Projects
    • Motor Drive & Control
    Other Communities
    • Deyisupport
    • Designsomething.org
    • beagleboard.org
    • TI on Element 14
    • TI on TechXchangeSM
    Other Technical & Support Resources
    • WEBENCH® Design Center
    • Product Information Centers
    • Technical Documents
    • TI Design Network
    • TI Technical Articles
    • TI Training

    All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.

    Content on this site may contain or be subject to specific guidelines or limitations on use. All postings and use of the content on this site are subject to the Terms of Use of the site; third parties using this content agree to abide by any limitations or guidelines and to comply with the Terms of Use of this site. TI, its suppliers and providers of content reserve the right to make corrections, deletions, modifications, enhancements, improvements and other changes to the content and materials, its products, programs and services at any time or to move or discontinue any content, products, programs, or services without notice.

    Follow Us Texas Instruments on Facebook Texas Instruments on Twitter Texas Instruments on LinkedIn Texas Instruments on Google+
    TI Worldwide | Contact Us | my.TI Login | Site Map | Corporate Citizenship | mobile m.ti.com (Mobile Version)

    TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs and
    embedded processors, along with software, tools and the industry’s largest sales/support staff.

    © Copyright 1995-2013 Texas Instruments Incorporated. All rights reserved.
    Trademarks | Privacy Policy | Terms of Use