AnsweredAssumed Answered

HCS12 ROM Checksum, CW 3.1, Banked ROM PRM File HOW?

Question asked by Bill Scheremeta on Aug 21, 2006
Latest reply on Aug 21, 2006 by CompilerGuru
I would like to add checksum protection to my HCS12 application. It runs in a 128K (A128). I am using CW3.1.
 
There are  supplied examples on how to use the linker's .PRM file to have the linker calculate and insert a checksum. Unfortunately, none of the PRM have a banked rom placement scheme.
 
Can some kind person 1)post a PRM file using the checksum facility to show usage with banked rom?
2) post an example checksum calculation to compute the actual checksum when there is banked rom?
 
I see that ADAM had some problems, and did not get an answer.
 
My prm file is:
 
NAMES
END
SEGMENTS   
   // remapped memory
   EEPROM_AREA = READ_WRITE   0x0800 TO 0x0FFF;       
   RAM = READ_WRITE 0x2000 TO 0x3FFF;
   /* unbanked FLASH ROM */
   ROM_4000 = READ_ONLY  0x4000 TO 0x7FFF;
   ROM_C000 = READ_ONLY  0xC000 TO 0xFEFF;
   /* banked FLASH ROM */
   PAGE_38 = READ_ONLY  0x388000 TO 0x38BFFF;
   PAGE_39 = READ_ONLY  0x398000 TO 0x39BFFF;
   PAGE_3A = READ_ONLY  0x3A8000 TO 0x3ABFFF;
   PAGE_3B = READ_ONLY  0x3B8000 TO 0x3BBFFF;
   PAGE_3C = READ_ONLY  0x3C8000 TO 0x3CBFFF;
   PAGE_3D = READ_ONLY  0x3D8000 TO 0x3DBFFF;
/*    PAGE_3E = READ_ONLY  0x3E8000 TO 0x3EBFFF; not used: equivalent to ROM_4000 */
/*    PAGE_3F = READ_ONLY  0x3F8000 TO 0x3FBFFF; not used: equivalent to ROM_C000 */
END
PLACEMENT
   _PRESTART,                   /* Used in HIWARE format: jump to _Startup at the code start */
   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 */
                                /* in case you want to use ROM_4000 here as well, make sure
                                   that all files (incl. library files) are compiled with the
                                   option: -OnB=b */
                                INTO  ROM_C000/*, ROM_4000*/;
   DEFAULT_ROM                  INTO  PAGE_38,PAGE_39,PAGE_3A,PAGE_3B,PAGE_3C,PAGE_3D;
   DEFAULT_RAM                  INTO  RAM;
   EEPROM                 INTO  EEPROM_AREA;
END
STACKSIZE 0x200
VECTOR 0 _Startup /* reset vector: this is the default entry point for a C/C++ application. */
VECTOR 1 _Startup /* CMR reset vector */
VECTOR 2 _Startup /* COP reset vector */
 
 

Outcomes