Zilog Z8F0130 User Manual
Page 233

UM013037-1212
Program RAM Support (Z8 Encore! XP 16K Series
Zilog Developer Studio II – Z8 Encore!
User Manual
209
The compiler provides a pragma (
#pragma PRAM
) for this purpose. This pragma has
function scope and can only be used just before a function definition. The code for such
functions is then placed in a special segment called PRAMSEG.
For example:
#pragma PRAM
int func(void)
{
return 2;
}
The code for the
func
function is placed in the
PRAMSEG
segment. Multiple functions in a
program can be designated as PRAM functions by preceding each of them with
#pragma
PRAM
. A copy of the PRAMSEG is kept in ROM and copied to PRAM by the C start-up
module. For more details, see the
Linker Command Files for C Programs
Only the code for the function designated as PRAM is placed by the compiler in PRAM-
SEG. Any functions called by such function are not automatically placed by the compiler
in PRAMSEG.
For example:
#pragma PRAM
int func(void)
{
return anotherfunc();
}
In the preceding example, only the code for
func
is placed in PRAMSEG. The code for
anotherfunc
is placed in a segment in ROM. To place
anotherfunc
in PRAM, you
must precede it with
#pragma PRAM
also.
For example:
#pragma PRAM
int anotherfunc(void)
{
return 2;
}
The same is true for any library functions called from such functions. If you want to avoid
having these functions executed from Flash (which might partially defeat the power-sav-
ing goal of placing the functions that call them in PRAM), you must include the source for
the library function in your project and precede the library function with
#pragma PRAM
if it is a C function or if it is an assembly function, change the segment of the function to
PRAMSEG using the
segment PRAMSEG
assembler directive.
- Z8F0131 Z8F0230 Z8F0231 Z8F0430 Z8F0431 Z8F043A Z8F0830 Z8F0831 Z8F083A Z8F1232 Z8F1233 Z8F0113 Z8F011A Z8F0123 Z8F012A Z8F0213 Z8F021A Z8F0223 Z8F022A Z8F0411 Z8F0412 Z8F0413 Z8F041A Z8F0421 Z8F0422 Z8F0423 Z8F042A Z8F0811 Z8F0812 Z8F0813 Z8F081A Z8F0821 Z8F0822 Z8F0823 Z8F082A Z8F0880 Z8F1621 Z8F1622 Z8F1680 Z8F1681 Z8F1682 Z8F2421 Z8F2422 Z8F2480 Z8F3221 Z8F3222 Z8F3281 Z8F3282 Z8F4821 Z8F4822 Z8F4823 Z8F6081 Z8F6082 Z8F6421 Z8F6422 Z8F6423 Z8F6481 Z8F6482 Z8FS021A ZMOT1AHH Z8FS040B ZMOT0BHH ZMOT0BSB Z8FMC04 Z8FMC08 Z8FMC16