• 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 » TI C/C++ Compiler » TI C/C++ Compiler - Forum » Global variable Autoinitialization - .cinit
Share
TI C/C++ Compiler
  • Forum
Options
  • Subscribe via RSS

Global variable Autoinitialization - .cinit

Global variable Autoinitialization - .cinit

  • Jonathan Journo
    Posted by Jonathan Journo
    on May 03 2012 12:51 PM
    Intellectual475 points

    Hello All,

     

    I'd like to initialize some global vars that I have declared in a specific memory section.

    But I did not find how to declare to the linker that my memory sections has to be initialize. (like .cinit:)

     

    my linker.cmd file:

    SECTIONS {
        
       .onchip_code:     {} > DDR3_DSP
       .onchip_data:     {} > DDR3_DSP
       .onchip_data_L3: {} > OCMC

       .offchip_code:     {} > DDR3_DSP
       .offchip_data:     {} > SHMEM_DATA
       .offchip_config: {} > SHMEM_CFG
       .my_sect_ddr:    {} > DDR3_DSP
       .my_sect_iram:    {} > DDR3_DSP
       .plt:            {} > DDR3_DSP
    }

     

    I would like that global variables declared into SHMEM_DATA section to be autoinitialized.

    Any help will be welcomed.

     

    cgtool
    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • George Mock
    Posted by George Mock
    on May 03 2012 16:31 PM
    Guru51390 points

    It is the C compiler which does most of the work related to how .cinit is used to auto-initialize global variables.  Thus, the easiest solution is to define those variables in C, but use the DATA_SECTION pragma to put them in the .offchip_data section.  Let the compiler take care of all the details after that.

    Thanks and regards,

    -George


    TI C/C++ Compiler Forum Moderator
    Please click Verify Answer on the best reply to your question.
    The Compiler Wiki answers most common questions.
    Track an issue with SDOWP. Enter your 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.
  • Jonathan Journo
    Posted by Jonathan Journo
    on May 07 2012 12:48 PM
    Intellectual475 points

    Hi George,

    I have some variables declared without any DATA_SECTION pragma and those variables are auto-initialized and are placed in the DDR3_DSP section, I presume it is because in the xdc board package, data memory is setted to be DDR3_DSP.

    But for other variables that are declared and placed in the section .offchip_data (in "SHMEM_DATA") , the autoinitialization of variables doesn't occur.

    the vars start with a non zero value. I am using syslink ProcMgr_load loader from the ARM to load my DSP .

    After building the project I got a warning saying the entry point was changed from "_C_int00" to "ti_sysbios_family_c64p_Hwi0", some posts on forums says that it's a normal behavior that syslink creates to ensure that code entry point is aligned to a memory page.

    1/May it be the cause of initialization miss in the DSP bootstrap?

    2/ does the compiler by default auto-initialize variables in all the memory sections? or special command need to be written in the linker .cmd file. (May be using GROUP or UNION or something else).

    Thanks for your support.

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Archaeologist
    Posted by Archaeologist
    on May 07 2012 13:27 PM
    Mastermind40800 points

    Are you using EABI?  Look for the option --abi=eabi

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Jonathan Journo
    Posted by Jonathan Journo
    on May 16 2012 16:48 PM
    Intellectual475 points

    Sorry for the delay.

    Yes I am using the eabi option.

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Archaeologist
    Posted by Archaeologist
    on May 17 2012 10:23 AM
    Mastermind40800 points

    In EABI mode, the compiler arranges for the run-time initialization of all global variables. Global variables without an explicit initializer are initialized to zero. The run-time initialization is accomplished by a function called from _c_int00, which is the default entry point for C programs. Given that your system has changed the entry point, the new entry point must take care to perform auto-initialization. I would be very surprised if ti_sysbios_family_c64p_Hwi0 did not already do this. Could you please post your linker map file? I would like to verify that the run-time initialization meta-data is present in the executable. Please indicate which variables are not being initialized.

    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