<?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>topic Re: Stack Pointer problem in LPCXpresso IDE</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/Stack-Pointer-problem/m-p/531751#M2654</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by ozgozkan on Thu Mar 25 08:46:38 MST 2010&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for your reply.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I see your points and I totally agree with you. But my point is that I call that function in main(). PC goes to just one function deep and it doesn't come back properly. Also, I call another functions in the function and they come back. I'm a little bit frustrated. Let me send my code;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;//-----------------------------------------------------&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;int main (void) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;......&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; command[0] = IRQStatus;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; command[1] = IRQMask;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; [COLOR=red]ReadCont(command, 2);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //this is the function it doesn't come back.[/COLOR]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;//----------------------------------------------&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[COLOR=red]void ReadCont(unsigned char *buf, int lenght)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[/COLOR]{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPIOSetValue( SSEL_PORT, SSEL, LOW );&amp;nbsp;&amp;nbsp; /* Start SPI Mode&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *buf = (0x60 | *buf);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* address, read, continous */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *buf = (0x7f &amp;amp; *buf);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* register address&amp;nbsp;&amp;nbsp; */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [COLOR=darkorange]SPISend(buf);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Also I call a function in here but it works normally.[/COLOR]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(lenght &amp;gt; 0)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [COLOR=darkorange]SPIReceive(buf);&amp;nbsp; // It works [/COLOR]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; buf++;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lenght--;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPIOSetValue( SSEL_PORT, SSEL, HIGH );&amp;nbsp;&amp;nbsp; [COLOR=#ff8c00]// It works [/COLOR]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;//-------------------------------------------------------------------------&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Have I explained my problem? It seems to me it isn't sensible :) I guess I didn't adjust something. I really need help. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Is it about the memory address of the function? &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;How can I manage SP and heap? &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 16 Jun 2016 02:54:56 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-16T02:54:56Z</dc:date>
    <item>
      <title>Stack Pointer problem</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Stack-Pointer-problem/m-p/531749#M2652</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by ozgozkan on Thu Mar 25 07:13:13 MST 2010&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I have a problem with stack pointer. I call a function like the others. But turning back of this function, program counter sometimes goes different places. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;When It intends to go back from function this message appears: &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;No source available for "ReadCont()"&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 02:54:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Stack-Pointer-problem/m-p/531749#M2652</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T02:54:54Z</dc:date>
    </item>
    <item>
      <title>Re: Stack Pointer problem</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Stack-Pointer-problem/m-p/531750#M2653</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by CodeRedSupport on Thu Mar 25 07:43:53 MST 2010&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;This is most likely caused by stack corruption. There is no stack&amp;nbsp; checking on the Cortex-M families, so you have to be careful where you&amp;nbsp; place the stack, program data, and the heap (malloc space).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If you are using the standard linker scripts, stack is placed at the top&amp;nbsp; of RAM, program data is at the bottom on RAM, and the heap immediately&amp;nbsp; after that.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If you are using a lot of stack, it can grow into the heap or even the&amp;nbsp; program data space. If the stack has 'overflowed' into those spaces,&amp;nbsp; when you write to the heap/program data it can overwrite values on the&amp;nbsp; stack and thus corrupt it.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The stack is used for both your application AND any interrupts that may&amp;nbsp; be firing (including nested interrupt), so you need to ensure there is&amp;nbsp; enough space for the worst-case scenario.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Also, check that you are not allocating large amounts of data on the&amp;nbsp; stack (e.g. allocating a local array, as this will be placed on the&amp;nbsp; stack).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I see you are building for an LPC1114. This only has 8k of RAM, so you will not have a lot to play with.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 02:54:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Stack-Pointer-problem/m-p/531750#M2653</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T02:54:55Z</dc:date>
    </item>
    <item>
      <title>Re: Stack Pointer problem</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Stack-Pointer-problem/m-p/531751#M2654</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by ozgozkan on Thu Mar 25 08:46:38 MST 2010&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for your reply.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I see your points and I totally agree with you. But my point is that I call that function in main(). PC goes to just one function deep and it doesn't come back properly. Also, I call another functions in the function and they come back. I'm a little bit frustrated. Let me send my code;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;//-----------------------------------------------------&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;int main (void) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;......&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; command[0] = IRQStatus;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; command[1] = IRQMask;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; [COLOR=red]ReadCont(command, 2);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //this is the function it doesn't come back.[/COLOR]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;//----------------------------------------------&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[COLOR=red]void ReadCont(unsigned char *buf, int lenght)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[/COLOR]{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPIOSetValue( SSEL_PORT, SSEL, LOW );&amp;nbsp;&amp;nbsp; /* Start SPI Mode&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *buf = (0x60 | *buf);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* address, read, continous */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *buf = (0x7f &amp;amp; *buf);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* register address&amp;nbsp;&amp;nbsp; */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [COLOR=darkorange]SPISend(buf);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Also I call a function in here but it works normally.[/COLOR]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(lenght &amp;gt; 0)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [COLOR=darkorange]SPIReceive(buf);&amp;nbsp; // It works [/COLOR]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; buf++;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lenght--;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPIOSetValue( SSEL_PORT, SSEL, HIGH );&amp;nbsp;&amp;nbsp; [COLOR=#ff8c00]// It works [/COLOR]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;//-------------------------------------------------------------------------&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Have I explained my problem? It seems to me it isn't sensible :) I guess I didn't adjust something. I really need help. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Is it about the memory address of the function? &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;How can I manage SP and heap? &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 02:54:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Stack-Pointer-problem/m-p/531751#M2654</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T02:54:56Z</dc:date>
    </item>
    <item>
      <title>Re: Stack Pointer problem</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Stack-Pointer-problem/m-p/531752#M2655</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by CodeRedSupport on Thu Mar 25 14:42:02 MST 2010&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I presume that you are debugging a build that was compiled -O0 ? One thing to check is whether your link step has the option --gc-sections on it. If so, try removing this option and rebuilding. Do you now see any difference in behaviour?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If this does not improve matters, can you please explain in a little bit more detail exactly what you are doing and what you mean by "it doesn't come back properly". I assume that you are trying to step the last statement in your subroutine, or you are "stepping out" from somewhere in the middle of the subroutine?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;CodeRedSupport&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 02:54:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Stack-Pointer-problem/m-p/531752#M2655</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T02:54:56Z</dc:date>
    </item>
    <item>
      <title>Re: Stack Pointer problem</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Stack-Pointer-problem/m-p/531753#M2656</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by ozgozkan on Fri Mar 26 05:11:49 MST 2010&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks your reply. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;First of all, I'd like to talk about &amp;lt;No source available for "ReadCont()"&amp;gt; message. When I changed "Optimization Level" from -O0 to -O1, I was get rid of this message. Why? What happened ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;When I changed the option --gc-sections I didn't realize something different.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;"it doesn't come back properly" means after calling the function or subroutine, PC went right address and started to execute instructions. When PC pointed "return" and tried to execute it, &amp;lt;No source available for "ReadCont()"&amp;gt; message appears and PC goes to somewhere where it shouldn't have been there. I figured out it accedentally. While I was trying to fix it by writing and erasing somethings I lost the point where PC returned. Now It seems working. To be honest, I'm a little bit worried about it. It could happen again. There is something about stack and heap.&amp;nbsp; Is there any way to initialize and control them in software?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks again for your all help.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 02:54:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Stack-Pointer-problem/m-p/531753#M2656</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T02:54:57Z</dc:date>
    </item>
  </channel>
</rss>

