<?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>ColdFire/68K Microcontrollers and Processors中的主题 Re: Problems using the 5275 MDHA for MD5 / HMAC</title>
    <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Problems-using-the-5275-MDHA-for-MD5-HMAC/m-p/180801#M7367</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;Hello, I think the "transform" part may be causing the issue. It seems you execute transform part n-times, depending on the size of the input data.&amp;nbsp; For this, a different approach may be used:&lt;BR /&gt;&lt;BR /&gt;Performing a Standard HASH Operation, multiple 64 byte input blocks:&lt;BR /&gt;1. reset the MDHA using SWR bit&lt;BR /&gt;2. MDCR register write&lt;BR /&gt;3. MDMR register write&lt;BR /&gt;4. write the complete data size to the MDDSR register (for example 256 for four input blocks)&lt;BR /&gt;5. poll MDSR[IFL] to check if there is a space available in the FIFO&lt;BR /&gt;6. write a longword to the FIFO&lt;BR /&gt;7. repeat steps 5 and 6 until the entire block is written&lt;BR /&gt;8. set the GO bit&lt;BR /&gt;9. wait for MDSR[INT]&lt;BR /&gt;&lt;BR /&gt;This approach gives reliable outputs.&lt;BR /&gt;&lt;BR /&gt;Source code example:&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; MCF_MDHA_MDCMR = (0 | MCF_MDHA_MDCMR_CI&lt;BR /&gt;&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;| MCF_MDHA_MDCMR_RI&lt;BR /&gt;&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;| MCF_MDHA_MDCMR_SWR ) &amp;nbsp;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// do a reset&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (!MCF_MDHA_MDSR &amp;amp; MCF_MDHA_MDSR_RD){}&amp;nbsp;&amp;nbsp;&amp;nbsp;// reset done?&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_MDHA_MDCR = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// no ints&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_MDHA_MDMR = (0 |&lt;BR /&gt;&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;&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; MCF_MDHA_MDMR_INIT |&lt;BR /&gt;&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;&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; MCF_MDHA_MDMR_ALG);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // select MD5 with init&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_MDHA_MDDSR = 256;&amp;nbsp;&amp;nbsp; //256 input bytes in total&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(i=0;i&amp;lt;256/4;i++)&amp;nbsp;&amp;nbsp;&amp;nbsp; //move 64 longwords to the fifo&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //wait until there is a space in the FIFO&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while((MCF_MDHA_MDSR &amp;amp; 0x1F0000 ) == 0x10)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{} //do nothing&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_MDHA_MDIN = input_data[i];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//move longword to the FIFO&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_MDHA_MDCMR = MCF_MDHA_MDCMR_GO;&amp;nbsp;&amp;nbsp;&amp;nbsp;// GO&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;k = MCF_MDHA_MDSR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* wait for digest to complete */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;while( !( MCF_MDHA_MDSR &amp;amp; MCF_MDHA_MDSR_INT ))&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Check for errors! */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if ( MCF_MDHA_MDSR &amp;amp; MCF_MDHA_MDSR_ERR)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf("Error during message digest!!!\r\n" );&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k = MCF_MDHA_MDISR;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf("MCF_MDHA_MDISR: 0x%08x\n\r", k);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 05 Sep 2008 18:52:17 GMT</pubDate>
    <dc:creator>Martin_</dc:creator>
    <dc:date>2008-09-05T18:52:17Z</dc:date>
    <item>
      <title>Problems using the 5275 MDHA for MD5 / HMAC</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Problems-using-the-5275-MDHA-for-MD5-HMAC/m-p/180799#M7365</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;SPAN style="font-family: 'Courier New';"&gt;Hi,&lt;BR /&gt;I am having severe trouble to get the MDHA engine running reliable.&lt;BR /&gt;MCU is a 5275.&lt;BR /&gt;My code consists of three parts: init, transform and final.&lt;BR /&gt;Normal use would be:&lt;BR /&gt;init&lt;BR /&gt;transform 64 bytes&amp;nbsp; n times&lt;BR /&gt;final&lt;BR /&gt;&lt;BR /&gt;But:&lt;BR /&gt;- the result is not always the same though the input is the same&lt;BR /&gt;- sometimes MDHA stalls after the GO cmd with status = 0x00000498&lt;BR /&gt;Any attempt to change the status=0498 results in an error status.&lt;BR /&gt;&lt;BR /&gt;I appreciate any help!&lt;BR /&gt;Kind regards,&lt;BR /&gt;Georg Brechlin&lt;BR /&gt;&lt;BR /&gt;#define&amp;nbsp;&amp;nbsp;&amp;nbsp; MdsrData(k)&amp;nbsp;&amp;nbsp;&amp;nbsp; (k&amp;amp;0x001F0000)&lt;BR /&gt;#define&amp;nbsp;&amp;nbsp;&amp;nbsp; MdsrBusy(k)&amp;nbsp;&amp;nbsp;&amp;nbsp; (k&amp;amp;0x00000010)&lt;BR /&gt;#define&amp;nbsp;&amp;nbsp;&amp;nbsp; MdsrHash(k)&amp;nbsp;&amp;nbsp;&amp;nbsp; (k&amp;amp;0x00000040)&lt;BR /&gt;#define&amp;nbsp;&amp;nbsp;&amp;nbsp; MdsrPad(k)&amp;nbsp;&amp;nbsp;&amp;nbsp; ((k&amp;amp;0x0000E000)==0x00008000)&lt;BR /&gt;#define&amp;nbsp;&amp;nbsp;&amp;nbsp; MdsrInt(k)&amp;nbsp;&amp;nbsp;&amp;nbsp; (k&amp;amp;0x00000007)&lt;BR /&gt;&lt;BR /&gt;#define&amp;nbsp;&amp;nbsp;&amp;nbsp; MdsrHashDone(k)&amp;nbsp;&amp;nbsp;&amp;nbsp; ((!MdsrBusy(k)) || (MdsrHash(k)) || (MdsrData(k)) || (!MdsrPad(k)) )&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;init:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_MDHA_MDCMR = 0x00000001;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // Software Reset&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (!(MCF_MDHA_MDSR&amp;amp;0x00000008)){}&amp;nbsp;&amp;nbsp;&amp;nbsp; // still resetting?&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_MDHA_MDCR = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; // no Ints&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_MDHA_MDMR = 0x21;&amp;nbsp;&amp;nbsp;&amp;nbsp; // MD5 Init&lt;BR /&gt;&lt;BR /&gt;transform puts 16 32bit words into the fifo and sets new datasize to 64 bytes&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (j=16;j;j--)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; d = mdha_byte_to_uint(&amp;amp;k,d);&amp;nbsp;&amp;nbsp; // fill 32bit word with bytes&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_MDHA_MDIN = k;&amp;nbsp;&amp;nbsp;&amp;nbsp; // put 32 bit word to fifo&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_MDHA_MDDSR = 64;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; 64 bytes filled in&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; k = MCF_MDHA_MDSR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // wait for MDSR status:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // (makes no big difference if waiting or not)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // - bit hash = 0&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // - bit busy = 1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // - bits IFL = 0 , Input Fifo Level&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (MdsrHashDone(k))&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; k = MCF_MDHA_MDSR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&lt;BR /&gt;final: tell MDHA to calculate the hash&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_MDHA_MDCMR = 0x00000008;&amp;nbsp;&amp;nbsp;&amp;nbsp; // GO ...&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; k = MCF_MDHA_MDSR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ((MdsrBusy(k))||(!MdsrInt(k)))&amp;nbsp;&amp;nbsp;&amp;nbsp; // wait while BUSY=1 and DONE=0&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; k = MCF_MDHA_MDSR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // get the result&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; md5_transform_erg[0] = MCF_MDHA_MDA0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; md5_transform_erg[1] = MCF_MDHA_MDB0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; md5_transform_erg[2] = MCF_MDHA_MDC0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; md5_transform_erg[3] = MCF_MDHA_MDD0;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_MDHA_MDCMR = 0x00000004;&amp;nbsp;&amp;nbsp;&amp;nbsp; // clr Int flag&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 19 Aug 2008 20:36:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Problems-using-the-5275-MDHA-for-MD5-HMAC/m-p/180799#M7365</guid>
      <dc:creator>taigbr</dc:creator>
      <dc:date>2008-08-19T20:36:48Z</dc:date>
    </item>
    <item>
      <title>Re: Problems using the 5275 MDHA for MD5 / HMAC</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Problems-using-the-5275-MDHA-for-MD5-HMAC/m-p/180800#M7366</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;FONT face="Courier New"&gt;It seems to be a matter of speed. If the cache is turned off&lt;BR /&gt;there still is a problem, but not so often. The MDHA engine&lt;BR /&gt;probably needs some cycles for execution, but nothing is&lt;BR /&gt;mentioned in the manual.&lt;BR /&gt;Kind regards,&lt;BR /&gt;Georg&lt;BR /&gt;&lt;BR /&gt;&lt;/FONT&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 19 Aug 2008 22:05:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Problems-using-the-5275-MDHA-for-MD5-HMAC/m-p/180800#M7366</guid>
      <dc:creator>taigbr</dc:creator>
      <dc:date>2008-08-19T22:05:33Z</dc:date>
    </item>
    <item>
      <title>Re: Problems using the 5275 MDHA for MD5 / HMAC</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Problems-using-the-5275-MDHA-for-MD5-HMAC/m-p/180801#M7367</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;Hello, I think the "transform" part may be causing the issue. It seems you execute transform part n-times, depending on the size of the input data.&amp;nbsp; For this, a different approach may be used:&lt;BR /&gt;&lt;BR /&gt;Performing a Standard HASH Operation, multiple 64 byte input blocks:&lt;BR /&gt;1. reset the MDHA using SWR bit&lt;BR /&gt;2. MDCR register write&lt;BR /&gt;3. MDMR register write&lt;BR /&gt;4. write the complete data size to the MDDSR register (for example 256 for four input blocks)&lt;BR /&gt;5. poll MDSR[IFL] to check if there is a space available in the FIFO&lt;BR /&gt;6. write a longword to the FIFO&lt;BR /&gt;7. repeat steps 5 and 6 until the entire block is written&lt;BR /&gt;8. set the GO bit&lt;BR /&gt;9. wait for MDSR[INT]&lt;BR /&gt;&lt;BR /&gt;This approach gives reliable outputs.&lt;BR /&gt;&lt;BR /&gt;Source code example:&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; MCF_MDHA_MDCMR = (0 | MCF_MDHA_MDCMR_CI&lt;BR /&gt;&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;| MCF_MDHA_MDCMR_RI&lt;BR /&gt;&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;| MCF_MDHA_MDCMR_SWR ) &amp;nbsp;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// do a reset&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (!MCF_MDHA_MDSR &amp;amp; MCF_MDHA_MDSR_RD){}&amp;nbsp;&amp;nbsp;&amp;nbsp;// reset done?&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_MDHA_MDCR = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// no ints&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_MDHA_MDMR = (0 |&lt;BR /&gt;&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;&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; MCF_MDHA_MDMR_INIT |&lt;BR /&gt;&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;&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; MCF_MDHA_MDMR_ALG);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // select MD5 with init&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_MDHA_MDDSR = 256;&amp;nbsp;&amp;nbsp; //256 input bytes in total&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(i=0;i&amp;lt;256/4;i++)&amp;nbsp;&amp;nbsp;&amp;nbsp; //move 64 longwords to the fifo&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //wait until there is a space in the FIFO&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while((MCF_MDHA_MDSR &amp;amp; 0x1F0000 ) == 0x10)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{} //do nothing&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_MDHA_MDIN = input_data[i];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//move longword to the FIFO&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_MDHA_MDCMR = MCF_MDHA_MDCMR_GO;&amp;nbsp;&amp;nbsp;&amp;nbsp;// GO&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;k = MCF_MDHA_MDSR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* wait for digest to complete */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;while( !( MCF_MDHA_MDSR &amp;amp; MCF_MDHA_MDSR_INT ))&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Check for errors! */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if ( MCF_MDHA_MDSR &amp;amp; MCF_MDHA_MDSR_ERR)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf("Error during message digest!!!\r\n" );&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k = MCF_MDHA_MDISR;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf("MCF_MDHA_MDISR: 0x%08x\n\r", k);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 05 Sep 2008 18:52:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Problems-using-the-5275-MDHA-for-MD5-HMAC/m-p/180801#M7367</guid>
      <dc:creator>Martin_</dc:creator>
      <dc:date>2008-09-05T18:52:17Z</dc:date>
    </item>
  </channel>
</rss>

