<?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: Unsecuring FLASH using backdoor keys - M5223X</title>
    <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Unsecuring-FLASH-using-backdoor-keys-M5223X/m-p/203854#M9512</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Hi All&lt;BR /&gt;&lt;BR /&gt;A short follow up to avoid a possible obvious suggestion:&lt;BR /&gt;&lt;BR /&gt;I have also tried using the same FLASH write routine as used for generally writing new value to FLASH (configured the FLASH controller, uses FLASH commands and runs from SRAM)&lt;BR /&gt;&lt;BR /&gt;...&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; CFMMCR |= KEYACC;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // enable backdoor key access&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; fnWriteLongWordFlash(ulKeyLocation++, key[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; fnWriteLongWordFlash(ulKeyLocation, key[1]);&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; CFMMCR &amp;amp;= ~KEYACC;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; // normal flash access&lt;BR /&gt;...&lt;BR /&gt;&lt;BR /&gt;and these didn't seem to help.&lt;BR /&gt;&lt;BR /&gt;One strange effect occurs when&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; CFMMCR |= KEYACC;&lt;BR /&gt;is used but the normal FLASH access is not returned. The program runs correctly (presumably instruction accesses as normal) but reading data from FLASH (presumably data accesses) returns the sequence 0xff 0x04 0xc8 0xff 0xff 0x04, 0xc8, 0xff 0xff ... repeated.&lt;BR /&gt;I wonder whether someone can explain that?&lt;BR /&gt;&lt;BR /&gt;Regards&lt;BR /&gt;&lt;BR /&gt;Mark&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 18 Mar 2008 06:56:31 GMT</pubDate>
    <dc:creator>mjbcswitzerland</dc:creator>
    <dc:date>2008-03-18T06:56:31Z</dc:date>
    <item>
      <title>Unsecuring FLASH using backdoor keys - M5223X</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Unsecuring-FLASH-using-backdoor-keys-M5223X/m-p/203853#M9511</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi All&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;We have been using the security function to block access to internal program in FLASH - this stops any BDM access and thus also subsequent debugging and is perfect for the protection requirement.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It is possible for us to upload new encrypted code via the Internet (HTTP post) to the device - the CPU can delete and program the new code after decryption so there is generally no need to be able to access the FLASH at a later time.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If it is necessary to be able to debug on a board we can delete the complete code via EzPort, which opens up BDM access again, and then work normally.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;What we are missing is the ability to unlock a board by entering the backdoor keys (eg. when EzPort is not an option). This is implemented on a web side in the device, allowing the (secret) 16 bytes backdoor keys to be entered and the idea is to temporarily unlock the FLASH (security is deactivated until next reset) and then clear the configuration FLASH in this state (write block 0x400 to 0x418&amp;nbsp; to zero).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Presently the last step is proving to be a difficulty. We have tried various interpretations of the guidelines to doing this in the users' manual but haven't been successful yet. What is sure is that the FLASH is secured and that the backdoor access is indeed enabled. Has any one achieved this?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here are more details:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The security setting:&lt;/SPAN&gt;&lt;BR /&gt;&lt;I&gt;.long 0x11223344&amp;nbsp;&amp;nbsp;&amp;nbsp; // backdoor key set to 0x1122334455667788&lt;BR /&gt;.long 0x55667788&lt;BR /&gt;.long 0x00000000&lt;BR /&gt;.long 0x00000000&lt;BR /&gt;.long 0x00000000&lt;BR /&gt;.long 0x80004AC8&amp;nbsp; // security enabled with backdoor access allowed&lt;/I&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This is a variant of the code being used to try to unlock this (the backdoor keys are passed as two long words):&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;DIV class="msg_source_code"&gt;&lt;DIV class="text_smallest"&gt;Code:&lt;/DIV&gt;&lt;PRE&gt;extern int fnEnableBackdoor(unsigned long key[2]){&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned long *ulKeyLocation = (unsigned long *)0x400;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (CFMSEC &amp;amp; SECSTAT) {&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // device secured—&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (CFMSEC &amp;amp; KEYEN) {&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // is backdoor key access enabled–&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CFMMCR |= KEYACC;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // enable backdoor key access&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(unsigned long*)(BACKDOOR_FLASH + ulKeyLocation++)) = key[0]; // write backdoor access keys&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(unsigned long*)(BACKDOOR_FLASH + ulKeyLocation)) = key[1];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CFMMCR &amp;amp;= ~KEYACC;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; // normal flash access&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!(CFMSEC &amp;amp; SECSTAT)) {&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; // check whether the device could be unsecured&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; return 1;&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; else {&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; return 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;&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; else {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 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;&amp;nbsp; return 1;}&lt;/PRE&gt;&lt;/DIV&gt;&lt;BR /&gt;&amp;nbsp;It is not absolutely clear whether the writes to the backdoor keys need to be via the backdoor or direct - we have tried all combinations. Some cause exceptions when tried, some don't, but no attempt has yet been successful in actually unsecuring a device.&lt;BR /&gt;&lt;BR /&gt;Any ideas?&lt;BR /&gt;&lt;BR /&gt;Regards&lt;BR /&gt;&lt;BR /&gt;Mark Butcher&lt;BR /&gt;&lt;BR /&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.uTasker.com" rel="nofollow noopener noreferrer" target="_blank"&gt;www.uTasker.com&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Mar 2008 05:55:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Unsecuring-FLASH-using-backdoor-keys-M5223X/m-p/203853#M9511</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2008-03-18T05:55:37Z</dc:date>
    </item>
    <item>
      <title>Re: Unsecuring FLASH using backdoor keys - M5223X</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Unsecuring-FLASH-using-backdoor-keys-M5223X/m-p/203854#M9512</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Hi All&lt;BR /&gt;&lt;BR /&gt;A short follow up to avoid a possible obvious suggestion:&lt;BR /&gt;&lt;BR /&gt;I have also tried using the same FLASH write routine as used for generally writing new value to FLASH (configured the FLASH controller, uses FLASH commands and runs from SRAM)&lt;BR /&gt;&lt;BR /&gt;...&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; CFMMCR |= KEYACC;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // enable backdoor key access&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; fnWriteLongWordFlash(ulKeyLocation++, key[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; fnWriteLongWordFlash(ulKeyLocation, key[1]);&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; CFMMCR &amp;amp;= ~KEYACC;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; // normal flash access&lt;BR /&gt;...&lt;BR /&gt;&lt;BR /&gt;and these didn't seem to help.&lt;BR /&gt;&lt;BR /&gt;One strange effect occurs when&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; CFMMCR |= KEYACC;&lt;BR /&gt;is used but the normal FLASH access is not returned. The program runs correctly (presumably instruction accesses as normal) but reading data from FLASH (presumably data accesses) returns the sequence 0xff 0x04 0xc8 0xff 0xff 0x04, 0xc8, 0xff 0xff ... repeated.&lt;BR /&gt;I wonder whether someone can explain that?&lt;BR /&gt;&lt;BR /&gt;Regards&lt;BR /&gt;&lt;BR /&gt;Mark&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Mar 2008 06:56:31 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Unsecuring-FLASH-using-backdoor-keys-M5223X/m-p/203854#M9512</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2008-03-18T06:56:31Z</dc:date>
    </item>
    <item>
      <title>Re: Unsecuring FLASH using backdoor keys - M5223X</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Unsecuring-FLASH-using-backdoor-keys-M5223X/m-p/203855#M9513</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Mark,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I don't know Coldfires well, but on S12/S12X parts setting KEYACC bit makes flash memory not readable. So you are right, code between your C&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;|= KEYACC and &amp;amp;= ~KEYACC lines should run not from&amp;nbsp;flash. Also&amp;nbsp;you should make sure that you are reading your backdoor keys also not from flash. Are key[0], key[1]... consts in flash? If so then I believe it wan't work that way.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Regards&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Mar 2008 11:57:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Unsecuring-FLASH-using-backdoor-keys-M5223X/m-p/203855#M9513</guid>
      <dc:creator>kef</dc:creator>
      <dc:date>2008-03-18T11:57:38Z</dc:date>
    </item>
    <item>
      <title>Re: Unsecuring FLASH using backdoor keys - M5223X</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Unsecuring-FLASH-using-backdoor-keys-M5223X/m-p/203856#M9514</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Hi Kef&lt;BR /&gt;&lt;BR /&gt;The keys used for comparison are entered by the user - they are passed as variables and so are not read form the FLASH.&lt;BR /&gt;&lt;BR /&gt;What I have seen is that the code between |= KEYACC and &amp;amp;= ~KEYACC can run from FLASH but data reads from FLASH return 'strange' values. In fact if the &amp;amp;= ~HEYACC is never restored, the code continues to operate normally as long as it doesn't read const data from FLASH.&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;BR /&gt;I'm still hunting for new ideas as to what could help.&lt;BR /&gt;&lt;BR /&gt;Regards&lt;BR /&gt;&lt;BR /&gt;Mark&lt;BR /&gt;&lt;BR /&gt;PS. I will try running the code from SRAM to be sure...&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Mar 2008 19:29:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Unsecuring-FLASH-using-backdoor-keys-M5223X/m-p/203856#M9514</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2008-03-18T19:29:21Z</dc:date>
    </item>
    <item>
      <title>Re: Unsecuring FLASH using backdoor keys - M5223X</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Unsecuring-FLASH-using-backdoor-keys-M5223X/m-p/203857#M9515</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;This &lt;A href="http://forums.freescale.com/freescale/board/message?board.id=CFCOMM&amp;amp;message.id=2847&amp;amp;query.id=1180616#M2847" target="_blank"&gt;thread&lt;/A&gt; has some info on programming via the backdoor, and for a ColdFire CPU. The thread also has a link to another thread with some source code. &lt;BR /&gt;&lt;BR /&gt;---Tom&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Mar 2008 21:53:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Unsecuring-FLASH-using-backdoor-keys-M5223X/m-p/203857#M9515</guid>
      <dc:creator>J2MEJediMaster</dc:creator>
      <dc:date>2008-03-18T21:53:44Z</dc:date>
    </item>
    <item>
      <title>Re: Unsecuring FLASH using backdoor keys - M5223X</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Unsecuring-FLASH-using-backdoor-keys-M5223X/m-p/203858#M9516</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Hi Tom&lt;BR /&gt;&lt;BR /&gt;The thread deals with writing to memory using the backdoor accesses and not backdoor keys.&lt;BR /&gt;&lt;BR /&gt;After some more experimentation (and extra debug support) we have found some interesting new details.&lt;BR /&gt;&lt;BR /&gt;1. Originally the FLASH configuration is set up as&lt;BR /&gt;0x11223344&lt;BR /&gt;0x55667788&lt;BR /&gt;0x00000000&lt;BR /&gt;0x00000000&lt;BR /&gt;0x00000000&lt;BR /&gt;0x80004ac8&lt;BR /&gt;&lt;BR /&gt;2. Using the original code together with the method of writing via back door&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; fnWriteLongWordFlash(ulKeyLocation++, key[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; fnWriteLongWordFlash(ulKeyLocation, key[1]);&lt;BR /&gt;does in fact work!&lt;BR /&gt;&lt;BR /&gt;What we find is that issuing the backdoor key sequence unsecures the device temporarily (until next reset).&lt;BR /&gt;&lt;BR /&gt;However, if an incorrect back door key is tried, it actually overwrites the original.&lt;BR /&gt;If, for example, 11223340 is attempted, the FLASH content afterwards is:&lt;BR /&gt;0x1122334&lt;B&gt;0&lt;/B&gt;&lt;BR /&gt;0x55667788&lt;BR /&gt;0x00000000&lt;BR /&gt;0x00000000&lt;BR /&gt;0x00000000&lt;BR /&gt;0x80004ac8&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;The backdoor keys have been overwritten (?) and then the access code works with the new one after a reset. If the values 0x00000000 are attempted, they are no longer valid so unsecuring is no longer possible. Since we hadn't seen this before, the unsecure looked as if it was always failing, although it obvioulsy does work in a way.&lt;BR /&gt;&lt;BR /&gt;As well as this unexpected behavious it also throws up a new question as to the use of the unsecure capabilitly. Since connecting a BDM to the board generates a reset, it simply secures itself again so still doesn't solve any problems.&lt;BR /&gt;&lt;BR /&gt;Therefore we have tried simply issuing a mass erase (after password protection). This deletes all code, including the FLASH configurations and so leaves the board in a state with no traces of original program and with BDM capabilities. This is in fact a better level of security... but it would still be interesting to understand the backdoor key method and its possible limitations.&lt;BR /&gt;&lt;BR /&gt;Regards&lt;BR /&gt;&lt;BR /&gt;Mark&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Mar 2008 23:34:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Unsecuring-FLASH-using-backdoor-keys-M5223X/m-p/203858#M9516</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2008-03-18T23:34:22Z</dc:date>
    </item>
    <item>
      <title>Re: Unsecuring FLASH using backdoor keys - M5223X</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Unsecuring-FLASH-using-backdoor-keys-M5223X/m-p/203859#M9517</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;
