<?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: FXTH87xx security backdoor key issue</title>
    <link>https://community.nxp.com/t5/8-bit-Microcontrollers/FXTH87xx-security-backdoor-key-issue/m-p/657150#M22340</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Dear sir,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is my code flow, please see the comment.&lt;/P&gt;&lt;P&gt;Set backdoor key and secure the device if the device is unsecured. And if device is secured, set KEYACC and write backdoor key to unsecure the device.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="text-decoration: underline;"&gt;&lt;EM&gt;//If the device is not secured, I set backdoor key and KEYEN to 1, and then secure device.&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;if((FOPT&amp;amp;0x03)==0x02){ &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/STRONG&gt;&lt;SPAN style="font-size: 22px;"&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;FlashSectorBackup(0xFE00);&lt;/STRONG&gt;&lt;BR /&gt; &lt;BR /&gt; &lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;vfnFlashErase(0xFFB0);&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt; &lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;au8BackDoorKey[0] = 0x70;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;au8BackDoorKey[1] = 0x61;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;au8BackDoorKey[2] = 0x52;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;au8BackDoorKey[3] = 0x43;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;au8BackDoorKey[4] = 0x34;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;au8BackDoorKey[5] = 0x25;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;au8BackDoorKey[6] = 0x16;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;au8BackDoorKey[7] = 0x07;&lt;/STRONG&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&lt;STRONG&gt;&amp;nbsp;vfnFlashWrite(0xFFB0, (const UINT8*)au8BackDoorKey, N_ELEMENTS(au8BackDoorKey));&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt;u8NewNVOPT = 0xC0;&lt;/STRONG&gt; &lt;BR /&gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt;vfnFlashWrite(0xFFBF, (const UINT8*)&amp;amp;u8NewNVOPT, 1u);&lt;/STRONG&gt;&lt;BR /&gt; &lt;BR /&gt; &lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;FlashSectorRestore(0xFE00); &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; }&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;else{ &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 15px;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/STRONG&gt;&lt;SPAN style="text-decoration: underline;"&gt;&lt;EM&gt;//After reset, the device is secured, then unsecure the device by set KEYACC to 1 and write backbook key, then set KEYACC to 0.&lt;/EM&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;vfnCopyInRAM(); &amp;nbsp;&amp;nbsp;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;vfnUnsecure();&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;FlashSectorBackup(0xFE00);&lt;/STRONG&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;vfnFlashErase(0xFFBF);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM style="text-decoration: underline;"&gt;&amp;nbsp; &amp;nbsp;//If unsecured is successful, then set NVOPT to 0x82 to make device be&amp;nbsp;always unsecured.&lt;/EM&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;u8NewNVOPT=0x82;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;vfnFlashWrite(0xFFBF, (const UINT8*)&amp;amp;u8NewNVOPT, 1u); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;vfnFlashWrite(0xFFB0, (const UINT8*)au8BackDoorKey, N_ELEMENTS(au8BackDoorKey));&amp;nbsp;&amp;nbsp;&lt;/STRONG&gt;&lt;SPAN style="text-decoration: underline; font-size: 22px;"&gt;&lt;EM&gt;&amp;nbsp;&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;FlashSectorRestore(0xFE00);&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; }&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The code can secure the device successfully, but how I could implement the unsecured code in secured situation during debug mode ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I followed your suggestion from the link like below, and make &lt;SPAN&gt;vfnUnsecure() routine to unsecure device.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;A _jive_internal="true" class="link-titled" href="https://community.nxp.com/thread/394482?commentID=653031#comment" title="https://community.nxp.com/message/653031?commentID=653031#comment-653031"&gt;https://community.nxp.com/message/653031?commentID=653031#comment-653031&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This code is right? And it runs in RAM(&lt;STRONG&gt;vfnCopyInRAM)&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;#pragma CODE_SEG FLASH_ROUTINES&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;void vfnUnsecure(void)&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;{ &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;DisableInterrupts;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;FCNFG_KEYACC=1;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;*(byte*)0xFFB0 = 0x70;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;*(byte*)0xFFB1 = 0x61;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;*(byte*)0xFFB2 = 0x52;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;*(byte*)0xFFB3 = 0x43;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;*(byte*)0xFFB4 = 0x34;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;*(byte*)0xFFB5 = 0x25;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;*(byte*)0xFFB6 = 0x16;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;*(byte*)0xFFB7 = 0x07;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;FCNFG_KEYACC=0;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;EnableInterrupts;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;return;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;#pragma CODE_SEG DEFAULT&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;void vfnCopyInRAM(void) &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;{&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned int Size = (unsigned int)Size_Copy_In_RAM;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned char *SourcePtr;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned char *DestinationPtr;&lt;/STRONG&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;SourcePtr= (unsigned char*)Start_Copy_In_RAM;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;DestinationPtr = (unsigned char*)&amp;amp;&lt;SPAN style="font-size: 22px;"&gt;&lt;EM&gt;vfnUnsecure&lt;/EM&gt;&lt;/SPAN&gt;;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;while (Size--)&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*DestinationPtr = *SourcePtr;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DestinationPtr++;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SourcePtr++;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Could you please spend some time to check the code, and teach me how to implement the code in debug mode?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;P&gt;BR,&lt;/P&gt;&lt;P&gt;Sean Wu&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 21 Dec 2016 09:10:43 GMT</pubDate>
    <dc:creator>seanwu</dc:creator>
    <dc:date>2016-12-21T09:10:43Z</dc:date>
    <item>
      <title>FXTH87xx security backdoor key issue</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/FXTH87xx-security-backdoor-key-issue/m-p/657146#M22336</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Dear Sir,&lt;/P&gt;&lt;P&gt;I want to use backdoor key to unsecure 87xx.&amp;nbsp;&lt;/P&gt;&lt;P&gt;But I got an issue to run the code.&lt;/P&gt;&lt;P style="min- padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I added the code to unsecure device. But it will crash to write the compared backdoorkey.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt; FCNFG= FCNFG_KEYACC_MASK;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; vfnFlashWrite(0xFFB0, (const UINT8*)au8BackDoorKey, N_ELEMENTS(au8BackDoorKey)); &lt;EM&gt;--&amp;gt; crash here&lt;/EM&gt;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; FCNFG= 0;&lt;/STRONG&gt;&lt;/P&gt;&lt;P style="min- padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Please help me to check where the issue is. Attached is my code.&lt;/P&gt;&lt;P style="min- padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min- padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;P&gt;BR,&lt;/P&gt;&lt;P&gt;Sean&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-337722"&gt;main.c.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 08 Dec 2016 03:10:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/FXTH87xx-security-backdoor-key-issue/m-p/657146#M22336</guid>
      <dc:creator>seanwu</dc:creator>
      <dc:date>2016-12-08T03:10:44Z</dc:date>
    </item>
    <item>
      <title>Re: FXTH87xx security backdoor key issue</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/FXTH87xx-security-backdoor-key-issue/m-p/657147#M22337</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Looks like you totally misunderstood how backdoor unsecure is supposed to work. Backdoor key in backdoor NV locations should be programmed simultaneously with flash programming. To backdoor unsecure you set KEYACC bit in FCNFG and then write to backdoor key locations as if it was RAM. Not vfnFlashWrite(), but&lt;/P&gt;&lt;P&gt;((const UINT8*)au8BackDoorKey)[0] = key0;&lt;/P&gt;&lt;P&gt;((const UINT8*)au8BackDoorKey)[1] = key1;&lt;/P&gt;&lt;P&gt;etc ...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Another problem is that flash code is not readable while KEYACC is set. So you need to jump to function in RAM, which will set KEYACC, write backdoor key locations,&amp;nbsp;clear KEYACC and return to code in flash. Since flash is not readable while KEYACC is set, you also need&amp;nbsp;to keep in mind that backdoor key values to compare can't stay as constants in flash, you need to&amp;nbsp;copy them to RAM prior to setting KEYACC. As well, since flash is not readable while KEYACC is set, you need to make&amp;nbsp; interrupts disabled while KEYACC is set.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 08 Dec 2016 10:52:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/FXTH87xx-security-backdoor-key-issue/m-p/657147#M22337</guid>
      <dc:creator>kef2</dc:creator>
      <dc:date>2016-12-08T10:52:01Z</dc:date>
    </item>
    <item>
      <title>Re: FXTH87xx security backdoor key issue</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/FXTH87xx-security-backdoor-key-issue/m-p/657148#M22338</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Dear Sir,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Could you suggest how to modify my code(attached file) please?&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;vfnFlashWrite() will copy Pre-compiled flashing algo into RAM first: vfnFlashLoadAlgoInRam();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;So this is not work in RAM?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;Thanks.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;BR,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;Sean&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 09 Dec 2016 00:58:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/FXTH87xx-security-backdoor-key-issue/m-p/657148#M22338</guid>
      <dc:creator>seanwu</dc:creator>
      <dc:date>2016-12-09T00:58:56Z</dc:date>
    </item>
    <item>
      <title>Re: FXTH87xx security backdoor key issue</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/FXTH87xx-security-backdoor-key-issue/m-p/657149#M22339</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="margin: 0in 0in 10pt;"&gt;It is boring and time consuming to create non portable, hard to modify arrays of precompiled codes while compiler is able to do it for you. It’s very easy to move any routine to RAM in CW. See attached example CW6.3 project. I don’t have CW10, but I think it shouldn’t be hard to port this to CW10.x.&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Look at CODE_SEG pragmas in main.c around RAM routine&lt;/LI&gt;&lt;LI style="color: #000000; font-size: 11pt;"&gt;Define RAMCODESEG placement to RAM in PRM file&lt;/LI&gt;&lt;LI style="color: #000000; font-size: 11pt;"&gt;Add –NoSectCompat to linker command line&lt;/LI&gt;&lt;/OL&gt;&lt;P style="margin: 0in 0in 10pt;"&gt;That’s it. With these 3 changes your routine in RAM should work, unless you disabled default ANSI startup routine, which is supposed to copy your RAM code from flash to RAM at startup.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 10 Dec 2016 15:02:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/FXTH87xx-security-backdoor-key-issue/m-p/657149#M22339</guid>
      <dc:creator>kef2</dc:creator>
      <dc:date>2016-12-10T15:02:33Z</dc:date>
    </item>
    <item>
      <title>Re: FXTH87xx security backdoor key issue</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/FXTH87xx-security-backdoor-key-issue/m-p/657150#M22340</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Dear sir,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is my code flow, please see the comment.&lt;/P&gt;&lt;P&gt;Set backdoor key and secure the device if the device is unsecured. And if device is secured, set KEYACC and write backdoor key to unsecure the device.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="text-decoration: underline;"&gt;&lt;EM&gt;//If the device is not secured, I set backdoor key and KEYEN to 1, and then secure device.&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;if((FOPT&amp;amp;0x03)==0x02){ &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/STRONG&gt;&lt;SPAN style="font-size: 22px;"&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;FlashSectorBackup(0xFE00);&lt;/STRONG&gt;&lt;BR /&gt; &lt;BR /&gt; &lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;vfnFlashErase(0xFFB0);&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt; &lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;au8BackDoorKey[0] = 0x70;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;au8BackDoorKey[1] = 0x61;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;au8BackDoorKey[2] = 0x52;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;au8BackDoorKey[3] = 0x43;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;au8BackDoorKey[4] = 0x34;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;au8BackDoorKey[5] = 0x25;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;au8BackDoorKey[6] = 0x16;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;au8BackDoorKey[7] = 0x07;&lt;/STRONG&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&lt;STRONG&gt;&amp;nbsp;vfnFlashWrite(0xFFB0, (const UINT8*)au8BackDoorKey, N_ELEMENTS(au8BackDoorKey));&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt;u8NewNVOPT = 0xC0;&lt;/STRONG&gt; &lt;BR /&gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt;vfnFlashWrite(0xFFBF, (const UINT8*)&amp;amp;u8NewNVOPT, 1u);&lt;/STRONG&gt;&lt;BR /&gt; &lt;BR /&gt; &lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;FlashSectorRestore(0xFE00); &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; }&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;else{ &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 15px;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/STRONG&gt;&lt;SPAN style="text-decoration: underline;"&gt;&lt;EM&gt;//After reset, the device is secured, then unsecure the device by set KEYACC to 1 and write backbook key, then set KEYACC to 0.&lt;/EM&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;vfnCopyInRAM(); &amp;nbsp;&amp;nbsp;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;vfnUnsecure();&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;FlashSectorBackup(0xFE00);&lt;/STRONG&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;vfnFlashErase(0xFFBF);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM style="text-decoration: underline;"&gt;&amp;nbsp; &amp;nbsp;//If unsecured is successful, then set NVOPT to 0x82 to make device be&amp;nbsp;always unsecured.&lt;/EM&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;u8NewNVOPT=0x82;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;vfnFlashWrite(0xFFBF, (const UINT8*)&amp;amp;u8NewNVOPT, 1u); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;vfnFlashWrite(0xFFB0, (const UINT8*)au8BackDoorKey, N_ELEMENTS(au8BackDoorKey));&amp;nbsp;&amp;nbsp;&lt;/STRONG&gt;&lt;SPAN style="text-decoration: underline; font-size: 22px;"&gt;&lt;EM&gt;&amp;nbsp;&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;FlashSectorRestore(0xFE00);&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; }&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The code can secure the device successfully, but how I could implement the unsecured code in secured situation during debug mode ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I followed your suggestion from the link like below, and make &lt;SPAN&gt;vfnUnsecure() routine to unsecure device.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;A _jive_internal="true" class="link-titled" href="https://community.nxp.com/thread/394482?commentID=653031#comment" title="https://community.nxp.com/message/653031?commentID=653031#comment-653031"&gt;https://community.nxp.com/message/653031?commentID=653031#comment-653031&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This code is right? And it runs in RAM(&lt;STRONG&gt;vfnCopyInRAM)&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;#pragma CODE_SEG FLASH_ROUTINES&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;void vfnUnsecure(void)&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;{ &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;DisableInterrupts;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;FCNFG_KEYACC=1;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;*(byte*)0xFFB0 = 0x70;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;*(byte*)0xFFB1 = 0x61;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;*(byte*)0xFFB2 = 0x52;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;*(byte*)0xFFB3 = 0x43;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;*(byte*)0xFFB4 = 0x34;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;*(byte*)0xFFB5 = 0x25;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;*(byte*)0xFFB6 = 0x16;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;*(byte*)0xFFB7 = 0x07;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;FCNFG_KEYACC=0;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;EnableInterrupts;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;return;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;#pragma CODE_SEG DEFAULT&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;void vfnCopyInRAM(void) &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;{&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned int Size = (unsigned int)Size_Copy_In_RAM;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned char *SourcePtr;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned char *DestinationPtr;&lt;/STRONG&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;SourcePtr= (unsigned char*)Start_Copy_In_RAM;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;DestinationPtr = (unsigned char*)&amp;amp;&lt;SPAN style="font-size: 22px;"&gt;&lt;EM&gt;vfnUnsecure&lt;/EM&gt;&lt;/SPAN&gt;;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;while (Size--)&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*DestinationPtr = *SourcePtr;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DestinationPtr++;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SourcePtr++;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Could you please spend some time to check the code, and teach me how to implement the code in debug mode?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;P&gt;BR,&lt;/P&gt;&lt;P&gt;Sean Wu&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Dec 2016 09:10:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/FXTH87xx-security-backdoor-key-issue/m-p/657150#M22340</guid>
      <dc:creator>seanwu</dc:creator>
      <dc:date>2016-12-21T09:10:43Z</dc:date>
    </item>
    <item>
      <title>Re: FXTH87xx security backdoor key issue</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/FXTH87xx-security-backdoor-key-issue/m-p/657151#M22341</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="margin: 0cm 0cm 8pt;"&gt;&lt;SPAN style="color: #000000; font-family: Calibri; font-size: medium;"&gt;First of all, manipulating flash sector in which reset vectors reside, also manipulating bootloader code is the same like shooting into your own foot. Just think about loss of power or something which could suddenly reset your MCU! A big (perhaps tiny) cold brick. &lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 8pt;"&gt;&lt;SPAN style="color: #000000; font-family: Calibri; font-size: medium;"&gt;If you are manipulating flash sector with NVSEC, then why do you bother to unsecure via backdoor unsecure mechanism??? Just change NVSEC to unsecured state and voila. &lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 8pt;"&gt;&lt;SPAN style="color: #000000; font-family: Calibri; font-size: medium;"&gt;Backdoor unsecure mechanism allows you to keep flash untouched if you just need to do some BDM debugging. MCU is kept unsecured until reset or power cycle. Don’t know how in CW10, but in CW6.3 debugger you need to click Hotsync button instead of Connect button to connect to backdoor unsecured target. Clicking default Connect would reset your MCU back to secured mode. &lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 8pt;"&gt;&lt;SPAN style="color: #000000; font-family: Calibri; font-size: medium;"&gt;I hope you knew already that you can’t initiate backdoor unsecure from debugger. It is not possible. Only code, which runs in your target can trigger backdoor unsecure routine. So you need to send some command via RS232 or something, or manipulate some pins to make your unsecure recognized by code running in your MCU. &lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 8pt;"&gt;&lt;SPAN style="color: #000000; font-family: Calibri; font-size: medium;"&gt;I hope you understand backdoor unsecure a little better now.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 8pt;"&gt;&lt;SPAN style="color: #000000; font-family: Calibri; font-size: medium;"&gt;vfnUnsecure() looks right. But I don’t understand purpose of your vfnCopyInRAM(). As I said previously, startup routine in startup.c should initialize vfnUnsecure() RAM locations with right codes, vfnCopyInRAM() has nothing to do. &lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 8pt;"&gt;&lt;SPAN style="color: #000000; font-family: Calibri; font-size: medium;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 8pt;"&gt;&lt;SPAN style="color: #000000; font-family: Calibri; font-size: medium;"&gt;Regards&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 8pt;"&gt;&lt;SPAN style="color: #000000; font-family: Calibri; font-size: medium;"&gt;Edward&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 8pt;"&gt;&lt;SPAN style="color: #000000; font-family: Calibri; font-size: medium;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Dec 2016 10:58:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/FXTH87xx-security-backdoor-key-issue/m-p/657151#M22341</guid>
      <dc:creator>kef2</dc:creator>
      <dc:date>2016-12-21T10:58:55Z</dc:date>
    </item>
    <item>
      <title>Re: FXTH87xx security backdoor key issue</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/FXTH87xx-security-backdoor-key-issue/m-p/657152#M22342</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Dear Sir,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks for your feedback.&lt;/P&gt;&lt;P&gt;What we really want to do is to field upgrade a previously backdoor key protected S08 code to a new revision. Do re-flashing, and protect it again.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;At beginning, in the first flashing, the backdoor key and security were set. Then the F/W is protected by backdoor key, and ship to users.&lt;/LI&gt;&lt;LI&gt;After we have new F/W revision, and hope to field upgrade the user device. (This procedure is under a secured environment).&lt;/LI&gt;&lt;LI&gt;We first do backdoor key un-protection through serial port as you mentioned. Then re-flash the Security state code to unsecured.&lt;/LI&gt;&lt;LI&gt;Flash is unsecured again, and we do F/W upgrading again just as step 1.&lt;/LI&gt;&lt;LI&gt;Now the user device F/W is newly upgraded and also secured again.&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Just for easy debugging, we generate the testing code as presented to you before. It will do automatic protection in the first “if” part of code, and it worked. What we really want to try and got trouble is at the second “else” part – to do un-protection and re-flashing the SEC bits. They are not for the real case.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Just now, we have successfully made the test work. Thanks for your great help.&lt;/P&gt;&lt;P&gt;Thank you!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 23 Dec 2016 01:16:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/FXTH87xx-security-backdoor-key-issue/m-p/657152#M22342</guid>
      <dc:creator>seanwu</dc:creator>
      <dc:date>2016-12-23T01:16:00Z</dc:date>
    </item>
    <item>
      <title>Re: FXTH87xx security backdoor key issue</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/FXTH87xx-security-backdoor-key-issue/m-p/657153#M22343</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="margin: 0cm 0cm 8pt;"&gt;&lt;SPAN style="color: #000000; font-family: Calibri; font-size: medium;"&gt;Hi&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 8pt;"&gt;&lt;SPAN style="color: #000000; font-family: Calibri; font-size: medium;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 8pt;"&gt;&lt;SPAN style="color: #000000; font-family: Calibri; font-size: medium;"&gt;Backdoor unsecure has nothing to do and is not useful in any way for field upgrades! The only purpose of backdoor unsecure is to allow debugging without modifying any bit of flash. &lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 8pt;"&gt;&lt;SPAN style="color: #000000; font-family: Calibri; font-size: medium;"&gt;To switch NVSEC to unsecured state you don’t need backdoor unsecure, just reflash NVSEC byte (whole sector).&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 8pt;"&gt;&lt;SPAN style="color: #000000; font-family: Calibri; font-size: medium;"&gt;Are thinking about backdoor unsecure to help you remove flash write protection? But backdoor unsecure doesn’t remove flash write protection! Once NVPROT is set to protect sector with NVPROT, to enable NVPROT write/erase protection you need BDM eraser/debugger, you can’t unprotect NVPROT from core in MCU.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 8pt;"&gt;&lt;SPAN style="color: #000000; font-family: Calibri; font-size: medium;"&gt;Are you having problems reflashing over BDM while MCU is secured? Then again, it’s just a problem of your PC software. Perhaps you just need to change some PC SW settings or run appropriate unsecure tool on PC. &lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 8pt;"&gt;&lt;SPAN style="color: #000000; font-family: Calibri; font-size: medium;"&gt;&amp;nbsp;Regards,&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 8pt;"&gt;&lt;SPAN style="color: #000000; font-family: Calibri; font-size: medium;"&gt;Edward&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 23 Dec 2016 10:08:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/FXTH87xx-security-backdoor-key-issue/m-p/657153#M22343</guid>
      <dc:creator>kef2</dc:creator>
      <dc:date>2016-12-23T10:08:29Z</dc:date>
    </item>
  </channel>
</rss>

