<?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: LPC17xx stack location in MCUXpresso IDE</title>
    <link>https://community.nxp.com/t5/MCUXpresso-IDE/LPC17xx-stack-location/m-p/699309#M830</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It didn't work with this setting. Anyway, I was using the MCUXpresso Managed Linker Scripts in MCUXpresso Style where I can select the stack location from a drop down list.&lt;/P&gt;&lt;P&gt;But, what I didn't thought about, was that my application uses the&amp;nbsp;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;AN10866&amp;nbsp;&lt;/SPAN&gt;secondary USB Bootloader. In this application, not a LPC1769 is configured, but a compatible, though less memory, LPC1764. If I change the setting in the bootloader project (or create a new project) and update the bootloader, the stack pointer actually moves to the desired location.&lt;/P&gt;&lt;P&gt;But why do I have to change this setting in the bootloader? Doesn't the linker script from my second location apply? Do I explicitly have to state in the bootloader code that my application should load the stackpointer etc. from the application code?&lt;/P&gt;&lt;P&gt;The bootloader starts the application with this:&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;&lt;SPAN class="property macro token"&gt;#define USER_START_SECTOR 4&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#define MAX_USER_SECTOR 17&lt;/SPAN&gt;

&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;

&lt;SPAN class="property macro token"&gt;#define USER_FLASH_START (sector_start_map[USER_START_SECTOR])&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#define USER_FLASH_END&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (sector_end_map[MAX_USER_SECTOR])&lt;/SPAN&gt;

&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;