&lt;P class="MsoNormal" style="MARGIN: 0pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;FONT size="3"&gt;&lt;FONT face="Times New Roman"&gt;Hi Mark,&lt;NAMESPACE prefix="o" ns="urn:schemas-microsoft-com:office:office"&gt;&lt;/NAMESPACE&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;FONT size="3"&gt;&lt;FONT face="Times New Roman"&gt;Enclosed is a CodeWarrior for ColdFire 7.0 project that runs on the M5213EVB.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0pt"&gt;&lt;FONT size="3"&gt;&lt;FONT face="Times New Roman"&gt;&lt;SPAN style="COLOR: black"&gt;If you don’t have or don’t want to install the free version, there are s19 and elf files in the ~&lt;/SPAN&gt;&lt;FONT color="#000000"&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: black"&gt;FlashSecurityCode\mcf5213\obj\mwerks\m5213evb folder.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I’ve tested using CF Flasher with S19 that it works.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;FONT size="3"&gt;&lt;FONT face="Times New Roman"&gt;Set your terminal window to 19200, 8, 1, no parity.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;FONT size="3"&gt;&lt;FONT face="Times New Roman"&gt;Instructions get printed with reset…and by typing “help”.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;FONT size="3"&gt;&lt;FONT face="Times New Roman"&gt;The simplest test is to secure the flash, try accessing via BDM (and you will not be able to), then unsecure the flash and try accessing via BDM (and you will be able to).&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;FONT size="3"&gt;&lt;FONT face="Times New Roman"&gt;The command line steps to secure the flash:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;FONT size="3"&gt;&lt;FONT face="Times New Roman"&gt;CFM&amp;gt; &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;fsw 4ac8&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//writing to the CFM security register indicating you want to secure the flash&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;FONT size="3"&gt;&lt;FONT face="Times New Roman"&gt;CFM&amp;gt; &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;flash&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//copies the CFM security register to flash (actually erases the 1&lt;SUP&gt;st&lt;/SUP&gt; page of flash, copies vector table and CFM registers to flash&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;FONT size="3"&gt;&lt;FONT face="Times New Roman"&gt;CFM&amp;gt; &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;rst&lt;SPAN style="mso-tab-count: 2"&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; &lt;/SPAN&gt;//resets the MCU to have flash mode of operation take affect.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;FONT size="3"&gt;&lt;FONT face="Times New Roman"&gt;Try accessing MCU via BDM and you should fail&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;FONT size="3"&gt;&lt;FONT face="Times New Roman"&gt;The command line steps to un-secure flash:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;FONT size="3"&gt;&lt;FONT face="Times New Roman"&gt;CFM&amp;gt; &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;fsw 0&lt;SPAN style="mso-tab-count: 2"&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; &lt;/SPAN&gt;//clear the CFM security register&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;FONT size="3"&gt;&lt;FONT face="Times New Roman"&gt;CFM&amp;gt; &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;flash&lt;SPAN style="mso-tab-count: 2"&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; &lt;/SPAN&gt;// copies the updated CFM security register to flash&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;FONT size="3"&gt;&lt;FONT face="Times New Roman"&gt;CFM&amp;gt; &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;rst&lt;SPAN style="mso-tab-count: 2"&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; &lt;/SPAN&gt;// resets the MCU to have flash mode of operation take affect.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;FONT size="3"&gt;&lt;FONT face="Times New Roman"&gt;Try accessing MCU via BDM and you should succeed&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;FONT size="3"&gt;&lt;FONT face="Times New Roman"&gt;I’ll also post this reply to the&amp;nbsp;WildRice ColdFire Forum.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;FONT size="3"&gt;&lt;FONT face="Times New Roman"&gt;Regards, &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;FONT size="3"&gt;&lt;FONT face="Times New Roman"&gt;David &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 22 Mar 2008 05:33:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Unsecuring-FLASH-using-backdoor-keys-M5223X/m-p/203859#M9517</guid>
      <dc:creator>DavidS</dc:creator>
      <dc:date>2008-03-22T05:33:32Z</dc:date>
    </item>
    <item>
      <title>Re: Unsecuring FLASH using backdoor keys - M5223X</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Unsecuring-FLASH-using-backdoor-keys-M5223X/m-p/203860#M9518</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Hi David&lt;BR /&gt;&lt;BR /&gt;I am using a similar technique (controlled via Ethernet) to do the same, which doesn't have any problems, however it is not the method which I am discussing.&lt;BR /&gt;&lt;BR /&gt;Reprogramming the first sector to gain access is not the same as gaining temporary access by using the backdoor keys.&lt;BR /&gt;&lt;BR /&gt;To test this, "fsw 80004ac8" needs to be set.&lt;BR /&gt;Also 2 x 4 byte secret keys need to be programmed to 0x400 and 0x404 (0x00000000 and 0xffffffff are not valid keys)&lt;BR /&gt;&lt;BR /&gt;After the reset, the goal is not to reprogram the sector again - which gains permanent access - but to enter the secret keys to gain 'temporary' access. After the next reset the FLASH is then still secured.&lt;BR /&gt;The question is however whether there is any real advantage of being able to do this since connecting the BDM resets the chip and thus blocks access again - or is there a way around this...?&lt;BR /&gt;&lt;BR /&gt;Regards&lt;BR /&gt;&lt;BR /&gt;Mark&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://www.uTasker.com" rel="nofollow" target="_blank"&gt;www.uTasker.com&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 22 Mar 2008 06:59:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Unsecuring-FLASH-using-backdoor-keys-M5223X/m-p/203860#M9518</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2008-03-22T06:59:29Z</dc:date>
    </item>
  </channel>
</rss>

