<?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>8-bit MicrocontrollersのトピックRe: Checksum calculation in AN2399</title>
    <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Checksum-calculation-in-AN2399/m-p/133956#M3573</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Usually for checksum purpose you must add the simple sum of your data list with the known complemented sum to achieve a&amp;nbsp;fixed value, i.e. $FFFF (not $0000).&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;This may well be one's complement&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Encoder&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 22 May 2007 20:29:19 GMT</pubDate>
    <dc:creator>Encoder</dc:creator>
    <dc:date>2007-05-22T20:29:19Z</dc:date>
    <item>
      <title>Checksum calculation in AN2399</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Checksum-calculation-in-AN2399/m-p/133955#M3572</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hi!&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;In AN2399 it says that the checksum is calculated as the 1's complement of the sum of flash memory from 0xF600 to 0xF7FD, but in the example firmware code (last row in icp-kbd.asm in AN2399SW.ZIP) I can see it is calculated as the two's complement. I have verified this by using the CHECKSUM_ADD method in the .prm file and calculated it myself.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;This is what I added in the default.prm file:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;CHECKSUM&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CHECKSUM_ENTRY&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; METHOD_ADD SIZE 1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OF&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; READ_ONLY&amp;nbsp;&amp;nbsp; 0xF600 TO 0xF7FD&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTO&amp;nbsp;&amp;nbsp;&amp;nbsp; READ_ONLY&amp;nbsp;&amp;nbsp; 0xF7FE SIZE 2&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UNDEFINED 0xFF&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; END&lt;BR /&gt;END&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Then I just did&amp;nbsp;a one's complement of the sum and got the value 0x0994.&lt;/DIV&gt;&lt;DIV&gt;But in the last row in source file icp-kbd.asm it says:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;dc.w&amp;nbsp;$0995&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;;ICP_Flag (Checksum)&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;And also, in JB16_ICP.ASM in AN2399 it&amp;nbsp;is just calculated as the sum&amp;nbsp;with no complement.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;What method is the correct one to use? 1's complement, 2's complement or just&amp;nbsp;the sum?&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>Thu, 17 May 2007 16:41:31 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Checksum-calculation-in-AN2399/m-p/133955#M3572</guid>
      <dc:creator>Magnus</dc:creator>
      <dc:date>2007-05-17T16:41:31Z</dc:date>
    </item>
    <item>
      <title>Re: Checksum calculation in AN2399</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Checksum-calculation-in-AN2399/m-p/133956#M3573</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Usually for checksum purpose you must add the simple sum of your data list with the known complemented sum to achieve a&amp;nbsp;fixed value, i.e. $FFFF (not $0000).&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;This may well be one's complement&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Encoder&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 22 May 2007 20:29:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Checksum-calculation-in-AN2399/m-p/133956#M3573</guid>
      <dc:creator>Encoder</dc:creator>
      <dc:date>2007-05-22T20:29:19Z</dc:date>
    </item>
  </channel>
</rss>