&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;execute_user_code&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;user_code_entry&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="keyword token"&gt;unsigned&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;p&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="comment token"&gt;// used for loading address of reset handler from user flash&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="comment token"&gt;/* Change the Vector Table to the USER_FLASH_START 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;in case the user application uses interrupts */&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SCB&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;VTOR &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;USER_FLASH_START &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x1FFFFF80&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="comment token"&gt;// Load contents of second word of user flash - the reset handler address&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="comment token"&gt;// in the applications vector table&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;unsigned&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;USER_FLASH_START &lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;4&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="comment token"&gt;// Set user_code_entry to be the address contained in that second word&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="comment token"&gt;// of user flash&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;user_code_entry &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;p&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="token function"&gt;DEBUG_OUT&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"Running user app from flash.\n"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="comment token"&gt;// Jump to user application&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="token function"&gt;user_code_entry&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;So the vector table is updated. Shoudn't update this the Stack Pointer as well? My application is, of course, configured to start at 0x4000.&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;&lt;P&gt;Jan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 06 Oct 2017 06:38:45 GMT</pubDate>
    <dc:creator>janblumenkamp</dc:creator>
    <dc:date>2017-10-06T06:38:45Z</dc:date>
    <item>
      <title>LPC17xx stack location</title>
      <link>https://community.nxp.com/t5/MCUXpresso-IDE/LPC17xx-stack-location/m-p/699305#M826</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I am struggling with the placement of the stack in a LPC1769. This controller has two RAM banks, each 32kB. I was very surprised when my application started behaving weirdly today as the RAM usage only reached about 15.9kB (data variables suddenly changing their value, weird HardFault Exceptions). During debugging I discovered that the stack is placed at address 0x10004000, growing towards 0x10000000 where the data area starts (growing up). So effectively the stack starts at 16kB, growing towards the user data. Of course it collides with the data area very soon, even though the RAM is not used completely.&lt;/P&gt;&lt;P&gt;Now I want to move the stack at least to the end of the RamLoc32 area (alias RAM; the first 32kB RAM block), but even better to the RamAHB32 block (alias RAM2). I tried doing this in LPCXpresso and MCUXpresso with the option&lt;/P&gt;&lt;P&gt;--defsym=__user_stack_top=__top_RAM2&lt;/P&gt;&lt;P&gt;(placed under Project -&amp;gt; Properties -&amp;gt; C/C++ Build -&amp;gt; Settings -&amp;gt; MCU Linker -&amp;gt; Miscellaneous -&amp;gt; Other options), but this has no effect (in the user program, I read the initial stack pointer value with&lt;/P&gt;&lt;P&gt;uint32_t stack = __get_MSP();&lt;/P&gt;&lt;P&gt;but is always is around 10003900 and the application crashes again). In MCUXpresso I even tried the Heap and Stack placement in MCUXpresso Style under&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Project -&amp;gt; Properties -&amp;gt; C/C++ Build -&amp;gt; Settings -&amp;gt; MCU Linker -&amp;gt; Managed Linker Script, but this has no effect as well.&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;After changing the setting, I cleaned and rebuilt the project, no effects at all.&lt;/P&gt;&lt;P&gt;Can someone help me out?&lt;/P&gt;&lt;P&gt;Kind regards,&lt;/P&gt;&lt;P&gt;Jan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 05 Oct 2017 18:00:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCUXpresso-IDE/LPC17xx-stack-location/m-p/699305#M826</guid>
      <dc:creator>janblumenkamp</dc:creator>
      <dc:date>2017-10-05T18:00:08Z</dc:date>
    </item>
    <item>
      <title>Re: LPC17xx stack location</title>
      <link>https://community.nxp.com/t5/MCUXpresso-IDE/LPC17xx-stack-location/m-p/699306#M827</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You should read the FAQ section on the Freemarker linker templates. Create a "linkscripts" folder in your project, and locate the file stack.ldt there. The default stack.ldt file used is located in &amp;lt;install_dir&amp;gt;\ide\Wizards\linker. This template contains the line:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PROVIDE(_vStackTop = DEFINED(__user_stack_top) ? __user_stack_top : __top_${DATA} - ${STACK_OFFSET});&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Replace the __top_${DATA} text with __top_${RAM2}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You should find your initial stack at the end of the RamAHB32 memory.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks and regards,&lt;/P&gt;&lt;P&gt;MCUXpresso Support&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 05 Oct 2017 20:53:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCUXpresso-IDE/LPC17xx-stack-location/m-p/699306#M827</guid>
      <dc:creator>lpcxpresso_supp</dc:creator>
      <dc:date>2017-10-05T20:53:22Z</dc:date>
    </item>
    <item>
      <title>Re: LPC17xx stack location</title>
      <link>https://community.nxp.com/t5/MCUXpresso-IDE/LPC17xx-stack-location/m-p/699307#M828</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for your fast reply! I didn't knew that MCUXpresso utilizes this tool. I will try it tomorrow.&lt;/P&gt;&lt;P&gt;Still, I think it is quiet confusing and I don't understand why my approach does not work. The MCUXpresso manual explicitly states&amp;nbsp;that&amp;nbsp;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;--&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;defsym=__user_stack_top=__top_RAM2&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;should work (refer chapter 12.9.2), at least there it does not say anything about Freemaker.&amp;nbsp;So why doesn't defsym work? The default linker file utilizes this&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;__user_stack_top&amp;nbsp;&lt;/SPAN&gt;and you suggest to just remove it. Also, the current linker script generated by MCUXpresso (I didn't make any changes to Freemaker) states:&lt;/P&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;.stack ORIGIN(RamAHB32) + LENGTH(RamAHB32) - 0x800 - 0: ALIGN(4)
 {
 _vStackBase = .;
 . = ALIGN(4);
 _vStackTop = . + 0x800;
 } &amp;gt; RamAHB32&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;So why does the __get_MSP() return something around 0x10004000 and not something around 0x2007c000 where RamAHB32 is located?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 05 Oct 2017 21:32:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCUXpresso-IDE/LPC17xx-stack-location/m-p/699307#M828</guid>
      <dc:creator>janblumenkamp</dc:creator>
      <dc:date>2017-10-05T21:32:01Z</dc:date>
    </item>
    <item>
      <title>Re: LPC17xx stack location</title>
      <link>https://community.nxp.com/t5/MCUXpresso-IDE/LPC17xx-stack-location/m-p/699308#M829</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Possibly the tool is not resolving the RAM2 alias. Try&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;--defsym=__user_stack_top=__top_RamAHB32&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This works for me.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks and regards,&lt;/P&gt;&lt;P&gt;MCUXpresso Support&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 05 Oct 2017 23:03:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCUXpresso-IDE/LPC17xx-stack-location/m-p/699308#M829</guid>
      <dc:creator>lpcxpresso_supp</dc:creator>
      <dc:date>2017-10-05T23:03:51Z</dc:date>
    </item>
    <item>
      <title>Re: LPC17xx stack location</title>
      <link>https://community.nxp.com/t5/MCUXpresso-IDE/LPC17xx-stack-location/m-p/699309#M830</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It didn't work with this setting. Anyway, I was using the MCUXpresso Managed Linker Scripts in MCUXpresso Style where I can select the stack location from a drop down list.&lt;/P&gt;&lt;P&gt;But, what I didn't thought about, was that my application uses the&amp;nbsp;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;AN10866&amp;nbsp;&lt;/SPAN&gt;secondary USB Bootloader. In this application, not a LPC1769 is configured, but a compatible, though less memory, LPC1764. If I change the setting in the bootloader project (or create a new project) and update the bootloader, the stack pointer actually moves to the desired location.&lt;/P&gt;&lt;P&gt;But why do I have to change this setting in the bootloader? Doesn't the linker script from my second location apply? Do I explicitly have to state in the bootloader code that my application should load the stackpointer etc. from the application code?&lt;/P&gt;&lt;P&gt;The bootloader starts the application with this:&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;&lt;SPAN class="property macro token"&gt;#define USER_START_SECTOR 4&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#define MAX_USER_SECTOR 17&lt;/SPAN&gt;

