<?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: Bootloader and FreeRTOS hardfault in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/Bootloader-and-FreeRTOS-hardfault/m-p/539538#M11885</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by ArnaudE on Thu Mar 19 05:41:37 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi, &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I change my application code commenting FreeRTOS task creation and just let a FreeRTOS task that toggle a LED. FreeRTOS is running well. Step by step i will uncommented other FreeRTOS task to see where the problem is.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;For people in need, this is how i jump to the application code (some code comes from people who also had problem jumping to FreeRTOS application)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
void boot_jump( uint32_t address )
{
&amp;nbsp; __ASM volatile ("MOV LR, #0xFFFFFFFF"); //Reset Link Register
&amp;nbsp; __ASM volatile ("LDR SP, [R0]"); //Load new stack pointer address
&amp;nbsp; __ASM volatile ("LDR PC, [R0, #4]");//Load new program counter address
}

void jumpToProgram (uint32_t address)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SCB-&amp;gt;VTOR = address &amp;amp; 0x3FFFFF80;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; boot_jump(address);
}

void execute_bank_a_user_code(void)
{&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Disable SysTick timer&amp;nbsp;&amp;nbsp; */
&amp;nbsp;&amp;nbsp;&amp;nbsp; SysTick-&amp;gt;CTRL &amp;amp;= ~(SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk);
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Disable INT */
&amp;nbsp;&amp;nbsp;&amp;nbsp; disable_interrupts();
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; jumpToProgram((uint32_t)USER_START_SECTOR_ADDRESS);
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 18:24:16 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T18:24:16Z</dc:date>
    <item>
      <title>Bootloader and FreeRTOS hardfault</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Bootloader-and-FreeRTOS-hardfault/m-p/539531#M11878</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by ArnaudE on Wed Mar 18 04:03:30 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello all,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have a bootloader on my LPC1833 to jump to my application code. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;When I put a basic application code (blinking LED), the bootloader can jump to the application and it runs well. When I set a FreeRTOS application code, i have an HardFault after jumping to the application code. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I read many threads of people who had the same problem on other target but I can't find a solution for me. The threads were focus on the Vector Table.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Do you have any idea?&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;Arnaud&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:24:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Bootloader-and-FreeRTOS-hardfault/m-p/539531#M11878</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:24:11Z</dc:date>
    </item>
    <item>
      <title>Re: Bootloader and FreeRTOS hardfault</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Bootloader-and-FreeRTOS-hardfault/m-p/539532#M11879</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by &lt;A href="https://community.nxp.com/www.FreeRTOS.org" target="test_blank"&gt;www.FreeRTOS.org&lt;/A&gt; on Wed Mar 18 07:45:02 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;You are right, when people report problems with boot loaders it nearly always turns out to be an issue with the vector table.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;FreeRTOS uses the SVC, SysTick and PendSV interrupts, and must have the appropriate handlers installed.&amp;nbsp; Does your boot loader use the same interrupts?&amp;nbsp; Do you reprogram the vector base register to point to the vector table that has the FreeRTOS handlers installed when jumping to the application code?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:24:12 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Bootloader-and-FreeRTOS-hardfault/m-p/539532#M11879</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:24:12Z</dc:date>
    </item>
    <item>
      <title>Re: Bootloader and FreeRTOS hardfault</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Bootloader-and-FreeRTOS-hardfault/m-p/539533#M11880</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by ArnaudE on Wed Mar 18 08:37:33 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for you help.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In the bootloader I use the Systick timer, so i disable it before jumping to application code. Then I set the vector table pointer to the USER_START_SECTOR_ADDRESS (which is the start address of the vector table of the application code) and then I jump to the application. Am i doing it wrong?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;void execute_bank_a_user_code(void)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; fcall *temp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Disable SysTick timer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
&amp;nbsp;&amp;nbsp;&amp;nbsp; SysTick-&amp;gt;CTRL &amp;amp;= ~(SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk);
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Disable INT */
&amp;nbsp;&amp;nbsp;&amp;nbsp; disable_interrupts();
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set vector table pointer */
&amp;nbsp;&amp;nbsp;&amp;nbsp; SCB-&amp;gt;VTOR = ((uint32_t)USER_START_SECTOR_ADDRESS);
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; temp = (fcall*) (USER_START_SECTOR_ADDRESS | 0x00000004) ;
&amp;nbsp;&amp;nbsp;&amp;nbsp; (*temp)();&amp;nbsp;&amp;nbsp;&amp;nbsp; 
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Arnaud&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:24:12 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Bootloader-and-FreeRTOS-hardfault/m-p/539533#M11880</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:24:12Z</dc:date>
    </item>
    <item>
      <title>Re: Bootloader and FreeRTOS hardfault</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Bootloader-and-FreeRTOS-hardfault/m-p/539534#M11881</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by &lt;A href="https://community.nxp.com/www.FreeRTOS.org" target="test_blank"&gt;www.FreeRTOS.org&lt;/A&gt; on Wed Mar 18 08:46:33 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I've never done it myself, so can't be sure, just read lots of posts on the FreeRTOS support forum where other people have done it.&amp;nbsp; I would have thought it was right though.&amp;nbsp; A couple of comments:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;- I note you globally disable interrupts before the jump.&amp;nbsp; That should be ok, but to make sure, have you tried enabling them again in the main() of the function you are jumping to?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;- What happens to the stack?&amp;nbsp; The stack is [effectively] read from the top of the vector table.&amp;nbsp; Do both vector tables have the same stack defined?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;- Does the code you are jumping to have its own C run time environment code, so it does things like zero out the bss and copy initialised data, etc.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;- [relevant to the previous question] Why do you jump to the application code using a function call rather than branch?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:24:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Bootloader-and-FreeRTOS-hardfault/m-p/539534#M11881</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:24:13Z</dc:date>
    </item>
    <item>
      <title>Re: Bootloader and FreeRTOS hardfault</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Bootloader-and-FreeRTOS-hardfault/m-p/539535#M11882</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by ArnaudE on Wed Mar 18 09:52:47 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: &lt;/STRONG&gt;&lt;BR /&gt;- I note you globally disable interrupts before the jump.&amp;nbsp; That should be ok, but to make sure, have you tried enabling them again in the main() of the function you are jumping to?&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Yes.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: &lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;- What happens to the stack?&amp;nbsp; The stack is [effectively] read from the top of the vector table.&amp;nbsp; Do both vector tables have the same stack defined?&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;SPAN&gt;May I have a stack problem because I have the hardfault after FreeRTOS call the function "prvAllocateTCBAndStack", at this point : &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;( void ) memset( pxNewTCB-&amp;gt;pxStack, ( int ) tskSTACK_FILL_BYTE, ( size_t ) usStackDepth * sizeof( StackType_t ) );&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: &lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;- Does the code you are jumping to have its own C run time environment code, so it does things like zero out the bss and copy initialised data, etc.&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Yes&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: &lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;- [relevant to the previous question] Why do you jump to the application code using a function call rather than branch?&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I just changed to a branch. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm not very comfortable with bootloader, I just started working on it.&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:24:14 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Bootloader-and-FreeRTOS-hardfault/m-p/539535#M11882</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:24:14Z</dc:date>
    </item>
    <item>
      <title>Re: Bootloader and FreeRTOS hardfault</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Bootloader-and-FreeRTOS-hardfault/m-p/539536#M11883</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by &lt;A href="https://community.nxp.com/www.FreeRTOS.org" target="test_blank"&gt;www.FreeRTOS.org&lt;/A&gt; on Wed Mar 18 10:06:38 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: &lt;/STRONG&gt;&lt;BR /&gt;May I have a stack problem because I have the hardfault after FreeRTOS call the function "prvAllocateTCBAndStack", at this point&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The stack allocated in the function actually comes from the .bss section - it is not the stack allocated by the compiler.&amp;nbsp; The fact accessing that memory is giving the hard fault is a big clue though.&amp;nbsp; Is the value of pxNewTCB-&amp;gt;pxStack at that point valid?&amp;nbsp; That is, within the .bss section of the application and in a valid RAM area of the memory map?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:24:14 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Bootloader-and-FreeRTOS-hardfault/m-p/539536#M11883</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:24:14Z</dc:date>
    </item>
    <item>
      <title>Re: Bootloader and FreeRTOS hardfault</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Bootloader-and-FreeRTOS-hardfault/m-p/539537#M11884</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by ArnaudE on Wed Mar 18 10:13:09 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;This is the complete function from FreeRTOS. pxNewTCB-&amp;gt;pxStack seems to be valid because it passes the conditions. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;static TCB_t *prvAllocateTCBAndStack( const uint16_t usStackDepth, StackType_t * const puxStackBuffer )
{
TCB_t *pxNewTCB;

/* Allocate space for the TCB.&amp;nbsp; Where the memory comes from depends on
the implementation of the port malloc function. */
pxNewTCB = ( TCB_t * ) pvPortMalloc( sizeof( TCB_t ) );

if( pxNewTCB != NULL )
{
/* Allocate space for the stack used by the task being created.
The base of the stack memory stored in the TCB so the task can
be deleted later if required. */
pxNewTCB-&amp;gt;pxStack = ( StackType_t * ) pvPortMallocAligned( ( ( ( size_t ) usStackDepth ) * sizeof( StackType_t ) ), puxStackBuffer ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */

if( pxNewTCB-&amp;gt;pxStack == NULL )
{
/* Could not allocate the stack.&amp;nbsp; Delete the allocated TCB. */
vPortFree( pxNewTCB );
pxNewTCB = NULL;
}
else
{
/* Avoid dependency on memset() if it is not required. */
#if( ( configCHECK_FOR_STACK_OVERFLOW &amp;gt; 1 ) || ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) )
{
/* Just to help debugging. */
( void ) memset( pxNewTCB-&amp;gt;pxStack, ( int ) tskSTACK_FILL_BYTE, ( size_t ) usStackDepth * sizeof( StackType_t ) );
}
#endif /* ( ( configCHECK_FOR_STACK_OVERFLOW &amp;gt; 1 ) || ( ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) ) ) */
}
}

return pxNewTCB;
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I will check the .bss section. &lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:24:15 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Bootloader-and-FreeRTOS-hardfault/m-p/539537#M11884</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:24:15Z</dc:date>
    </item>
    <item>
      <title>Re: Bootloader and FreeRTOS hardfault</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Bootloader-and-FreeRTOS-hardfault/m-p/539538#M11885</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by ArnaudE on Thu Mar 19 05:41:37 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi, &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I change my application code commenting FreeRTOS task creation and just let a FreeRTOS task that toggle a LED. FreeRTOS is running well. Step by step i will uncommented other FreeRTOS task to see where the problem is.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;For people in need, this is how i jump to the application code (some code comes from people who also had problem jumping to FreeRTOS application)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
void boot_jump( uint32_t address )
{
&amp;nbsp; __ASM volatile ("MOV LR, #0xFFFFFFFF"); //Reset Link Register
&amp;nbsp; __ASM volatile ("LDR SP, [R0]"); //Load new stack pointer address
&amp;nbsp; __ASM volatile ("LDR PC, [R0, #4]");//Load new program counter address
}

void jumpToProgram (uint32_t address)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SCB-&amp;gt;VTOR = address &amp;amp; 0x3FFFFF80;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; boot_jump(address);
}

void execute_bank_a_user_code(void)
{&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Disable SysTick timer&amp;nbsp;&amp;nbsp; */
&amp;nbsp;&amp;nbsp;&amp;nbsp; SysTick-&amp;gt;CTRL &amp;amp;= ~(SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk);
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Disable INT */
&amp;nbsp;&amp;nbsp;&amp;nbsp; disable_interrupts();
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; jumpToProgram((uint32_t)USER_START_SECTOR_ADDRESS);
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:24:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Bootloader-and-FreeRTOS-hardfault/m-p/539538#M11885</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:24:16Z</dc:date>
    </item>
    <item>
      <title>Re: Bootloader and FreeRTOS hardfault</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Bootloader-and-FreeRTOS-hardfault/m-p/539539#M11886</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by ArnaudE on Mon Mar 30 07:09:12 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;To sum up, i have an Ethernet bootloader and an application code with FreeRTOS. The Ethernet bootloader is used to update the application code. When jumping to the application I had some trouble and now everything works.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If you are using an Ethernet Bootloader, and FreeRTOS Ethernet taks (and lwip), do not forget to disable the Ethernet interrupt in the bootloader before jumping to application code. Although i used a general function to disable interrupt, the Ethernet one was still enable (may some specific interrupt are disable and not all).&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;Arnaud&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:24:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Bootloader-and-FreeRTOS-hardfault/m-p/539539#M11886</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:24:16Z</dc:date>
    </item>
    <item>
      <title>Re: Bootloader and FreeRTOS hardfault</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Bootloader-and-FreeRTOS-hardfault/m-p/539540#M11887</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by chrta on Sat Jun 06 01:34:27 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: ArnaudE&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;...&lt;BR /&gt;Although i used a general function to disable interrupt, the Ethernet one was still enable (may some specific interrupt are disable and not all).&lt;BR /&gt;...&lt;BR /&gt;&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;SPAN&gt;Have you set the interrupt priority for ethernet correctly? See &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.freertos.org%2FFAQHelp.html" rel="nofollow" target="_blank"&gt;http://www.freertos.org/FAQHelp.html&lt;/A&gt;&lt;SPAN&gt; and &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.freertos.org%2FRTOS-Cortex-M3-M4.html" rel="nofollow" target="_blank"&gt;http://www.freertos.org/RTOS-Cortex-M3-M4.html&lt;/A&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:24:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Bootloader-and-FreeRTOS-hardfault/m-p/539540#M11887</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:24:17Z</dc:date>
    </item>
  </channel>
</rss>

