<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Checksum Help in S12 / MagniV Microcontrollers</title>
    <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Checksum-Help/m-p/129248#M1139</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Thanks.&amp;nbsp; Just to clarify, only READ_ONLY segments would need the NO_CHECKSUM as RAM segements will automatically be ignored, right?&amp;nbsp; Also, the linker will automatically handle all of the pages (even the ones not visible)?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 06 Sep 2006 22:07:49 GMT</pubDate>
    <dc:creator>rhb3</dc:creator>
    <dc:date>2006-09-06T22:07:49Z</dc:date>
    <item>
      <title>Checksum Help</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Checksum-Help/m-p/129246#M1137</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Currently, I'm using the automatic method to have the linker calculate checksums.&amp;nbsp; I'm concerned for two reasons:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;1)&amp;nbsp; Notice that I'm using banked and&amp;nbsp;I have a ROM_FLASH sector.&amp;nbsp; This is an area inteneded for saving variables that may indeed change.&amp;nbsp; As it is READ_ONLY is the linker using this area?&amp;nbsp; Can I mark it to not be used.&amp;nbsp; Also, the linker ignores any area in a segment that uses the default fill value defined for that segment, right?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;2) I have this:&amp;nbsp; while (__CHECKSUM_IS_OK == FALSE) {}&lt;/DIV&gt;&lt;DIV&gt;...at the beginning of my program to ensure all is well or reset and try again.&amp;nbsp; My "end game" is to display a 4 hexadecimal character checksum through the UI.&amp;nbsp; How do I access the structure to report this informatio to the user who might call in to service and need to report the version of firmware they are running, etc.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Thanks!&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="msg_source_code"&gt;&lt;SPAN class="text_smallest"&gt;Code:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;PRE&gt;/* This is a linker parameter file for the MC9S12E128 */NAMESENDSECTIONS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* List of all sections specified on the "Build options" tab */&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RAM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = READ_WRITE 0x002000 TO 0x003FFF FILL 0xAA 0x55;&amp;nbsp;&amp;nbsp; /* unbanked FLASH ROM */&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ROM_FLASH&amp;nbsp; = READ_ONLY&amp;nbsp; 0x3E8000 TO 0x3E83FF FILL 0x00;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ROM_4400&amp;nbsp;&amp;nbsp; = READ_ONLY&amp;nbsp; 0x004400 TO 0x007FFF FILL 0x3F;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ROM_C000&amp;nbsp;&amp;nbsp; = READ_ONLY&amp;nbsp; 0x00C000 TO 0x00FEFF FILL 0x3F;&amp;nbsp;&amp;nbsp; /* banked FLASH ROM */&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PAGE_38&amp;nbsp;&amp;nbsp;&amp;nbsp; = READ_ONLY&amp;nbsp; 0x388000 TO 0x38BFFF FILL 0x3F;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PAGE_39&amp;nbsp;&amp;nbsp;&amp;nbsp; = READ_ONLY&amp;nbsp; 0x398000 TO 0x39BFFF FILL 0x3F;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PAGE_3A&amp;nbsp;&amp;nbsp;&amp;nbsp; = READ_ONLY&amp;nbsp; 0x3A8000 TO 0x3ABFFF FILL 0x3F;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PAGE_3B&amp;nbsp;&amp;nbsp;&amp;nbsp; = READ_ONLY&amp;nbsp; 0x3B8000 TO 0x3BBFFF FILL 0x3F;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PAGE_3C&amp;nbsp;&amp;nbsp;&amp;nbsp; = READ_ONLY&amp;nbsp; 0x3C8000 TO 0x3CBFFF FILL 0x3F;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PAGE_3D&amp;nbsp;&amp;nbsp;&amp;nbsp; = READ_ONLY&amp;nbsp; 0x3D8000 TO 0x3DBFFF FILL 0x3F;ENDPLACEMENT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SSTACK, DEFAULT_RAM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTO RAM;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CHIMERA_FLASH&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTO ROM_FLASH;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DEFAULT_ROM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTO ROM_4400, PAGE_3C, PAGE_3D, PAGE_38, PAGE_39, PAGE_3A, PAGE_3B;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RTOS, _PRESTART, STARTUP,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ROM_VAR, STRINGS,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NON_BANKED, COPY, .checksum&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTO ROM_C000;ENDINIT _EntryPoint&amp;nbsp;&amp;nbsp; /* The entry point of the application. This function is generated into the CPU module. */STACKSIZE 0x0200&lt;/PRE&gt;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 06 Sep 2006 00:32:40 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Checksum-Help/m-p/129246#M1137</guid>
      <dc:creator>rhb3</dc:creator>
      <dc:date>2006-09-06T00:32:40Z</dc:date>
    </item>
    <item>
      <title>Re: Checksum Help</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Checksum-Help/m-p/129247#M1138</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;There is a NO_CHECKSUM keyword which can be used to exclude certain segments from the automatic linker generated checksums. Note that it does NOT affect the prm file based checksums.&lt;BR /&gt;&amp;gt;&lt;BR /&gt;&amp;gt; MY_ROM = READ_ONLY 0xE020 TO 0xF7FF FILL 0xFF; &lt;BR /&gt;&amp;gt; MY_ROM2 = READ_ONLY 0xF800 TO 0xFEFF FILL 0xAA NO_CHECKSUM; &lt;BR /&gt;&amp;gt;&lt;BR /&gt;&lt;BR /&gt;To your second question, well, you could use the same data structure as the code called with __CHECKSUM_IS_OK does.&lt;BR /&gt;Or, alternatively, use the prm file based checksum for this (or use explicit version for this purpose, for example based on the date).&lt;BR /&gt;&lt;BR /&gt;Daniel&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 06 Sep 2006 03:48:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Checksum-Help/m-p/129247#M1138</guid>
      <dc:creator>CompilerGuru</dc:creator>
      <dc:date>2006-09-06T03:48:10Z</dc:date>
    </item>
    <item>
      <title>Re: Checksum Help</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Checksum-Help/m-p/129248#M1139</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Thanks.&amp;nbsp; Just to clarify, only READ_ONLY segments would need the NO_CHECKSUM as RAM segements will automatically be ignored, right?&amp;nbsp; Also, the linker will automatically handle all of the pages (even the ones not visible)?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 06 Sep 2006 22:07:49 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Checksum-Help/m-p/129248#M1139</guid>
      <dc:creator>rhb3</dc:creator>
      <dc:date>2006-09-06T22:07:49Z</dc:date>
    </item>
    <item>
      <title>Re: Checksum Help</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Checksum-Help/m-p/129249#M1140</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;The checksum if over READ_WRITE (and CODE) section types only, READ_WRITE, NO_INIT and PAGED areas are not checked.&lt;BR /&gt;&lt;BR /&gt;With "not visible" pages, I guess you mean banked code.&lt;BR /&gt;I'm actually not sure, I guess that you at least have to define a macro so that the code uses far pointers.&lt;BR /&gt;(according to checksum.h, I would add -D_CHECKSUM_USE_FAR_PTR)&lt;BR /&gt;&lt;BR /&gt;This way, checksum.c will use far pointers.&lt;BR /&gt;As far pointers are not especially efficient for a HC12. If you need faster performance you would have to change checksum.c to manually set PPAGE and to relocate the code outside of the 0x8000..0xBFFF area. But this is only an optimization.&lt;BR /&gt;&lt;BR /&gt;Daniel&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 Sep 2006 20:20:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Checksum-Help/m-p/129249#M1140</guid>
      <dc:creator>CompilerGuru</dc:creator>
      <dc:date>2006-09-07T20:20:21Z</dc:date>
    </item>
  </channel>
</rss>

