• 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 » Microcontrollers » Stellaris® ARM® Microcontrollers » Stellaris® ARM® LM3S Microcontrollers Forum » How to store variables in flash memory
Share
Stellaris® ARM® Microcontrollers
  • Forum
Options
  • Subscribe via RSS
Helpful Stellaris® LM4F Series Links
  • LM4F Series
  • Stellaris PinMux Utility
  • Stellaris® LM4F120 LaunchPad
  • LM4F MCU Applications
  • LM4F MCU Video
  • ARM Cortex-M4F Whitepaper
  • Stellaris MCU Brochure
  • LM4F232 Eval Kit
  • How to store variables in flash memory

    How to store variables in flash memory

    • ravaz48897
      Posted by ravaz48897
      on Dec 13 2008 09:43 AM
      Expert1070 points
      This is an example on how to use the flash for permanents variables:

      Code:


       #include "hw_memmap.h"
      #include "hw_types.h"
      #include "hw_flash.h"

      #include "flash.h"

      #include 

      //Declare a 1 kB block in the flash aligned on 1024 bytes boundary.
      const unsigned char flashBlock[1024]__attribute__ ((aligned(1024))) = { 0x00, 0x00, 0x00, 0x00 };

      //Define a structure where you can put all the
      //variables you want to save in the flash.
      //The maximum structure size is 1024 byte.
      typedef struct tagPERMANENT_VAR
      {
          
      int restartCount;
          
      int var1;
          
      int var2;
      } 
      PERMANENT_VAR;

      //Create one instance of permanents variables.
      PERMANENT_VAR permanentVars;

      //This function writes the variables to the flash.
      void writePermanentsToFlash()
      {
          
      FlashErase((unsigned long) flashBlock);
          
      //The length must be a multiple of 4
          
      FlashProgram((unsigned long*) &permanentVars, (unsigned long) flashBlock, (sizeof(permanentVars) + 3) &~nbsp;3);
      }

      //This function reads the variables from the flash.
      void readPermanentsFromFlash()
      {
          
      memcpy(&permanentVars, flashBlock, sizeof(permanentVars));
      }

      //Main function example.
      int main(void)
      {
          
      //Read the variables from the flash first.
          
      readPermanentsFromFlash();

          
      //Store how many time the system restarted.
          
      permanentVars.restartCount++;

          
      //Write back the variables to the flash.
          
      writePermanentsToFlash();

          
      //Continue your program.
          //...
          //...

          
      while(1);
      }






      Post edited by: ravaz, at: 2008/12/17 20:42
      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • joesny
      Posted by joesny
      on Jul 05 2010 11:19 AM
      Intellectual260 points

      Hi,

      I was trying do your code under IAR compiler.

       

      But this declaration does not work in IAR compile:

      //Declare a 1 kB block in the flash aligned on 1024 bytes boundary.
      const unsigned char flashBlock[1024]__attribute__ ((aligned(1024))) = { 0x00, 0x00, 0x00, 0x00 };


      Do you know how could do this to work under IAR compiler?

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Andy Neil
      Posted by Andy Neil
      on Jul 12 2010 03:15 AM
      Guru32005 points

      ravaz
      This is an example on how to use the flash for permanents variables

      It relies upon compiler-specific features - therefore you need to state what specific compiler (including version) it is for!

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Lubo�� Pejchal
      Posted by Lubo�� Pejchal
      on Apr 15 2012 09:19 AM
      Intellectual380 points

      I would like save to flash memory only one variable type unsigned char. Is it my code right?

       

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Lubo�� Pejchal
      Posted by Lubo�� Pejchal
      on Apr 16 2012 08:55 AM
      Intellectual380 points

      My code has not been saved here.

      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