<?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>Kinetis Microcontrollers中的主题 Instruction pipeline issue</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Instruction-pipeline-issue/m-p/155763#M400</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;A pipeline issue &amp;nbsp;in K10?&lt;/P&gt;&lt;P&gt;I think I am seeing a strange pipeline issues.&lt;/P&gt;&lt;P&gt;I have a code running fine , I’ve added an initialize instruction before a function call , and I’ve got an interrupt because “ the chip tried to fetch a command from a non executable location”&lt;/P&gt;&lt;P&gt;The problem existed no matter which variable I am initializing.&lt;/P&gt;&lt;P&gt;I’ve traced the source of the unhandled interrupt to be not the instruction itself, but its location in memory.&lt;/P&gt;&lt;P&gt;See below “good” and “bad” code&lt;/P&gt;&lt;P&gt;I think it is a pipeline issue, as I was able to get rid of the problem by adding a NOP instruction before the problematic instruction or by moving the code a few bytes in memory&lt;/P&gt;&lt;P&gt;I’ve looked at Freescale and ARM datasheet , and the only thing I could find is that the pipeline is 6 word (32bit) long so it can contain up to 3 32 bit instructions or up to 6 16 bit instructions. I couldn’t find a way to tell the hardware to use a pipeline with only 1 or 2 words instead of 3,&lt;/P&gt;&lt;P&gt;Has anyone seen that problem before and have a better solution? , I don’t like the idea of adding NOPs , because this is just like putting a band aid , I may face that problem again in the future.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;U&gt;See code below&lt;/U&gt;&lt;/P&gt;&lt;P&gt;&lt;U&gt;BAD CODE&lt;/U&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Init_Boot:&lt;/P&gt;&lt;P&gt;000015f8:&amp;nbsp;&amp;nbsp; stmdb sp!,{r4-r10,lr}&lt;/P&gt;&lt;P&gt;000015fc:&amp;nbsp;&amp;nbsp; sub sp,sp,#40&lt;/P&gt;&lt;P&gt;1642&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool BOOT_OK=TRUE;&lt;/P&gt;&lt;P&gt;000015fe:&amp;nbsp;&amp;nbsp; movs r1,#1&lt;/P&gt;&lt;P&gt;00001600:&amp;nbsp;&amp;nbsp; add r0,sp,#0&lt;/P&gt;&lt;P&gt;00001602:&amp;nbsp;&amp;nbsp; strb r1,[r0,#2]&lt;/P&gt;&lt;P&gt;1644&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; char Boot_state_machine=0;&lt;/P&gt;&lt;P&gt;00001604:&amp;nbsp;&amp;nbsp; movs r4,#0&lt;/P&gt;&lt;P&gt;1655&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; low_address=0x3FFFF; // max address in block 1 of flash memory&lt;/P&gt;&lt;P&gt;00001606:&amp;nbsp;&amp;nbsp; movw r6,#0xffff&lt;/P&gt;&lt;P&gt;0000160a:&amp;nbsp;&amp;nbsp; movt r6,#0x3&lt;/P&gt;&lt;P&gt;1656&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; high_address=0;&lt;/P&gt;&lt;P&gt;0000160e:&amp;nbsp;&amp;nbsp; movs r7,#0&lt;/P&gt;&lt;P&gt;1657&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit_reason=EXIT_BOOT_FAILED;&lt;/P&gt;&lt;P&gt;00001610:&amp;nbsp;&amp;nbsp; mov r9,#0x1&lt;/P&gt;&lt;P&gt;// Changing the order of&amp;nbsp;lines 1642-1655 (assembly address 0x15FE – 0x1606) didn’t help , as long as there was an assembly instruction in&amp;nbsp; memory location –0x1606 , the memfault interrupt was triggered.&lt;/P&gt;&lt;P&gt;// Removing the initialization of a variable before the function called , that caused memory location to shift – and probably have different scenario in the pipeline – no errors existed, see below “Good” code&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;GOOD&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Init_Boot:&lt;/P&gt;&lt;P&gt;000015ec:&amp;nbsp;&amp;nbsp; stmdb sp!,{r4-r10,lr}&lt;/P&gt;&lt;P&gt;000015f0:&amp;nbsp;&amp;nbsp; sub sp,sp,#40&lt;/P&gt;&lt;P&gt;1642&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool BOOT_OK=TRUE;&lt;/P&gt;&lt;P&gt;000015f2:&amp;nbsp;&amp;nbsp; movs r1,#1&lt;/P&gt;&lt;P&gt;000015f4:&amp;nbsp;&amp;nbsp; add r0,sp,#0&lt;/P&gt;&lt;P&gt;000015f6:&amp;nbsp;&amp;nbsp; strb r1,[r0,#2]&lt;/P&gt;&lt;P&gt;1644&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; char Boot_state_machine=0;&lt;/P&gt;&lt;P&gt;000015f8:&amp;nbsp;&amp;nbsp; movs r4,#0&lt;/P&gt;&lt;P&gt;1655&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; low_address=0x3FFFF; // max address in block 1 of flash memory&lt;/P&gt;&lt;P&gt;000015fa:&amp;nbsp;&amp;nbsp; movw r6,#0xffff&lt;/P&gt;&lt;P&gt;000015fe:&amp;nbsp;&amp;nbsp; movt r6,#0x3&lt;/P&gt;&lt;P&gt;1656&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; high_address=0;&lt;/P&gt;&lt;P&gt;00001602:&amp;nbsp;&amp;nbsp; movs r7,#0&lt;/P&gt;&lt;P&gt;1657&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit_reason=EXIT_BOOT_FAILED;&lt;/P&gt;&lt;P&gt;00001604:&amp;nbsp;&amp;nbsp; mov r9,#0x1&lt;/P&gt;&lt;P&gt;1677&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StrPut(TX_BUFFER,"TEST",4);&lt;/P&gt;&lt;P&gt;00001608:&amp;nbsp;&amp;nbsp; ldr r3,[pc,#0x34e]&lt;/P&gt;&lt;P&gt;0000160c:&amp;nbsp;&amp;nbsp; ldr r0,[pc,#0x34e]&lt;/P&gt;&lt;P&gt;00001610:&amp;nbsp;&amp;nbsp; ldr r1,[pc,#0x34e]&lt;/P&gt;&lt;P&gt;// No new instruction in memory location 0x1606.&lt;/P&gt;&lt;P&gt;Now taking the “bad” code and adding a NOP , made the code to work&lt;/P&gt;&lt;P&gt;&lt;U&gt;BAD with NOP --&amp;gt;GOOD&lt;/U&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Init_Boot:&lt;/P&gt;&lt;P&gt;000015f8:&amp;nbsp;&amp;nbsp; stmdb sp!,{r4-r10,lr}&lt;/P&gt;&lt;P&gt;000015fc:&amp;nbsp;&amp;nbsp; sub sp,sp,#40&lt;/P&gt;&lt;P&gt;1642&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool BOOT_OK=TRUE;&lt;/P&gt;&lt;P&gt;000015fe:&amp;nbsp;&amp;nbsp; movs r1,#1&lt;/P&gt;&lt;P&gt;00001600:&amp;nbsp;&amp;nbsp; add r0,sp,#0&lt;/P&gt;&lt;P&gt;00001602:&amp;nbsp;&amp;nbsp; strb r1,[r0,#2]&lt;/P&gt;&lt;P&gt;1644&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; char Boot_state_machine=0; //&lt;/P&gt;&lt;P&gt;00001604:&amp;nbsp;&amp;nbsp; movs r4,#0&lt;/P&gt;&lt;P&gt;1654&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; asm(NOP);&lt;/P&gt;&lt;P&gt;00001606:&amp;nbsp;&amp;nbsp; nop&lt;/P&gt;&lt;P&gt;1655&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; low_address=0x3FFFF; // max address in block 1 of flash memory&lt;/P&gt;&lt;P&gt;00001608:&amp;nbsp;&amp;nbsp; movw r6,#0xffff&lt;/P&gt;&lt;P&gt;0000160c:&amp;nbsp;&amp;nbsp; movt r6,#0x3&lt;/P&gt;&lt;P&gt;1656&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; high_address=0;&lt;/P&gt;&lt;P&gt;00001610:&amp;nbsp;&amp;nbsp; movs r7,#0&lt;/P&gt;&lt;P&gt;1657&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit_reason=EXIT_BOOT_FAILED;&lt;/P&gt;&lt;P&gt;00001612:&amp;nbsp;&amp;nbsp; mov r9,#0x1&lt;/P&gt;&lt;P&gt;// This time by placing a 16 bit instruction in memory location 0x1606 , instead of a 32 bit instruction as before , solved the problem&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 02 Aug 2011 03:01:42 GMT</pubDate>
    <dc:creator>kinetis_user</dc:creator>
    <dc:date>2011-08-02T03:01:42Z</dc:date>
    <item>
      <title>Instruction pipeline issue</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Instruction-pipeline-issue/m-p/155763#M400</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;A pipeline issue &amp;nbsp;in K10?&lt;/P&gt;&lt;P&gt;I think I am seeing a strange pipeline issues.&lt;/P&gt;&lt;P&gt;I have a code running fine , I’ve added an initialize instruction before a function call , and I’ve got an interrupt because “ the chip tried to fetch a command from a non executable location”&lt;/P&gt;&lt;P&gt;The problem existed no matter which variable I am initializing.&lt;/P&gt;&lt;P&gt;I’ve traced the source of the unhandled interrupt to be not the instruction itself, but its location in memory.&lt;/P&gt;&lt;P&gt;See below “good” and “bad” code&lt;/P&gt;&lt;P&gt;I think it is a pipeline issue, as I was able to get rid of the problem by adding a NOP instruction before the problematic instruction or by moving the code a few bytes in memory&lt;/P&gt;&lt;P&gt;I’ve looked at Freescale and ARM datasheet , and the only thing I could find is that the pipeline is 6 word (32bit) long so it can contain up to 3 32 bit instructions or up to 6 16 bit instructions. I couldn’t find a way to tell the hardware to use a pipeline with only 1 or 2 words instead of 3,&lt;/P&gt;&lt;P&gt;Has anyone seen that problem before and have a better solution? , I don’t like the idea of adding NOPs , because this is just like putting a band aid , I may face that problem again in the future.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;U&gt;See code below&lt;/U&gt;&lt;/P&gt;&lt;P&gt;&lt;U&gt;BAD CODE&lt;/U&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Init_Boot:&lt;/P&gt;&lt;P&gt;000015f8:&amp;nbsp;&amp;nbsp; stmdb sp!,{r4-r10,lr}&lt;/P&gt;&lt;P&gt;000015fc:&amp;nbsp;&amp;nbsp; sub sp,sp,#40&lt;/P&gt;&lt;P&gt;1642&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool BOOT_OK=TRUE;&lt;/P&gt;&lt;P&gt;000015fe:&amp;nbsp;&amp;nbsp; movs r1,#1&lt;/P&gt;&lt;P&gt;00001600:&amp;nbsp;&amp;nbsp; add r0,sp,#0&lt;/P&gt;&lt;P&gt;00001602:&amp;nbsp;&amp;nbsp; strb r1,[r0,#2]&lt;/P&gt;&lt;P&gt;1644&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; char Boot_state_machine=0;&lt;/P&gt;&lt;P&gt;00001604:&amp;nbsp;&amp;nbsp; movs r4,#0&lt;/P&gt;&lt;P&gt;1655&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; low_address=0x3FFFF; // max address in block 1 of flash memory&lt;/P&gt;&lt;P&gt;00001606:&amp;nbsp;&amp;nbsp; movw r6,#0xffff&lt;/P&gt;&lt;P&gt;0000160a:&amp;nbsp;&amp;nbsp; movt r6,#0x3&lt;/P&gt;&lt;P&gt;1656&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; high_address=0;&lt;/P&gt;&lt;P&gt;0000160e:&amp;nbsp;&amp;nbsp; movs r7,#0&lt;/P&gt;&lt;P&gt;1657&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit_reason=EXIT_BOOT_FAILED;&lt;/P&gt;&lt;P&gt;00001610:&amp;nbsp;&amp;nbsp; mov r9,#0x1&lt;/P&gt;&lt;P&gt;// Changing the order of&amp;nbsp;lines 1642-1655 (assembly address 0x15FE – 0x1606) didn’t help , as long as there was an assembly instruction in&amp;nbsp; memory location –0x1606 , the memfault interrupt was triggered.&lt;/P&gt;&lt;P&gt;// Removing the initialization of a variable before the function called , that caused memory location to shift – and probably have different scenario in the pipeline – no errors existed, see below “Good” code&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;GOOD&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Init_Boot:&lt;/P&gt;&lt;P&gt;000015ec:&amp;nbsp;&amp;nbsp; stmdb sp!,{r4-r10,lr}&lt;/P&gt;&lt;P&gt;000015f0:&amp;nbsp;&amp;nbsp; sub sp,sp,#40&lt;/P&gt;&lt;P&gt;1642&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool BOOT_OK=TRUE;&lt;/P&gt;&lt;P&gt;000015f2:&amp;nbsp;&amp;nbsp; movs r1,#1&lt;/P&gt;&lt;P&gt;000015f4:&amp;nbsp;&amp;nbsp; add r0,sp,#0&lt;/P&gt;&lt;P&gt;000015f6:&amp;nbsp;&amp;nbsp; strb r1,[r0,#2]&lt;/P&gt;&lt;P&gt;1644&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; char Boot_state_machine=0;&lt;/P&gt;&lt;P&gt;000015f8:&amp;nbsp;&amp;nbsp; movs r4,#0&lt;/P&gt;&lt;P&gt;1655&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; low_address=0x3FFFF; // max address in block 1 of flash memory&lt;/P&gt;&lt;P&gt;000015fa:&amp;nbsp;&amp;nbsp; movw r6,#0xffff&lt;/P&gt;&lt;P&gt;000015fe:&amp;nbsp;&amp;nbsp; movt r6,#0x3&lt;/P&gt;&lt;P&gt;1656&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; high_address=0;&lt;/P&gt;&lt;P&gt;00001602:&amp;nbsp;&amp;nbsp; movs r7,#0&lt;/P&gt;&lt;P&gt;1657&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit_reason=EXIT_BOOT_FAILED;&lt;/P&gt;&lt;P&gt;00001604:&amp;nbsp;&amp;nbsp; mov r9,#0x1&lt;/P&gt;&lt;P&gt;1677&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StrPut(TX_BUFFER,"TEST",4);&lt;/P&gt;&lt;P&gt;00001608:&amp;nbsp;&amp;nbsp; ldr r3,[pc,#0x34e]&lt;/P&gt;&lt;P&gt;0000160c:&amp;nbsp;&amp;nbsp; ldr r0,[pc,#0x34e]&lt;/P&gt;&lt;P&gt;00001610:&amp;nbsp;&amp;nbsp; ldr r1,[pc,#0x34e]&lt;/P&gt;&lt;P&gt;// No new instruction in memory location 0x1606.&lt;/P&gt;&lt;P&gt;Now taking the “bad” code and adding a NOP , made the code to work&lt;/P&gt;&lt;P&gt;&lt;U&gt;BAD with NOP --&amp;gt;GOOD&lt;/U&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Init_Boot:&lt;/P&gt;&lt;P&gt;000015f8:&amp;nbsp;&amp;nbsp; stmdb sp!,{r4-r10,lr}&lt;/P&gt;&lt;P&gt;000015fc:&amp;nbsp;&amp;nbsp; sub sp,sp,#40&lt;/P&gt;&lt;P&gt;1642&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool BOOT_OK=TRUE;&lt;/P&gt;&lt;P&gt;000015fe:&amp;nbsp;&amp;nbsp; movs r1,#1&lt;/P&gt;&lt;P&gt;00001600:&amp;nbsp;&amp;nbsp; add r0,sp,#0&lt;/P&gt;&lt;P&gt;00001602:&amp;nbsp;&amp;nbsp; strb r1,[r0,#2]&lt;/P&gt;&lt;P&gt;1644&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; char Boot_state_machine=0; //&lt;/P&gt;&lt;P&gt;00001604:&amp;nbsp;&amp;nbsp; movs r4,#0&lt;/P&gt;&lt;P&gt;1654&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; asm(NOP);&lt;/P&gt;&lt;P&gt;00001606:&amp;nbsp;&amp;nbsp; nop&lt;/P&gt;&lt;P&gt;1655&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; low_address=0x3FFFF; // max address in block 1 of flash memory&lt;/P&gt;&lt;P&gt;00001608:&amp;nbsp;&amp;nbsp; movw r6,#0xffff&lt;/P&gt;&lt;P&gt;0000160c:&amp;nbsp;&amp;nbsp; movt r6,#0x3&lt;/P&gt;&lt;P&gt;1656&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; high_address=0;&lt;/P&gt;&lt;P&gt;00001610:&amp;nbsp;&amp;nbsp; movs r7,#0&lt;/P&gt;&lt;P&gt;1657&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit_reason=EXIT_BOOT_FAILED;&lt;/P&gt;&lt;P&gt;00001612:&amp;nbsp;&amp;nbsp; mov r9,#0x1&lt;/P&gt;&lt;P&gt;// This time by placing a 16 bit instruction in memory location 0x1606 , instead of a 32 bit instruction as before , solved the problem&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 02 Aug 2011 03:01:42 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Instruction-pipeline-issue/m-p/155763#M400</guid>
      <dc:creator>kinetis_user</dc:creator>
      <dc:date>2011-08-02T03:01:42Z</dc:date>
    </item>
    <item>
      <title>Re: Instruction pipeline issue</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Instruction-pipeline-issue/m-p/155764#M401</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;And here is an answer I did not expect to get from Freescale tech support&lt;/P&gt;&lt;P&gt;I have submitted the same question to Frescale support by creating SR.&lt;/P&gt;&lt;P&gt;Here is the latest response from Fracases (I have omitted the full name of the tech support person)&lt;/P&gt;&lt;P&gt;I would like to add that I have seen in my past strange pipeline issues (not in Fracases chips), especially with brand new chips , that were later corrected in the next chip revision&amp;nbsp;(or the next compiler version). I am not claiming that this is a pipeline issues , but it is a possibility , whatever code I am writing that causes the start of an assembly opcode to be in a specific memory location causes the problem and by adding a single NOP instruction the problem disappeared. So it does sound an interesting problem. Yes the problem can be because of my code ,but I didn't expect such sort of answer. It is my "C" code , but it is Freescalse compiler , assembler and linker...&lt;/P&gt;&lt;P&gt;====================See below =================================================&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Hi xxx&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You don't have to provide me your whole project. Just send me the one that can reproduce your problem.&lt;/P&gt;&lt;P&gt;You know, your code is in C language, if this "issue" does exist, many people should have seen it.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;P&gt;BR,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;-----Original Message-----&lt;/P&gt;&lt;P&gt;From: Sent: Tuesday, August 02, 2011 8:48 PM&lt;/P&gt;&lt;P&gt;To: Subject: RE: SR#&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Dear xxx,&lt;/P&gt;&lt;P&gt;I assume that just running the "bad" code will not show you anything , as only now did I got that problem so it is probably depends on other things as well. If it was an easy problem to reproduce , I should have seen it before and in more cases.&lt;/P&gt;&lt;P&gt;The part number for the chip I'm using is PK10N512VMD100 0M33Z CTPFP 1039D If I will send you the entire code and project files, will you be able to run it on a K10 system/simulator?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you.&lt;/P&gt;&lt;P&gt;xxx&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;-----Original Message-----&lt;/P&gt;&lt;P&gt;From:&amp;nbsp;&lt;/P&gt;&lt;P&gt;Sent: Monday, August 01, 2011 11:15 PM&lt;/P&gt;&lt;P&gt;To:&amp;nbsp;&lt;/P&gt;&lt;P&gt;Subject: RE: SR#&amp;nbsp;&lt;/P&gt;&lt;P&gt;Hi xxx.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have tried your "bad" code, but nothing special found.&lt;/P&gt;&lt;P&gt;Could you please provide me more information regarding of this problem, at least, I can reproduce your problem at my side. I don't think this is because of "pipeline" issue.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;P&gt;BR,&lt;/P&gt;&lt;P&gt;xxx&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 03 Aug 2011 19:35:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Instruction-pipeline-issue/m-p/155764#M401</guid>
      <dc:creator>kinetis_user</dc:creator>
      <dc:date>2011-08-03T19:35:45Z</dc:date>
    </item>
  </channel>
</rss>