&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;

&lt;SPAN class="property macro token"&gt;#define USER_FLASH_START (sector_start_map[USER_START_SECTOR])&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#define USER_FLASH_END&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (sector_end_map[MAX_USER_SECTOR])&lt;/SPAN&gt;

&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;

&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;execute_user_code&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;user_code_entry&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="keyword token"&gt;unsigned&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;p&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="comment token"&gt;// used for loading address of reset handler from user flash&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="comment token"&gt;/* Change the Vector Table to the USER_FLASH_START 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;in case the user application uses interrupts */&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SCB&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;VTOR &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;USER_FLASH_START &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x1FFFFF80&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="comment token"&gt;// Load contents of second word of user flash - the reset handler address&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="comment token"&gt;// in the applications vector table&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;unsigned&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;USER_FLASH_START &lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;4&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="comment token"&gt;// Set user_code_entry to be the address contained in that second word&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="comment token"&gt;// of user flash&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;user_code_entry &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;p&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="token function"&gt;DEBUG_OUT&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"Running user app from flash.\n"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="comment token"&gt;// Jump to user application&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="token function"&gt;user_code_entry&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;So the vector table is updated. Shoudn't update this the Stack Pointer as well? My application is, of course, configured to start at 0x4000.&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;&lt;P&gt;Jan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 06 Oct 2017 06:38:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCUXpresso-IDE/LPC17xx-stack-location/m-p/699309#M830</guid>
      <dc:creator>janblumenkamp</dc:creator>
      <dc:date>2017-10-06T06:38:45Z</dc:date>
    </item>
    <item>
      <title>Re: LPC17xx stack location</title>
      <link>https://community.nxp.com/t5/MCUXpresso-IDE/LPC17xx-stack-location/m-p/699310#M831</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;There's no mechanism in play to setup the application stack pointer. When the board resets, the established boot context is that of the secondary bootloader. It's the responsibility of the secondary bootloader to establish the entire application boot context. The PC is the second vector, the SP is the first vector.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks and regards,&lt;/P&gt;&lt;P&gt;MCUXpresso Support&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 06 Oct 2017 06:53:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCUXpresso-IDE/LPC17xx-stack-location/m-p/699310#M831</guid>
      <dc:creator>lpcxpresso_supp</dc:creator>
      <dc:date>2017-10-06T06:53:00Z</dc:date>
    </item>
  </channel>
</rss>

