4.3.4.7 How Can I Load a Value Into Flash Memory?

The compiler provides different ways of defining Flash variables.

  • A variable can be explicitly placed into Flash using an appropriate space attribute.
  • Variables are implicitly placed into Flash in the default const-in-code memory model if they have the C const type qualifier.

These differences allow you to choose how much work you want to do to access variables, and how much you want the compiler to do. The compiler has the least to do when you simply specify the attribute space(prog), and the initial value; which leaves the access (usually via tblrd instructions) up to you, the programmer. The compiler has the most to do when you combine the space(prog) attribute with an appropriate access qualifier, such as __eds__ or __prog__.

Also, there is often a single page of Flash space dedicated to const qualified objects. See -mconst-in-code in the following sections of this user’s guide for more details:

9.10 Variable Attributes

11.3 Variables in Program Space