AnsweredAssumed Answered

Information about Banked memory model on MC9S08QE64

Question asked by Stipey75 on Mar 8, 2011
Latest reply on Mar 9, 2011 by CompilerGuru



A stupid question i suppose....:smileyhappy:


This is my Prm file:


NAMES END /* CodeWarrior will pass all the needed files to the linker by command line. But here you may add your own files too. */

SEGMENTS /* Here all RAM/ROM areas of the device are listed. Used in PLACEMENT below. */
    Z_RAM                    =  READ_WRITE   0x0080 TO 0x00FF;
    RAM                        =  READ_WRITE   0x0100 TO 0x107F;
    /* unbanked FLASH ROM */
    ROM                             =  READ_ONLY    0x2080 TO 0x7FFF;
    ROM1                          =  READ_ONLY    0xC000 TO 0xFFAD;
 /* INTVECTS                 =  READ_ONLY    0xFFC0 TO 0xFFFF; Reserved for Interrupt Vectors */
    /* banked FLASH ROM */
    PPAGE_0                  =  READ_ONLY    0x008000 TO 0x00A07F; /* PAGE partially contained in ROM segment */
    PPAGE_2                  =  READ_ONLY    0x028000 TO 0x02BFFF;
    PPAGE_1                  =  READ_ONLY    0x018000 TO 0x01BFFF; //PAGE already contained in segment at 0x4000-0x7FFF */
    PPAGE_3                  =  READ_ONLY    0x038000 TO 0x03BFFF; //PAGE already contained in segment at 0xC000-0xFFFF */

PLACEMENT /* Here all predefined and user segments are placed into the SEGMENTS defined above. */
    DEFAULT_RAM                         /* non-zero page variables */
                                        INTO  RAM;

    _PRESTART,                          /* startup code */
    STARTUP,                            /* startup data structures */
    ROM_VAR,                            /* constant variables */
    STRINGS,                            /* string literals */
    VIRTUAL_TABLE_SEGMENT,              /* C++ virtual table segment */
    NON_BANKED,                         /* runtime routines which must not be banked */
    COPY                                /* copy down information: how to initialize variables */
                                        INTO  ROM; /* ,ROM1: To use "ROM1" as well, pass the option -OnB=b to the compiler */
    DEFAULT_ROM, PAGED_ROM                           /* routines which can be banked */
                                        INTO  PPAGE_0,PPAGE_1,PPAGE_2,PPAGE_3,ROM1;

    _DATA_ZEROPAGE,                     /* zero page variables */
    MY_ZEROPAGE                         INTO  Z_RAM;



What i don't understand is...can i use PPage1 and PPagge3 in placement section? This comment confuse me...//PAGE already contained in segment at 0x4000-0x7FFF it seems that they refers to the same memory locations of ROM sections.


My code now is quite big about 50 Kb and when I use BDM to download code during the memory check in Hi Wave i receive error 51. But if I use PPAGE1 and PPAge3 everything is fine.

Can i use this line in PRM:


DEFAULT_ROM, PAGED_ROM                           /* routines which can be banked */
                                        INTO  PPAGE_0,PPAGE_1,PPAGE_2,PPAGE_3,ROM1;

or is making some troubles???